while y do...while

Cuando vimos el Serial Plotter, utilizamos la sentencia while.   While es una intrucción de control de flujo, concretamente un bucle, y su significado como dijimos es "mientras" y su sintaxis es

while ( condición)
{
Bloque de código a ejecutar
}

Cuando arduino se encuentra la instrucción while, evaluará la condición y si es verdadera ejecutará el código que hay dentro, cuando termine, volverá a evaluar la condición y si sigue siendo verdadera, volverá a ejecutar el código, y así repetidamente hasta que la condición deje de ser verdadera, momento en el que ignorará el código interno y continuará con el programa. Es importante que dentro de código exista una modificación de la condición para que llegado el momento, la condición deje de cumplirse, si no es así entrará en un bucle infinito, y se quedará colgado.  Si la condición resulta falsa en la primera evaluación, el código interno del while no se ejecutará nunca, ya que se lo saltará.

A veces resulta más natural, evaluar la condición que controla las repeticiones del bucle, al final, en lugar de hacerlo al principio.  Para esto se tiene do...while, que se puede traducir como "hazlo y luego mientras se cumpla la condición repite..." su sintaxis es la siguiente

do
{
bloque de código a ejecutar
} while (condición);

Fijáte que después de la condición, se pone punto y coma, porque no va ninguna llave de bloque de código.  La diferencia principal entre while y do...while, es que en el while, el código interno puede que no se ejecute nunca, mientras que en el do...while, el código interno se ejecuta al menos una vez, ya que primero hay que ejecutar el código y luego comprobar la condición, que por supuesto tiene que ser verdadera para que se produzca la repetición.

Aquí vemos un código ejemplo usando ambas estructuras

Hemos declarado cuatro variables, 3 pines de arduino y la variable a.

En void setup() hemos establecido los tres pines de arduino como salidas, a las que le hemos conectado 3 Leds verde, blanco y rojo.

En el void loop() tenemos un while cuya condición es que a sea mayor que cero y menor que diez, eso cuando empiece arduino no se va cumplir porque  a se inicializa con 20, así que saltará a la segunda instrucción,  que es un if, cuya condición es que a es igual a cero, y como eso tampoco ocurre, se la salta y llega a do...while, así que lo primero que hace arduino es encender el LEDVERDE, después del delay apaga el LEDVERDE y  decrementa en una unidad el valor de la variable a, luego al final evalúa la condición y como es verdadera, repetirá encendiendo y apagando el LEDVERDE y decrementando a la variable a, hasta que la variable a no es mayor que 9, así que se acaba y comienza el loop de nuevo, pero esta vez si se cumple la condición y se empiezan a apagar y encender el LEDROJO y a decrementar a la variable a, y se repetirá hasta que a sea menor que 1, en tal caso sale del bucle while y ejecuta el if, como esta vez la condición del if es verdadera porque es igual a cero, se enciende el LEDBLANCO dos segundo se apaga y reinica la variable a en 20 y todo vuelve a empezar. 

Aquí hemos podido ver como el while se lo salta por no cumplir la condición, se salta al if y empieza por el do, que ese no se lo puede saltar sino que lo ejecuta al menos un vez, y luego decrementa el valor de la variable y evalúa finalmente la condición. 

Este circuito simula un indicador de nivel de líquido,que parpadea en verde cuando tiene suficiente, luego en rojo cuando entra en la reserva y finalmente en blanco cuando está vacío. La variable a simula las lecturas del sensor del combustible.