Hola he encontrado la solución buscando en el foro, no se si sera la misma pero por lo menos lo he resuelto y un poco lo he modificado como yo quería.
Explico un poco lo que estoy intentando es para quitar los mandos de la luces de mi coche ya que cuestan una fortuna y colocarlo por botones, he modificado lo de encender todo, por un simple motivo, si enciendo posición enciende pero al apagar apaga cruce si esta esta encendida, y si enciendo cruce esta me enciende posición si me he despistado, es decir simula el mando del coche.
Tengo varias preguntas que he intentado resolver pero no lo consigo:
1 no se como hacer que los intermitentes me parpadeen en intervalos de 400/450 mili, he intentado delay me da error de compilacion, he visto por google Blink WithOut Delay pero no se como como agregarlo a esta galeria sin que me de error.
2 en una entrada que destine para los cuatro intermitentes tampoco se como declararla.
Gracias de antemano.
#include <Bounce2.h>
// Variables estáticas
const byte pinBoton1 = 2; // Declaramos la variable pin del Botón cruce
const byte pinBoton2 = 3; // Declaramos la variable pin del Botón posicion
const byte pinBoton3 = 4; // Declaramos la variable pin del Botón larga
const byte pinBoton4 = 5; // Declaramos la variable pin del Botón intermitente derecho
const byte pinBoton5 = 6; // Declaramos la variable pin del Botón intermitente izquierdo
const byte pinBoton6 = 7; // Declaramos la variable pin del Botón limpiaparabrisas
const byte pinBoton7 = 8; // Declaramos la variable pin del Botón Ventiladores
const byte pinBoton8 = 9; // Declaramos la variable pin del Botón paro limpiaparabrisas
const byte pinBoton9 = 10; // Declaramos la variable pin del Botón 4 intermitentes
const byte srele1 = 22; // Declaramos la variable pin para relé cruce
const byte srele2 = 24; // Declaramos la variable pin para relé posicion
const byte srele3 = 26; // Declaramos la variable pin para relé larga
const byte srele4 = 28; // Declaramos la variable pin para relé intermitente derecho
const byte srele5 = 30; // Declaramos la variable pin para relé intermitente izquierdo
const byte srele6 = 32; // Declaramos la variable pin para relé limpaparabrisas
const byte srele7 = 34; // Declaramos la variable pin para relé ventiladores
Bounce debouncer1 = Bounce();
Bounce debouncer2 = Bounce();
Bounce debouncer3 = Bounce();
Bounce debouncer4 = Bounce();
Bounce debouncer5 = Bounce();
Bounce debouncer6 = Bounce();
Bounce debouncer7 = Bounce();
Bounce debouncer8 = Bounce();
Bounce debouncer9 = Bounce();
// Variables dinámicas
bool statusBtn1 = false, statusBtn2 = false, statusBtn3 = false, statusBtn4 = false,
statusBtn5 = false, statusBtn6 = false, statusBtn7 = false, statusBtn8 = false,
statusBtn9 = false;
bool posicruceActivados = false;
int contador = 0;
void setup() {
// Inicializa el pin del LED como salida:
pinMode(srele1, OUTPUT);
pinMode(srele2, OUTPUT);
pinMode(srele3, OUTPUT);
pinMode(srele4, OUTPUT);
pinMode(srele5, OUTPUT);
pinMode(srele6, OUTPUT);
pinMode(srele7, OUTPUT);
// Inicializa el pin del botón como entrada:
pinMode(pinBoton1, INPUT_PULLUP);
pinMode(pinBoton2, INPUT_PULLUP);
pinMode(pinBoton3, INPUT_PULLUP);
pinMode(pinBoton4, INPUT_PULLUP);
pinMode(pinBoton5, INPUT_PULLUP);
pinMode(pinBoton6, INPUT_PULLUP);
pinMode(pinBoton7, INPUT_PULLUP);
pinMode(pinBoton8, INPUT_PULLUP);
pinMode(pinBoton9, INPUT_PULLUP);
digitalWrite( pinBoton1 ,HIGH); // activar PULL UP interno
digitalWrite( pinBoton2 ,HIGH); // activar PULL UP interno
digitalWrite( pinBoton3 ,HIGH); // activar PULL UP interno
digitalWrite( pinBoton4 ,HIGH); // activar PULL UP interno
digitalWrite( pinBoton5 ,HIGH); // activar PULL UP interno
digitalWrite( pinBoton6 ,HIGH); // activar PULL UP interno
digitalWrite( pinBoton7 ,HIGH); // activar PULL UP interno
digitalWrite( pinBoton8 ,HIGH); // activar PULL UP interno
digitalWrite( pinBoton9 ,HIGH); // activar PULL UP interno
Serial.begin(9600);
// After setting up the button, setup the Bounce instance :
debouncer1.attach(pinBoton1);
debouncer1.interval(20); // interval in ms
debouncer2.attach(pinBoton2);
debouncer2.interval(20); // interval in ms
debouncer3.attach(pinBoton3);
debouncer3.interval(20); // interval in ms
debouncer4.attach(pinBoton4);
debouncer4.interval(20); // interval in ms
debouncer5.attach(pinBoton5);
debouncer5.interval(20); // interval in ms
debouncer6.attach(pinBoton6);
debouncer6.interval(20); // interval in ms
debouncer7.attach(pinBoton7);
debouncer7.interval(20); // interval in ms
debouncer8.attach(pinBoton8);
debouncer8.interval(20); // interval in ms
debouncer9.attach(pinBoton9);
debouncer9.interval(20); // interval in ms
}
void loop(){
// Update the Bounce instance :
debouncer1.update();
// Chequea si el botón está pulsado:
if (debouncer1.fell()) {
statusBtn1 = !statusBtn1;
Serial.print("Status Btn1:");
Serial.print(statusBtn1);
Serial.print("cuenta:");
Serial.println(contador++);
posicruceActivados = true;
}
if (statusBtn1 && posicruceActivados) {
digitalWrite(srele1, HIGH);
digitalWrite(srele2, HIGH);
Serial.println("Todos activados");
posicruceActivados = false;
}
if (!statusBtn1 && posicruceActivados) {
digitalWrite(srele1, LOW);
Serial.println("Todos desactivados");
posicruceActivados = false;
}
// Update the Bounce instance :
debouncer2.update();
// Chequea si el botón está pulsado:
if (debouncer2.fell()) {
statusBtn2 = !statusBtn2;
Serial.print("Status Btn2:");
Serial.print(statusBtn2);
Serial.print("cuenta:");
Serial.println(contador++);
posicruceActivados = true;
}
if (statusBtn2 && posicruceActivados) {
digitalWrite(srele2, HIGH);
Serial.println("Todos activados");
posicruceActivados = false;
}
if (!statusBtn2 && posicruceActivados) {
digitalWrite(srele1, LOW);
digitalWrite(srele2, LOW);
Serial.println("Todos desactivados");
posicruceActivados = false;
}
debouncer3.update();
// Chequea si el botón está pulsado:
if (debouncer3.fell()) {
statusBtn3 = !statusBtn3;
Serial.print("Status Btn3:");
Serial.println(statusBtn3);
if (statusBtn3)
digitalWrite(srele3, HIGH);
else
digitalWrite(srele3, LOW);
}
debouncer4.update();
// Chequea si el botón está pulsado:
if (debouncer4.fell()) {
statusBtn4 = !statusBtn4;
Serial.print("Status Btn4:");
Serial.println(statusBtn4);
if (statusBtn4)
digitalWrite(srele4, HIGH);
else
digitalWrite(srele4, LOW);
}
debouncer5.update();
// Chequea si el botón está pulsado:
if (debouncer5.fell()) {
statusBtn5 = !statusBtn5;
Serial.print("Status Btn5:");
Serial.println(statusBtn5);
if (statusBtn5)
digitalWrite(srele5, HIGH);
else
digitalWrite(srele5, LOW);
}
debouncer6.update();
// Chequea si el botón está pulsado:
if (debouncer6.fell()) {
statusBtn6 = !statusBtn6;
Serial.print("Status Btn6:");
Serial.println(statusBtn6);
if (statusBtn6)
digitalWrite(srele6, HIGH);
else
digitalWrite(srele6, LOW);
}
debouncer7.update();
// Chequea si el botón está pulsado:
if (debouncer7.fell()) {
statusBtn7 = !statusBtn7;
Serial.print("Status Btn7:");
Serial.println(statusBtn7);
if (statusBtn7)
digitalWrite(srele7, HIGH);
else
digitalWrite(srele7, LOW);
}
}