Paso 5: La codificación
En la configuración del codificador debe establecer la intención de cada pin usado. El myservo tiene un método para esto mientras todos los demás puede utilizar pinMode.
El lazo es donde comienza la acción.
La variable más importante en este programa es la variable lightNum. Cada vez que repite el bucle principal, lightNum tiene un valor diferente entre -1 y 5. Esto se logra mediante la asignación += con dir. La variable dir siempre se asigna 1 o -1 para por += con lightNum el valor de la luz num es agregado a uno o restar por 1. DIR es 1 mientras que la ascendente y -1 durante el descenso. El valor de dir se asigna cerca del final del código donde comprueba, en dos si declaraciones, si lightNum es lo 's max o min (y necesita ser dado vuelta alrededor)
Para determinar cómo la lightNum afecta a los LEDs que escribí un sencillo sistema de if declaraciones. Si lightNum es > = el LED entonces se ilumina (por digitalWrite() llamada. Probablemente podría has utilizado una instrucción switch, pero decidí que dejaría reaprender para otro día.
Determinar la entrada del usuario era algo complicado, pero interesante para mí. La codificación tiene en cuenta la posibilidad de que un jugador sólo podría sostener el botón de abajo para win(cheaters). Subsanar una variable llamada "lastLoop" de codificación que garantiza que el botón no se celebró. Si no vez había pulsado el botón durante la última va redondo entonces "lastLoop" = bajo. Lo contrario es alta. Por lo tanto, que si lastLoop es baja y buttonState es alta, entonces esta es la importante primera vez prensa y una prensa válido para ganar. Si es válido entonces una variable «primer» se asigna alta.
Determinar si el jugador es el ganador fue hecho por un simple if instrucción. Si se trata de una prensa singular (primero == HIGH) y lightNum (en mi caso lightNum == 5) entonces el sistema puede empezar su celebración.
Empecé dando el servo un valor centrado. Será que 1500 creo para servos más. Los valores max y min, creo, pueden diferir. Sólo quería que me mueva así en la celebración del "bucle for" que tiene valores alternando entre 1300 y 1700. El servo se controla mediante la instrucción myservo.writeMicroseconds().
También se controla el lazo es una alternancia led flash (3 y 3) así como un zumbido de la alarma. Escritura a los pines digitales es fácil por solo llamada digitalWrite (el número del pin, el valor deseado del perno)
Me retrasé el bucle para hacerlo correr de manera oportuna. Para hacer el juego un poco más difícil que hice la demora sobre el valor de lightNum ganador más corto que el resto.