muy buenas mi consulta es necesito hacer que un capacitor se cargue a diferentes niveles un 10% un 20% etc entonces he pensado jugar con el tiempo de carga por medio de un relay donde este se active durante x cantidad de tiempo y pasado este interrumpa la conexión y no se vuelva a activar hasta que no pulse el botón de carga muchas gracias de antemano
Adjunto codigo:
int botonState = 0;
int pinBoton = 8;
int Rele = 2;
unsigned long tiempo;
bool activoRele = false;
void setup(){
pinMode(7, INPUT_PULLUP);
pinMode(pinBoton, INPUT);
pinMode(Rele, OUTPUT);
}
void loop(){
if (digitalRead(7) == 0) {
botonState = (botonState + 1) % 4;
delay(200);
}
switch (botonState) {
case 0:
if (digitalRead(pinBoton) == HIGH){
activoRele= true;
}
else{
activoRele= false;
}
if (activoRele == true){
tiempo=millis();
digitalWrite(Rele, HIGH);
}
if (millis()-tiempo>=1000){
digitalWrite(Rele, LOW);
tiempo= 0;}
break;
case 1:
if (digitalRead(pinBoton) == HIGH){
activoRele= true;
}
else{
activoRele= false;
}
if (activoRele == true){
tiempo=millis();
digitalWrite(Rele, HIGH);
}
if (millis()-tiempo>=2000){
digitalWrite(Rele, LOW);
tiempo= 0;}
break;
case 2:
if (digitalRead(pinBoton) == HIGH){
activoRele= true;
}
else{
activoRele= false;
}
if (activoRele == true){
tiempo=millis();
digitalWrite(Rele, HIGH);
}
if (millis()-tiempo>=3000){
digitalWrite(Rele, LOW);
tiempo= 0;}
break;
case 3:
if (digitalRead(pinBoton) == HIGH){
activoRele= true;
}
else{
activoRele= false;
}
if (activoRele == true){
tiempo=millis();
digitalWrite(Rele, HIGH);
}
if (millis()-tiempo>=4000){
digitalWrite(Rele, LOW);
tiempo= 0;}
break;
}
}