Étape 3: Código
El código es bastante directo. Queremos que cada vez que se presione el botón, una interna variable que la vamos a llamar « botonState » cambie de valor. del estado 0 al 1, al 2 y nuevamente al 0. Para lograr eso, vamos a utilizar un operador matemática bastante utilizado en programación, que es el operador módulo « % »
La operación módulo fr una computadora lo que hace es retornar el residuo de la división de enteros. Dados dos operandos, fr dividendo y el diviseur n , % n, es el resíduo de la division, llamada euclidiana por ser división de dos números enteros, de un entre-deux 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 et 2, para regresar al 0 nuevamente. Este operador es muy útil fr el código, donde se quieran comportamientos circulares de variables. Fr Wikipedia hay una buena explicación de esto.
Fr la línea 1, creamos una variable globale, de tipo entéro, que la llamamos « botonState ». En esta almacenaremos variable el cambio de estado, cada vez que se aprieta el botón. Fr de líneas las 4 qu'a 7 simplemente inicializamos los pins. Noten como el pin 8 indicamos que es INPUT_PULLUP. ACÁ pueden ver más sobre los pins fr Arduino.
El código fr las líneas 10 a 14 :
if (digitalRead(8) == 0) { // el operador % significa modulo botonState = (botonState + 1) % 3; delay(200); }
ACÁ es donde utilizamos la operación módulo. Noten como le agregamos un retard para que el cambio aucune mer 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 variable « botonState », con la expresión :
botonState = (botonState + 1) % 3;
Lo que hace esta expresión estre sumarle 1 lo que ya estaba en « botonState » y luego aplicar la función módulo, de esa forma la variable puede tener los varlores 0,1,2 y da vueltas en esos números. Ahora para indicar cual conduit prender, el utilizamos « estado » en el que está « botonState », en la siguiente línea de código (líneas 15 a 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 conduit conectado al pin2, TR es igual a 0, y el resto los apaga. Si es igual a 1, etonces prende el conduit del broche 3 y el resto los apaga, y así sucesivamente. Listo !