Stap 3: Código
El código es bastante directo. Queremos que cada vez que se presione el botón, una variabele interna que la vamos een llamar "botonState" wisselmakelaar de valor. del estado 0 al 1, al 2 y nuevamente al 0. Para lograr eso, vamos een utilizar un operador matemática bastante utilizado nl-programación, que es el operador module '%'
La operación module nl una computadora lo que hace es retornar el residuo de la división de enteros. Dados dos operandos nl dividendo een y el deler n, een % n, es el resíduo de la division, abstract euclidiana por ser división de dos números enteros, de een entre n. ASí por ejemplo 0% 3 = 0, y 1% 3 = 1, 2 %3 = 2, 3 %3 = 0, 4 %3 = 1, y así sucesivamente, vean como el resultado va circulando entre 0,1 y 2, para regresar al 0 nuevamente. Este operador es muy bueno nl el código, donde se vredig comportamientos circulares de variabelen. Engelse Wikipedia hay una buena explicación de esto.
Nl la línea 1, creamos una variabele global, de tipo entero, que la llamamos "botonState". Nl esta variabele almacenaremos el cambio de estado, cada vez que se aprieta el botón. Nl las líneas de 4 die een 7 simplemente inicializamos los pines. Noten como el pin 8 indicamos que es INPUT_PULLUP. Whinose pueden ver más sobre los dennen nl Arduino.
El código nl las líneas 10 a 14:
if (digitalRead(8) == 0) { // el operador % significa modulo botonState = (botonState + 1) % 3; delay(200); }
Whinose es donde utilizamos la operación module. Noten como le agregamos un vertraging para que el cambio geen zee tan rápido. Primero leemos si el botón está presionado, es decir cuando la lectura del pin es igual a 0. Si es así, entonces actualizamos el estado de la variabele "botonState", con la expresión:
botonState = (botonState + 1) % 3;
Lo que hace esta expresión es sumarle 1 al lo que ya estaba nl "botonState" y luego aplicar la función module, de esa forma la variabele puede tener los varlores 0,1,2 y da vueltas nl esos números. Ahora para indicar cual leidde prender, utilizamos el "estado" nl el que está "botonState", nl la siguiente línea de código (líneas 15 per 31):
switch (botonState) { case 0: digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW); break; case 1: digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW); break; case 2: digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH); break; }
Como ven, si "botonState" es igual a 1, entonces prende el leidde conectado al pin2, si es igual a 0, y el resto los apaga. Si es igual a 1, etonces prende el leidde del pin 3 y el resto los apaga, y así sucesivamente. Listo!