//***PROYECTO DINO***
// varibles para secuecia de obstaculos
int leds;
int estado_leds;
int posicion=2;
unsigned long tiempo_actual;
unsigned long tiempo_anterior_poten;
unsigned long tiempo_base;//para la velocidad del potenciométro
// variables para pulsador
int estado_pulsador; // 0=suelto; 1=pulsado
int lectura_pulsador;
unsigned long tiempo_anterior_pulsador;
//tiempo de reset
unsigned long tiempodereset;
// variables de dino
int estado_dino; // 1=sin saltas; 0;salta
void setup() {
// put your setup code here, to run once:
Serial.println("Hello, ESP32!");
//defino pin para los led obstaculos
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
//defino pin para dino
pinMode(10,OUTPUT);
pinMode(12, INPUT);
//variable poten
pinMode(A0, INPUT);
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
tiempo_base = map (analogRead(A0), 0, 1023, 100, 5000);
tiempo_actual = millis();
if( (tiempo_actual - tiempo_anterior_poten)>= tiempo_base) {
tiempo_anterior_poten = tiempo_actual;
if (estado_leds==0) { //inicio la secuencia de parpadeo
digitalWrite(posicion,1); //enciendo led1
estado_leds=1;
} else {
digitalWrite(posicion,0);
estado_leds=0;
posicion++; //aumento la posición
if (posicion>7){ //si yo pongo posicion =7 no se enciende el led porque no le doy tiempo para encenderse
posicion=8;
if( estado_dino==1 ){// si llego a la posicion 8 y el dino esta prendido debo encender todos los leds y dejar de contar
digitalWrite(2,1);
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,1);
digitalWrite(12,1);//TODOS LOS LEDS Y DINO ENCENDIDOS
if ((tiempo_actual - tiempodereset)>=2000){
if(estado_pulsador==1){ //si tengo todos los led encendidos y presiono pulsador por un tiempo det inicio la secuenci
digitalWrite(2,0);
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,0);
posicion=0;
tiempodereset=tiempo_actual;
}
}
}else{
posicion=0;
}
} }
}
// ver estado del pulsador cd 20 miliseg para hacer una funcion no bloqueante
if((tiempo_actual - tiempo_anterior_pulsador) >= 5){
tiempo_anterior_pulsador=tiempo_actual;
estado_pulsador=digitalRead(12);
if (estado_pulsador==0){
digitalWrite(10,1);// DINO encendido => no salta
estado_dino=1;//no saltaPRENDIDO
}else{ //pulsador pulsado
digitalWrite(10,0); // Dino apagado => SALTA
estado_dino=0; // led apagado
}
delay(10); // this speeds up the simulation SOLO PARA LA SIMULACION
}
}