Problema con Arduino Nano y LEDs

Buenas tardes.

Tengo el siguiente codigo que no consigo hacer funcionar (no consigo que los LEDs se iluminen) y no entiendo por que. Nunca habia tenido problemas con algo tan basico. Un saludo.

Os adjunto el codigo:

const int LUZ1 = 2;
const int LUZ2 = 3;
const int LUZ3 = 4;
const int LUZ4 = 5;
const int BUZZER1 = 6;
const int BUZZER2 = 7;

int Detonacion = 2000;                  //Duracion pitido
int TBaliza = 3000;                     //Duracion baliza
float sinVal;
int toneVal;
 
int Baliza = 15000;                      //Tiempo entre sonidos de baliza
unsigned long TiempoAhora = 0;

void setup() 
{ 
  pinMode(LUZ1, OUTPUT);
  pinMode(LUZ2, OUTPUT);
  pinMode(LUZ3, OUTPUT);
  pinMode(LUZ4, OUTPUT);
  pinMode(BUZZER1, OUTPUT);
  pinMode(BUZZER2, OUTPUT);

                                         // configuracion de detonacion

  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);

  delay(100);
    
  digitalWrite(LUZ1, LOW);
  digitalWrite(LUZ2, LOW);
  digitalWrite(LUZ3, LOW);
  digitalWrite(LUZ4, LOW);
  
  delay(900);
  
  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);

  delay(100);

  digitalWrite(LUZ1, LOW);
  digitalWrite(LUZ2, LOW);
  digitalWrite(LUZ3, LOW);
  digitalWrite(LUZ4, LOW);

  delay(900);

  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);

  delay(100);

  digitalWrite(LUZ1, LOW);
  digitalWrite(LUZ2, LOW);
  digitalWrite(LUZ3, LOW);
  digitalWrite(LUZ4, LOW);

  delay(900);

  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);

  delay(100);

  digitalWrite(LUZ1, LOW);
  digitalWrite(LUZ2, LOW);
  digitalWrite(LUZ3, LOW);
  digitalWrite(LUZ4, LOW);
  
  delay(900);
  
  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);
 
  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(Detonacion);
  noTone(BUZZER1);
  noTone(BUZZER2);

}

void loop() 
{
                                              // configuracion de baliza
  if (millis() > TiempoAhora + Baliza)
  {
    TiempoAhora = millis();

                                             //Pitido continuo
//    for(int x=0; x<180; x++)
//    {
//      sinVal = (sin(x*(3.1412/180)));
//      toneVal = 2000+(int(sinVal*1000));
//      tone(BUZZER1, toneVal);
//      tone(BUZZER2, toneVal);
//      delay(2);
//    }
//    delay(TBaliza);
//    noTone(BUZZER1);
//    noTone(BUZZER2);

                                             //Pitido intermitente

  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
  delay(300);
  
  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
  delay(300);

  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
  delay(300);

  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
  delay(300);

  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
    
   }

}

Tu código acciona los leds solo al encender el Arduino y luego solo actua con los tonos.
Lo que tienes en setup() funciona una sola vez
Lo que tienes en loop() se repite siempre.

Hola.
La idea es que realice unas señales luminosas al principio (que no hace) y luego permanezcan encendidos. Cambiare la el texto de sitio y los escribire todo en el "void loop".
Gracias.

Sigue sin funcionar :confused: :confused: :confused: :confused: :confused:

const int LUZ1 = 2;
const int LUZ2 = 3;
const int LUZ3 = 4;
const int LUZ4 = 5;
const int BUZZER1 = 6;
const int BUZZER2 = 7;

int Detonacion = 2000;                  //Duracion pitido
int TBaliza = 3000;                     //Duracion baliza
float sinVal;
int toneVal;
 
int Baliza = 15000;                      //Tiempo entre sonidos de baliza
unsigned long TiempoAhora = 0;

void setup() 
{ 
  pinMode(LUZ1, OUTPUT);
  pinMode(LUZ2, OUTPUT);
  pinMode(LUZ3, OUTPUT);
  pinMode(LUZ4, OUTPUT);
  pinMode(BUZZER1, OUTPUT);
  pinMode(BUZZER2, OUTPUT);
}

void loop() 
{
                                         // configuracion de detonacion
  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);

  delay(100);
    
  digitalWrite(LUZ1, LOW);
  digitalWrite(LUZ2, LOW);
  digitalWrite(LUZ3, LOW);
  digitalWrite(LUZ4, LOW);
  
  delay(900);
  
  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);

  delay(100);

  digitalWrite(LUZ1, LOW);
  digitalWrite(LUZ2, LOW);
  digitalWrite(LUZ3, LOW);
  digitalWrite(LUZ4, LOW);

  delay(900);

  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);

  delay(100);

  digitalWrite(LUZ1, LOW);
  digitalWrite(LUZ2, LOW);
  digitalWrite(LUZ3, LOW);
  digitalWrite(LUZ4, LOW);

  delay(900);

  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);

  delay(100);

  digitalWrite(LUZ1, LOW);
  digitalWrite(LUZ2, LOW);
  digitalWrite(LUZ3, LOW);
  digitalWrite(LUZ4, LOW);
  
  delay(900);
  
  digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);
 
  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(Detonacion);
  noTone(BUZZER1);
  noTone(BUZZER2);
  
                                              // configuracion de baliza
  if (millis() > TiempoAhora + Baliza)
  {
    TiempoAhora = millis();

                                             //Pitido continuo
//    for(int x=0; x<180; x++)
//    {
//      sinVal = (sin(x*(3.1412/180)));
//      toneVal = 2000+(int(sinVal*1000));
//      tone(BUZZER1, toneVal);
//      tone(BUZZER2, toneVal);
//      delay(2);
//    }
//    delay(TBaliza);
//    noTone(BUZZER1);
//    noTone(BUZZER2);

                                             //Pitido intermitente

  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
  delay(300);
  
  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
  delay(300);

  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
  delay(300);

  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
  delay(300);

  for(int x=0; x<180; x++)
    {
      sinVal = (sin(x*(3.1412/180)));
      toneVal = 2000+(int(sinVal*1000));
      tone(BUZZER1, toneVal);
      tone(BUZZER2, toneVal);
      delay(2);
    }

  delay(500);
  noTone(BUZZER1);
  noTone(BUZZER2);
  }
}

Los leds deberían encender, revisa las conexiones.

Saludos

Si pasas sin pensar lo que tienes en el setup al loop este se repetirá en cada secuencia, si es lo que quieres esta bien, pero supongo que no es el caso.
Si los leds deben quedar encendidos al ser éste el ultimo código que los controla, entonces deberían permanecer encendidos.

digitalWrite(LUZ1, HIGH);
  digitalWrite(LUZ2, HIGH);
  digitalWrite(LUZ3, HIGH);
  digitalWrite(LUZ4, HIGH);

Si no lo hacen es porque los estas comandando de modo inverso.
Como estan conectados, describe desde el pin LED y resistencia a donde estan conectados.
Posiblemente esten conectados a VCC para que queden apagados, normalmente se conectan de Pin a una R a anodo y el cátodo a GND, esta ultima conexión asegura que esten prendidos. La anterior en cambio los dejaría apagados.

Si no encienden, no es problema de soft, es de hard.

No esta claro por la explicación si no encienden nunca o no quedan encendidos. Yo entendí que no quedan encendidos pero puedo equivocarme.

Ahora me inclino a pensar que no encienden directamente.

Revisa si el GND de los leds esta debidamente conectado, si los conectas Anodo al pin y cátodo apuntando a GND.
Saca un led del pin y pruebalo por separado con resistencia.

Hola.
El problema es que nunca encienden. Tengo el polo positivo a la salida digital y el negativo a GND. Son LEDs rojos de alta luminosidad. Basicamente los tengo conetados como en la imagen que adjunto y todos los negativos van al mismo GND.

R15000.png

R15000.png

Si es una protoboard, verificá que tengas masa en la línea.
Conecta uno de los led (con su resistencia) directo a 5V en lugar de al pin del arduino, si no enciende es la conexión de masa lo que genera el problema.

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