Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal_I2C.h>
- #include <Wire.h>
- LiquidCrystal_I2C lcd(0x27, 16, 2);
- // pines de lectura de botones
- int pinBoton1 = A0;
- int pinBoton2 = A1;
- int pinBoton3 = A2;
- int pinBoton4 = A3;
- // pines de leds
- int pinLed1 = 2;
- int pinLed2 = 3;
- int pinLed3 = 4;
- int pinLed4 = 5;
- // pines de los sonidos
- int sonido1 = 13;
- int sonido2 = 11;
- // array para memoria de leds
- int array[50];
- int arrayLeds[50];
- //variable de la dificulatad;
- int espera = 250;
- // Variable de play y pause;
- int play = 0;
- // variable para cantidad aciertos;
- int acierto = 0;
- // Variable para saber que boton se presiono;
- int botonPresionado = 1;
- int nuevoLed;
- // Delay para el parpadeo de los leds
- int waitLed = 50;
- // Variable para la busqueda del juego
- int ledPresionados = -1;
- // funcion de llenado del array
- void llenarArray() {
- int ultimoNumero = 0;
- // randomSeed(analogRead(A0) + analogRead(A1) + analogRead(A2) + analogRead(A3) + analogRead(A4) + analogRead(A5));
- unsigned long seed = micros();
- randomSeed(seed);
- for (int i = 0; i < 50; i++) {
- int numero = random(1, 5);
- while (numero == ultimoNumero) {
- numero = random(1, 5);
- }
- array[i] = numero;
- ultimoNumero = numero;
- }
- }
- void mostrarMensajeInicio() {
- // mostrar mensaje de inicio
- lcd.setCursor(0, 0);
- lcd.print("Boton 1-2: PLAY");
- lcd.setCursor(0, 1);
- if (espera == 250) {
- lcd.print("Dificultad: 1");
- } else if (espera == 120) {
- lcd.print("Dificultad: 2");
- } else if (espera == 80) {
- lcd.print("Dificultad: 3");
- }else if (espera == 60) {
- lcd.print("Dificultad: 4");
- }else if (espera == 35) {
- lcd.print("Dificultad: 5");
- }
- }
- void encederLedInicio() {
- digitalWrite(pinLed1, 1);
- digitalWrite(pinLed2, 1);
- digitalWrite(pinLed3, 1);
- digitalWrite(pinLed4, 1);
- }
- void apagarLedInicio() {
- digitalWrite(pinLed1, 0);
- digitalWrite(pinLed2, 0);
- digitalWrite(pinLed3, 0);
- digitalWrite(pinLed4, 0);
- }
- void mensajeRegresivo() {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Comenzando...");
- int i;
- for (i = 5; i > 0; i--) {
- lcd.setCursor(0, 1);
- lcd.print(" ---- " + String(i) + " ----");
- if (i == 1) {
- digitalWrite(sonido1, 1);
- delay(1000);
- digitalWrite(sonido1, 0);
- lcd.clear();
- } else {
- digitalWrite(sonido1, 1);
- delay(50);
- digitalWrite(sonido1, 0);
- delay(50);
- }
- encederLedInicio();
- delay(1000);
- apagarLedInicio();
- }
- }
- int notaDo = 620;
- int notaRe = 640;
- int notaMi = 660;
- int notaFa = 680;
- int cuarto = 1000 / 4;
- double pausa = 1.30;
- void inicio() {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("ACIERTO: " + String(acierto) + " ");
- int i;
- for (i = 0; i <= acierto; i++) {
- if (array[i] == 1) {
- digitalWrite(pinLed1, 1);
- tone(sonido2, notaDo, cuarto);
- //delay(pausa * cuarto);
- delay(espera);
- digitalWrite(pinLed1, 0);
- delay(espera);
- analogWrite(sonido2, 0);
- } else if (array[i] == 2) {
- digitalWrite(pinLed2, 1);
- tone(sonido2, notaRe, cuarto);
- //delay(pausa * cuarto);
- delay(espera);
- digitalWrite(pinLed2, 0);
- delay(espera);
- analogWrite(sonido2, 0);
- } else if (array[i] == 3) {
- digitalWrite(pinLed3, 1);
- tone(sonido2, notaMi, cuarto);
- //delay(pausa * cuarto);
- delay(espera);
- digitalWrite(pinLed3, 0);
- delay(espera);
- analogWrite(sonido2, 0);
- } else if (array[i] == 4) {
- digitalWrite(pinLed4, 1);
- tone(sonido2, notaFa, cuarto);
- //delay(pausa * cuarto);
- delay(espera);
- digitalWrite(pinLed4, 0);
- delay(espera);
- analogWrite(sonido2, 0);
- }
- }
- }
- bool juego(int maximoBuscado) {
- int i;
- for (i = 0; i <= maximoBuscado; i++) {
- if (array[i] == arrayLeds[i]) {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("ACIERTO: " + String(i + 1) + " ");
- if (i == acierto) {
- acierto++;
- ledPresionados++;
- delay(400);
- return true;
- }
- } else {
- digitalWrite(sonido1, 1);
- delay(1000);
- digitalWrite(sonido1, 0);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("PERDISTE ");
- lcd.setCursor(0, 1);
- lcd.print("PUNTAJE: " + String(acierto) + " :)");
- llenarArray();
- delay(2000);
- play = 0;
- acierto = 0;
- lcd.clear();
- mostrarMensajeInicio();
- return false;
- }
- }
- }
- void setup() {
- // inicio de botones
- pinMode(pinBoton1, INPUT);
- pinMode(pinBoton2, INPUT);
- pinMode(pinBoton3, INPUT);
- pinMode(pinBoton4, INPUT);
- // inicio de leds
- pinMode(pinLed1, OUTPUT);
- pinMode(pinLed2, OUTPUT);
- pinMode(pinLed3, OUTPUT);
- pinMode(pinLed4, OUTPUT);
- // inicio de sonidos
- pinMode(sonido1, OUTPUT);
- pinMode(sonido2, OUTPUT);
- Serial.begin(9600);
- lcd.init();
- lcd.backlight();
- // Mensaje de inicio
- mostrarMensajeInicio();
- }
- void loop() {
- if (digitalRead(pinBoton1) == 0 && digitalRead(pinBoton2) == 0) {
- mensajeRegresivo();
- play = 1;
- } else {
- mostrarMensajeInicio();
- }
- if (digitalRead(pinBoton3) == 0 && digitalRead(pinBoton4) == 0) {
- if (espera == 250) {
- espera = 120;
- } else if (espera == 120) {
- espera = 80;
- } else if (espera == 80) {
- espera = 60;
- }else if (espera == 60) {
- espera = 35;
- }else if (espera == 35) {
- espera = 250;
- }
- }
- delay(100);
- if (play == 1) {
- llenarArray();
- while (play == 1) {
- inicio();
- ledPresionados = -1;
- while (ledPresionados != acierto) {
- if (digitalRead(pinBoton1) == 0) {
- digitalWrite(pinLed1, 1);
- tone(sonido2, notaDo, cuarto);
- delay(waitLed);
- digitalWrite(pinLed1, 0);
- delay(waitLed);
- ledPresionados++;
- arrayLeds[ledPresionados] = 1;
- if(juego(ledPresionados) == false){break;}
- } else if (digitalRead(pinBoton2) == 0) {
- digitalWrite(pinLed2, 1);
- tone(sonido2, notaRe, cuarto);
- delay(waitLed);
- digitalWrite(pinLed2, 0);
- delay(waitLed);
- ledPresionados++;
- arrayLeds[ledPresionados] = 2;
- if(juego(ledPresionados) == false){break;}
- } else if (digitalRead(pinBoton3) == 0) {
- digitalWrite(pinLed3, 1);
- tone(sonido2, notaMi, cuarto);
- delay(waitLed);
- digitalWrite(pinLed3, 0);
- delay(waitLed);
- ledPresionados++;
- arrayLeds[ledPresionados] = 3;
- if(juego(ledPresionados) == false){break;}
- } else if (digitalRead(pinBoton4) == 0) {
- digitalWrite(pinLed4, 1);
- tone(sonido2, notaFa, cuarto);
- delay(waitLed);
- digitalWrite(pinLed4, 0);
- delay(waitLed);
- ledPresionados++;
- arrayLeds[ledPresionados] = 4;
- if(juego(ledPresionados) == false){break;}
- }
- delay(100);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment