Paso 7: La codificación para arriba - configuración y lazo
PIN. que tenemos el servo conectado. Nosotros también comenzará con el servo en 0 grados.
void setup() {}
pinMode (button1, entrada);
pinMode (button2, entrada);
pinMode (button3, entrada);
pinMode (button4, entrada);
pinMode (button5, entrada);
pinMode (rojo, salida);
pinMode (verde, salida);
LCD.Begin(16,2);
lcd.setCursor(0,0);
LCD.Print (": Introduzca Código:");
Serial.Begin(9600); / / Para depuración. Ver visualmente el pulsar un botón.
myservo.Attach(9);
myservo.Write(0);
}
Empezar por leer el estado de los pines.
void loop() {}
estado1 = digitalRead(button1);
state2 = digitalRead(button2);
state3 = digitalRead(button3);
state4 = digitalRead(button4);
state5 = digitalRead(button5);
Si el estado del botón no es igual a su anterior estado (1 = alto, 0 = bajo), que básicamente
¿los medios, fue sólo presionado o liberado? Si el estado del botón es alta (1)
aumentamos la cuenta de ese botón.
Si (estado1! = prev1) {}
Delay(10);
Si (estado1 == HIGH) {}
count1 ++;
}
/ / Nota de la delay(10). Esto es importante. Facilita un debounce. Los botones tienen un intert
bounciness. Usted no puede sentir, pero cuando usted presiona un botón, a veces hace
Póngase en contacto con más de una vez, y el Arduino verá como prensas múltiples. El retraso
se detiene el programa durante 10 milisegundos, lo que permite el botón de "resolver" y luego
se reanuda. 10 milisegundos deben ser lo suficientemente largos, pero ya ajuste si es necesario.
Else {}
}
Lo hacemos para cada botón.
Si (state2! = prev2) {}
Delay(10);
Si (state2 == HIGH) {}
count2 ++;
}
Else {}
}
Si (state3! = prev3) {}
Delay(10);
Si (state3 == HIGH) {}
count3 ++;
}
Else {}
}
Si (state4! = prev4) {}
Delay(10);
Si (state4 == HIGH) {}
count4 ++;
}
Else {}
}
Si (state5! = prev5) {}
Delay(10);
Si (state5 == HIGH) {}
count5 ++;
}
Else {}
}
Esto le ayudará a realizar un seguimiento de qué tipo de acciones van con
los botones. Cuando se pulsa el botón, no coincide con su estado
es el estado anterior, lo que indica un cambio. Aquí establecemos la anterior
Estado a la situación actual, para que el momento que presione o
liberación, el Arduino lo sabe y actúa en consecuencia.
prev1 = estado1;
prev2 = state2;
prev3 = state3;
prev4 = state4;
prev5 = state5;
Luego nos cuenta hasta cómo muchas veces cada botón se presionó.
totalCount = count1 count2 count3 + count4 + count5;
/ / Este es donde escribe un asterisco ("*") a la pantalla cada vez que se presiona un botón.
para (filas = 0; filas < totalcount; filas + 1) {}
lcd.setCursor(rows,1);
LCD.Print("*");
filas ++;
}
"filas" es donde el cursor es (de izquierda a derecha) en la pantalla LCD.
Cada vez que se pulsa un botón, aumentamos "filas" por uno, y
establecer como la posición del cursor. Hacemos esto hasta cierto punto (5)
porque eso es cuántos dígitos están en nuestra combinación.
/ / Ahora, si nuestro totalcount alcanza 5, vamos a empezar viendo cómo muchas veces
cada botón se presionó. Si coincide con lo que nuestro combo predeterminado...
Si (totalcount == 5) {}
Si (count1 == 2 & & count2 == 0 & & count3 == 1 & & count4 == 2 & & count5 == 0) {}
LCD.Clear();
LCD.Print ("código aceptado"); / / Código aceptado!
myservo.Write(90); / / se mueve el servo a 90 grados, como si abrir una puerta.
digitalWrite (verde, alto); / / verde equivale a bueno, así el verde LED está en
Asegúrese de que el piloto rojo que permanece apagado si no el derecho del código la primera vez
digitalWrite (rojo, baja);
count1 = 0; / / Reset todos los conunters 0, comenzando el proceso otra vez.
count2 = 0;
count3 = 0;
count4 = 0;
count5 = 0;
totalCount = 0;
Delay(10000);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print (": Introduzca Código:"); Y estamos en el principio.
myservo.Write(0);
digitalWrite (verde, baja);
}
else if (count1! = 2 & & count2! = 0 & & count3! = 1 & & count4! = 2 & & count5! = 0 & & totalcount == 5) {}
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("código rechazados"); / / Este y la parte de abajo donde si la cuenta de cada botón de
digitalWrite (rojo, alto); / / no es igual a la cuenta predeterminada, o si es mayor que la cantidad de
digitalWrite (verde, baja); //and el número de Prensas total es igual a 5 (lo que indica que un 5 dígitos
count1 = 0; / / combinación entró pero está mal) y luego el código es rechazado. Rechazado!
count2 = 0;
count3 = 0;
count4 = 0;
count5 = 0;
totalCount = 0;
Delay(5000);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print (": Introduzca Código:");
digitalWrite (rojo, baja);
}
else if (count1 > 2 & & count2 > 0 & & count3 > 1 & & count4 > 2 & & count5 > 0 || totalcount == 5) {}
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("código rechazados");
digitalWrite (rojo, alto);
digitalWrite (verde, baja);
count1 = 0;
count2 = 0;
count3 = 0;
count4 = 0;
count5 = 0;
totalCount = 0;
Delay(5000);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print (": Introduzca Código:");
digitalWrite (rojo, baja);
}
}
}