Paso 3: Paso 3: el código
PIN conectado a 12(ST_CP) de 74HC595 Shift Register
int latchPin = 8; clockPin conectado a 11(SH_CP) el 74HC595 Shift Register int clockPin = 12; PIN conectado a DS de 74HC595 Shift Register int dataPin = 11;
Variable si el juego es sobre gameover boolean = false;
Matriz para shiftregister int ledarray [8] = {1,2,4,8,16,32,64,128}; Variable de nivel actual nivel int = 4; Matriz de reservados de los LEDs correctos en cada nivel int randarray1 [8]; Número de LEDs disponible int min = 0; int max = 4; Variable para el cual uno de los botones presiona int buttpr; Variable para todos LED pines int buttonpins [8] = {2,3,4,5,6,7, A0, A1};
void setup() {/ / Ställ en pinnarna hasta cambio registret pinMode (latchPin, salida); pinMode (clockPin, salida); pinMode (dataPin, salida);
Configurar todos los LEDs en modo subida para (int buttpin = 0; buttpin < 8; buttpin ++) {pinMode (buttonpins [buttpin], INPUT_PULLUP);} / / Arduino listo para seriell comunicación Serial.begin(9600); }
void loop() {/ / elevar el nivel de juego si (nivel < 8) {nivel ++;} / do el nivel como no hay if(!gameover) Gameover {/ / generar combinación de LED nuevo para el nivel de (int i = 0; i < nivel; i ++) {randarray1[i]=random(max);} / / Loop para encender todos los LEDs en el nivel actual de (int numberToDisplay = 0; numberToDisplay < nivel; numberToDisplay ++) {Serial.println(ledarray[randarray1[numberToDisplay]]); / / cortó la energía a la readingPin de shiftregister antes de que elegimos nuevo pin digitalWrite (latchPin BAJA); Marca siguiente LED con el shiftOut shiftregister (dataPin, clockPin, MSBFIRST, ledarray[randarray1[numberToDisplay]]); La luz LED marcada en medio de un segundo digitalWrite (latchPin, HIGH); Delay(500); Matar a la luz otra vez digitalWrite (latchPin, bajo); Marca la primera shiftOut LED (dataPin, clockPin, MSBFIRST, 0); Encienda el primer LED digitalWrite (latchPin, HIGH); PAUS un segundo antes de próxima delay(1000) de LED; }
Bucle para leer buttonpressed de (int lednr = 0; lednr < nivel; lednr ++) {/ / escribir a cual es el siguiente LED Serial.print("Next led:") correcto; Serial.println(lednr); Espere un segundo antes de delay(1000) Lea siguiente; Leer los botones hasta que se pulse uno hacen {buttpr=whichbuttonpressed();} while(buttpr==9); Escribir la corriente presionar botón y cual botón es que corregir Serial.print(buttpr); Serial.println(randarray1[lednr]); Emitir un sonido para buttonpressed tone(13,660,200); Si es el botón equivocado, su if(buttpr!=randarray1[lednr]) de Gameover {gameover = true; / / Gameover jugar sonido tone(13,440,1000); Serial.println("GameOver"); Cancelar el bucle para la lectura de botones se rompe; }} Serial.println ("nivel terminado"); } }
int whichbuttonpressed() {/ / repetir sobre todos los botones y leer para (int buttpin = 0; buttpin < 8; buttpin ++) {/ / si se pulsa el botón, devuelve el valor de la tecla si (digitalRead(buttonpins[buttpin])==0) {return(buttpin); break;}} / / si no presiona ningún botón, retorno 9 para seguir leyendo los botones en el bucle de retorno 9;}