/* ********************************************* UNIVERSIDAD DE COSTA RICA ESCUELA DE INGENIERIA ELECTRICA PROTEA APRENDIZAJE ELECTRONICO DE LOS COLORES ********************************************* */ #include // se declaran los pines que conectan con la pantalla LiquidCrystal lcd(7, 6, 5, 4, 3, 2); ////////////////////// int pinLed= 0; int boton = 0; char* nombresRandom[] = {"Rojo ","Verde ", "Azul ", "Amarillo ","Purpura ", "Turquesa ", "Morado Oscuro", "Anaranjado ", "Rosado ", "Fucsia ", "Verde claro ", "Marron "}; int ledR; int ledV; int ledA; int posicion1; //Indica la fila de la LCD con el color correcto char* borrador[] = {" "}; //int switch1; //int switch2; int Luz; byte body[8] = { 0b00001110, 0b00001110, 0b00000100, 0b00011111, 0b00000100, 0b00001010, 0b00010001, 0b00000000, }; void setup() { /* se ejecuta una unica vez aquí declaro los pines que voy a usar*/ pinMode(12, INPUT); pinMode(10, OUTPUT); /*setup() se ejecuta una única vez*/ pinMode(9, OUTPUT); pinMode(11, OUTPUT); pinMode(8, INPUT); pinMode(13, INPUT); Serial.begin(9600); randomSeed(analogRead(A0)); lcd.begin(16, 2); // le decimos que la pantalla es 16x2 lcd.createChar (7, body); // MOVER EL CURSOR A LA SEGUNDA LINEA lcd.setCursor(15, 1); // si no coloco esta instrucción el body sale al lado de las letras lcd.write((byte)7); } void loop() {/* se ejecuta una y otra vez*/ boton = digitalRead(12);//lo que lea del pin 10 if(boton == HIGH){ pinLed = random(0,11); //pines randomSeed(analogRead(A1)); if(pinLed ==0){//rojo ledR = 255; ledA = 0; ledV = 0; colores(nombresRandom, 11, ledR, ledV, ledA,0); } if(pinLed == 1){ //verde ledR = 0; ledA = 0; ledV = 255; colores(nombresRandom, 11, ledR, ledV, ledA,1); } if(pinLed == 2){ //azul ledR = 0; ledA = 255; ledV = 0; colores(nombresRandom, 11, ledR, ledV, ledA,2); } if(pinLed== 3){//amarillo ledR = 255; ledA = 0; ledV = 255; colores(nombresRandom, 11, ledR, ledV, ledA,3); } if(pinLed== 4){//purpura ledR = 255; ledA = 255; ledV = 0; colores(nombresRandom, 11, ledR, ledV, ledA,4); } if(pinLed== 5){//turquesa ledR = 0; ledA = 255; ledV = 255; colores(nombresRandom, 11, ledR, ledV, ledA,5); } if(pinLed== 6){ //morado oscuro ledR = 155; ledA = 255; ledV = 1; colores(nombresRandom, 11, ledR, ledV, ledA,6); } if(pinLed== 7){ //anaranjado ledR = 243; ledA = 12; ledV = 89; colores(nombresRandom, 11, ledR, ledV, ledA,7); } if(pinLed== 8){ //rosado ledR = 255; ledA = 153; ledV = 153; colores(nombresRandom, 11, ledR, ledV, ledA,8); } if(pinLed== 9){ //fucsia ledR = 255; ledA = 140; ledV = 1; colores(nombresRandom, 11, ledR, ledV, ledA,9); } if(pinLed== 10){ //verde claro ledR = 12; ledA = 33; ledV = 108; colores(nombresRandom, 11, ledR, ledV, ledA,10); } if(pinLed== 11){ //marron ledR = 141; ledA = 6; ledV = 76; colores(nombresRandom, 11, ledR, ledV, ledA,11); } } //Que se ejecute cada vez que se apreta el botón // Se apreta el botón asociado a la palabra correcta // Presionar botón pin 8 implica palabra correcta fila 0 // Presionar botón pin 13 implica palabra correcta fila 1 if(digitalRead(8)== HIGH){ //Serial.print(78); lcd.setCursor(0,1); if (posicion1 == 0){ lcd.print("Muy bien :) "); } else{ lcd.print("Intenta de nuevo"); } } if(digitalRead(13) == HIGH){ lcd.setCursor(0,0); if (posicion1 == 1){ lcd.print("Muy bien "); } else{ lcd.print("Intenta de nuevo"); } } } //función random char colores(char* arr[], int size,int Rojo, int Verde, int Azul, int pinLed){ randomSeed(analogRead(A1)); int posicion = random (0,2); //declarar los colores analogWrite(10, Rojo); analogWrite(11, Verde); analogWrite(9, Azul); ////////////////////// if(posicion == 1){ posicion1 = 0; }else{ posicion1 = 1; } int i = random (0, size); char* mensaje2 = arr[i]; //mensaje falso char* mensaje1 = arr[pinLed]; //mensaje correcto if(mensaje2 == mensaje1){ //es para que no se repita la misma palabra if(i=!11){ mensaje2 = arr[i+1]; lcd.setCursor(0,posicion); lcd.print(mensaje2); lcd.setCursor(0,posicion1); lcd.print(mensaje1); } else{ mensaje2 = arr[i-11]; lcd.setCursor(0,posicion); lcd.print(mensaje2); lcd.setCursor(0,posicion1); lcd.print(mensaje1); } } else { lcd.setCursor(0,posicion); lcd.print(mensaje2); lcd.setCursor(0,posicion1); lcd.print(mensaje1); } }