2 de mis salidas(LEDS) no prenden del todo, las otra sí

Necesito saber porque dos de mis leds de salida no prenden del todo cuando les doy un valor HIGH, mis otros dos leds de salida si prenden correctamente, les pego mi código, ya que al ser nuevo no me deja adjuntar el código. Gracias :slight_smile:

#include <LiquidCrystal.h>
const int rs=13, en=7, d4=11, d5=10, d6=9,d7=8;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);

#define BUZZER 4 
int MotorDer= 6;
int MotorIzq = 5;
int Valvula = 2;
int Bomba = 3;
int Encendido = 1;
int Paro;

int x;
int y;
int z;

void setup() {
  lcd.clear();
  lcd.begin(16,2);
 
  pinMode(MotorDer, OUTPUT);
  pinMode(MotorIzq, OUTPUT);
  pinMode(Encendido, INPUT);

  pinMode(BUZZER, OUTPUT);
  digitalWrite(MotorDer,LOW);
  digitalWrite(MotorIzq,LOW);
  }

void loop() {
  digitalWrite(Valvula, LOW); 
  digitalWrite(MotorDer, LOW);
  digitalWrite(MotorIzq, LOW);
  x = digitalRead(Encendido);
  y = digitalRead(Paro);
  lcd.setCursor(0,0);
  lcd.print("Lavadora: Auto");
  lcd.setCursor(0,1);
  lcd.print("Presiona boton");
  delay(1000);
  
   if (x==0) {
     digitalWrite(Valvula, LOW); 
     lcd.clear();
     lcd.begin(16,2);
     lcd.setCursor(0,0);
     lcd.print("Estado: Lavado");
     lcd.setCursor(0,1);
     lcd.print("Llenando...");
     digitalWrite(Valvula, HIGH);
     delay(5000);
       digitalWrite(Valvula, LOW);
       delay(3000);
       
     lcd.clear();
     lcd.print("Estado: Lavado");
     lcd.setCursor(0,1);
     lcd.print("Lavando...");
     digitalWrite(MotorDer, HIGH);
     digitalWrite(MotorIzq, LOW);
     delay(10000);
        digitalWrite(MotorDer, LOW);
        digitalWrite(MotorIzq, LOW);
        delay(2000);
        
     lcd.clear();
     lcd.print("Estado: Lavado");
     lcd.setCursor(0,1);
     lcd.print("Vaciando...");
     digitalWrite(Bomba,HIGH);
     delay(4000);
       digitalWrite(Bomba,LOW);
       delay(1000);
       
     lcd.clear();
     lcd.print("Estado: Enjuague");
     lcd.setCursor(0,1);
     lcd.print("Llenando...");
     digitalWrite(Valvula, HIGH);
     delay(5000);
       digitalWrite(Valvula, LOW);
       delay(2000);
     
     lcd.clear();
     lcd.print("Estado: Enjuague");
     lcd.setCursor(0,1);
     lcd.print("Enjuagando...");
     digitalWrite(MotorDer, HIGH);
     digitalWrite(MotorIzq, LOW);
     delay(8000);
        digitalWrite(MotorDer, LOW);
        digitalWrite(MotorIzq, LOW);
        delay(2000);
     
     lcd.clear();
     lcd.print("Estado: Enjuague");
     lcd.setCursor(0,1);
      lcd.print("Vaciando...");
     digitalWrite(Valvula, HIGH);
     delay(5000);
       digitalWrite(Valvula, LOW);
       delay(2000);
     
     lcd.clear();
     lcd.print("Estado:Exprimido");
     lcd.setCursor(0,1);
     lcd.print("Exprimiendo...");
     digitalWrite(MotorDer, HIGH);
     digitalWrite(MotorIzq, LOW);
     delay(3000);
     digitalWrite(MotorDer, LOW);
     digitalWrite(MotorIzq, HIGH);
     delay(3000);
     digitalWrite(MotorDer, HIGH);
     digitalWrite(MotorIzq, LOW);
     delay(3000);
     digitalWrite(MotorDer, LOW);
     digitalWrite(MotorIzq, HIGH);
     delay(3000);
        digitalWrite(MotorDer, LOW);
        digitalWrite(MotorIzq, LOW);
        delay(2000);
     
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Estado: Secado");
     lcd.setCursor(0,1);
     lcd.print("Secando...");
     digitalWrite(MotorDer, HIGH);
     digitalWrite(MotorIzq, LOW);
     delay(4000);
     digitalWrite(MotorDer, LOW);
     digitalWrite(MotorIzq, HIGH);
     delay(4000);
     digitalWrite(MotorDer, HIGH);
     digitalWrite(MotorIzq, LOW);
     delay(4000);
     digitalWrite(MotorDer, LOW);
     digitalWrite(MotorIzq, HIGH);
     delay(4000);     
        digitalWrite(MotorDer, LOW);
        digitalWrite(MotorIzq, LOW);
        delay(2000);            
     
     lcd.clear();
     lcd.print("Estado:");
     lcd.setCursor(0,0);
     lcd.print("Ciclo Terminado");
     tone(BUZZER,2000,200);
     delay(1000);
     tone(BUZZER,2000,200);
     delay(1000);
     tone(BUZZER,2000,200);
     delay(3000);
     lcd.clear();
     digitalWrite(Valvula, LOW); 
     }
      if(x==1){
        digitalWrite(MotorDer,LOW);
        digitalWrite(MotorIzq,LOW);
        digitalWrite(Bomba,LOW);
        digitalWrite(Valvula,LOW);
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Estado:");
        lcd.setCursor(0,1);
        lcd.print("Detenido...");
        delay(1500);
        
      }

}

No es del codigo.
¿Son todos del mismo color?. Seguramente no
¿ Les has puento el mismo valor a las resistencias?. Seguramente si. Para ser correctos se ha de calcular la resistencia adecuada para cada color del led segun su hoja de datos.
Ademas puedes estar mezclando led de "alta eficiencia" con otro que no lo es.
Es problema de harware no se software. Has una prueba con tres led y mismo tipo y color y lo veras.
Saludos.

1 Like

Gracias por tu aporte, hice el cambio a leds y coloqué del mismo tipo, usé mismas resistencias, pero sigue igual

Revisando mas a fondo el código veo que te falta definir en el setup

pinMode(Valvula, OUTPUT);
pinMode(Bomba, OUTPUT);
1 Like

Moderador:
Por favor, lee las Normas del foro
Por favor, lee tu comentario inicial @manuel_hdez ahora dime donde díce que pines usas para conectar los leds?
Intenta dar siempre toda la información no hacer que actuemos como detectives de lo que quieres o pretendes hacer.

¿A qué pines están conectados los LEDs que no prenden del todo y a cuáles los que sí?

Muchas gracias por la ayuda, debe ser que entre prueba y prueba los elimine, soy nuevo en esto de programar en arduino y desconozco muchas cosas.
De antemano gracias :slight_smile:

@manuel_hdez espero no te sientas mal por las preguntas pero debes comprender que nosotros no diseñamos tu circuito y no vemos los leds entonces debes informar bien de lo que estas hablando para poder entender.
@gonpezzi te entendió y resultó ser tu solución. Listo, para la próxima ya sabes.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.