Buen día.
Soy usuario nuevo en el foro, solicitando ayuda sobre un ejercicio consultado en el mismo foro sobre el coche fantástico utilizando millis() y que publico victorjam en ejercicios con millis() y botones
Actualmente estoy trabajando con un ejercicio de control de luces led para escaleras, el cual es funcional usando for() y delay(), he tratado de adaptar el código del coche fantástico pero no he dado con la solución
El programa debe encender todos los led con cierto tiempo programado, esperar un tiempo y comenzar a apagar de forma secuencial, cosa que no consigo que funcione, alguien tiene idea de como
hacerlo, todo esto con millis() ya que pienso utilizar un arduino mega para aprovechar todas sus salidas y conectarlo en dos escaleras y que puedan funcionar simultáneamente.
Espero haberme explicado correctamente y no haber violado alguna regla del foro
int ledsA;
int ledsB;
int MatrizA [] = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
int MatrizB [] = {23, 25, 27 , 29 , 31, 33, 35, 37 , 39, 41 , 43, 45, 47, 49};
//SENSORES DE PRESENCIA
int SENSOR1 = 51;
int SENSOR2 = 53;
int SENSOR4 = 54;
int SENSOR3 = 55;
//Variables de tiempo
int Tiempo1 = 1000;
int Tiempo2 = 5000;
int Tiempo3 = 500;
void setup() {
for ( ledsA = 0; ledsA < 15; ledsA++) {
pinMode (MatrizA[ledsA], OUTPUT);
digitalWrite (MatrizA[ledsA], 0);
}
for ( ledsB = 0; ledsB < 14; ledsB++) {
pinMode (MatrizB[ledsB], OUTPUT);
digitalWrite (MatrizB[ledsB], 0);
}
pinMode(SENSOR1, INPUT);
pinMode(SENSOR2, INPUT);
pinMode(SENSOR3, INPUT);
pinMode(SENSOR4, INPUT);
}
void loop () {
///////////////////////////////////////////PLANTA BAJA////////////////////////////////////
//SUBIR
if (digitalRead(SENSOR1) == HIGH) {
for ( ledsB = 0; ledsB < 14; ledsB = ledsB + 1) {
digitalWrite (MatrizB[ledsB], 1);
delay (Tiempo1);
}
delay (Tiempo2);
for ( ledsB = 13; ledsB > -1; ledsB = ledsB - 1) {
digitalWrite (MatrizB[ledsB], 0);
delay (Tiempo3);
}
}
//BAJAR
if (digitalRead(SENSOR2) == HIGH) {
for ( ledsB = 13; ledsB > -1; ledsB = ledsB - 1) {
digitalWrite (MatrizB[ledsB], 1);
delay (Tiempo1);
}
delay (Tiempo2);
for ( ledsB = 0; ledsB < 14; ledsB = ledsB + 1) {
digitalWrite (MatrizB[ledsB], 0);
delay (Tiempo3);
}
}
///////////////////////////////////////////PLANTA ALTA//////////////////////////////////////
//SUBIR
if (digitalRead(SENSOR3) == HIGH) {
for ( ledsA = 0; ledsA < 15; ledsA = ledsA + 1) {
digitalWrite (MatrizA[ledsA], 1);
delay (Tiempo1);
}
delay (Tiempo2);
for ( ledsA = 14; ledsA > -1; ledsA = ledsA - 1) {
digitalWrite (MatrizA[ledsA], 0);
delay (Tiempo3);
}
}
//BAJAR
if (digitalRead(SENSOR4) == HIGH) {
for ( ledsA = 14; ledsA > -1; ledsA = ledsA - 1) {
digitalWrite (MatrizA[ledsA], 1);
delay (Tiempo1);
}
delay (Tiempo2);
for ( ledsA = 0; ledsA < 15; ledsA = ledsA + 1) {
digitalWrite (MatrizA[ledsA], 0);
delay (Tiempo3);
}
}
}
CONTROL_LED_ESCALERA.ino (2.29 KB)