Hola a todos, tengo una situacion bastante curiosa, tengo un codigo que enciende y apaga un led simulando que es un rele, con un boton se enciende por 10s y con otro hace cambio de estado, el asunto esque cuando se ilumina para hacer cambio de estado no ilumina en su totalidad y pero si cuando se enciende por 10s, siendo la misma salida.
// Asignacion de pines
const byte led1=8;
const byte led2=9;
const byte led3=10;
const byte led4=11;
const byte led5=12;
const byte rele=7;
//Entradas
const byte P1=A0;
const byte P2=A1;
const byte P3=4;
const byte P4=A3;
const byte ST=A5;
//vandera
byte flag=0;
byte flag1=0;
byte flag2=0;
byte flag3=0;
byte flag4=0;
void setup() {
// put your setup code here, to run once:
//configurar pines como salidas
pinMode (led1,OUTPUT);
pinMode (led2,OUTPUT);
pinMode (led3,OUTPUT);
pinMode (led4,OUTPUT);
pinMode (led5,OUTPUT);
pinMode (rele,OUTPUT);
// configurar pines como entradas
pinMode (P1, INPUT);
pinMode (P2, INPUT);
pinMode (P3, INPUT);
pinMode (P4, INPUT);
pinMode (ST, INPUT);
}
void loop()
{
// EL SISTEMA DEPENDE DEL ESTADO DEL ST
// activar con un pulsador para hacer un cmabio de estado
// predeterminamos la pulsacion en el pulsador
if(digitalRead (ST)==1) {
flag= !flag;
//ELIMINAR LOS REBOTES
delay(30);
//esperar para soltar el pulsador
while (digitalRead (ST));
delay(100);
}
//algoritmmo principal
//para pulsador 1 hacer un cabio de estado
if (flag ==1){
if(digitalRead (P1)==1) {
flag1= !flag1;
//ELIMINAR LOS REBOTES
delay(30);
//esperar para soltar el pulsador
while (digitalRead (P1));
delay(100);
}
if (flag1 == 1){
digitalWrite(led1,~led1);
digitalWrite(led2,~led2);
digitalWrite(led3,~led3);
digitalWrite(led4,~led4);
digitalWrite(led5,~led5);
}if (!flag1 == 0){
digitalWrite(led1,!led1);
digitalWrite(led2,!led2);
digitalWrite(led3,!led3);
digitalWrite(led4,!led4);
digitalWrite(led5,!led5);
}
// pulsador dos es una secuencia predeterminamos la pulsacion en el pulsador
if(digitalRead (P2)==1) {
flag2= !flag2;
//ELIMINAR LOS REBOTES
delay(30);
//esperar para soltar el pulsador
while (digitalRead (P2));
delay(30);
}
//algoritmmo principal
// se hace la secuencia de menos a mayor
if(flag2==1){
for (int i=8;i<=12;i++){
digitalWrite(i,HIGH);
delay(50);
}
for (int i=12;i>=8;i--){
digitalWrite(i,LOW);
delay(50);
}
}else{
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
}
// secuencia del tercer pulsador es predener la lampara por 10 seg
//predeterminamos la pulsacion en el pulsador
if(digitalRead (P3)==1) {
flag3= !flag3;
//ELIMINAR LOS REBOTES
delay(30);
//esperar para soltar el pulsador
while (digitalRead (P3));
delay(100);
}
//algoritmmo principal
//encendemos y apagamos el rele
if (flag3 ==1){
digitalWrite(rele,HIGH);
delay(10000);
digitalWrite(rele,LOW);
flag3=0;
//algoritmo principal
// predeterminamos la pulsacion en el pulsador
}if(digitalRead (P4)==1) {
flag4= !flag4;
//ELIMINAR LOS REBOTES
delay(100);
//esperar para soltar el pulsador
while (digitalRead (P4));
delay(100);
}
//algoritmmo principal
// pulsador 4 enciende y apaga la lampara
if (flag4 ==1){
digitalWrite(rele,~digitalRead(rele));
}if(!flag4==0){
digitalWrite(rele,!digitalRead(rele));
}
}
I know that the problem is a coding problem because when I simulate I also notice the voltage decrease in the output.
Thank you
