Hola a todos, soy nuevo en el foro, me disculpo si me equivoqué de categoría o si cometí algún otro error.
Les cuento que estoy desarrollando un sistema de señaletica vehicular, aquí estoy empezando desde un simulador, este consiste de 3 botones LED y 4 botones, cada uno con 1 resistencia de 1kΩ, tal como muestro en la imagen:
-1 botón junto a 1 LED de señalética izquierda (Al pulsar se enciende y se apaga al volver a pulsar)
-1 botón junto a 1 LED de señalética derecha (Al pulsar se enciende y se apaga al volver a pulsar)
-1 botón junto a 1 LED de freno (Mientras se mantiene pulsado enciende los 3 LEDS juntos)
-1 botón de luces de emergencia (Al pulsar parpadean los 3 LEDS juntos y se apagan al volver a pulsar))
Aquí adjunto el código:
//Definimos constantes de Pines de Botones y LEDS
const int buttonLeft = 13;
const int buttonRight = 12;
const int buttonBrake = 11;
const int buttonEmergency = 10;
const int ledLeft = 1;
const int ledRight = 2;
const int ledBrake = 3;
//Definimos Valores iniciales de Botones
int buttonLeftValue = 0;
int buttonRightValue = 0;
int buttonBrakeValue = 0;
int buttonEmergencyValue = 0;
//Definimos Valores de estado antiguo de Botones
int buttonLeftOldValue = 0;
int buttonRightOldValue = 0;
int buttonBrakeOldValue = 0;
int buttonEmergencyOldValue = 0;
//Definimos estado de LED
int ledLeftValue = 0;
int ledRightValue = 0;
int ledBrakeValue = 0;
int ledEmergencyValue = 0;
//Variables de tiempo para Luz de Emergencia
unsigned long previousMillis = 0; //Almacenar ultimo tiempo de LED encendido
const long interval = 500; //Definir Intervalo de 1/2 segundo
//Setear estado para LED de emergencia
int ledState = LOW;
void setup()
{
//Activación de Pines de Botones y LEDS
pinMode(buttonLeft, INPUT);
pinMode(buttonRight, INPUT);
pinMode(buttonBrake, INPUT);
pinMode(buttonEmergency, INPUT);
pinMode(ledLeft, OUTPUT);
pinMode(ledRight, OUTPUT);
pinMode(ledBrake, OUTPUT);
}
void loop()
{
//Definir milisegundos actuales para boton Emergencia
unsigned long currentMillis = millis();
//Leer valores de botones
buttonLeftValue = digitalRead(buttonLeft);
buttonRightValue = digitalRead(buttonRight);
buttonBrakeValue = digitalRead(buttonBrake);
buttonEmergencyValue = digitalRead(buttonEmergency);
//ENCENDIDO Y APAGADO de PINES de LED ---------------------------
//BOTON Y LED IZQUIERDO -----------------------------------------
if(buttonLeftValue == LOW && buttonLeftOldValue == HIGH) {
ledLeftValue = 1 - ledLeftValue;
delay(10);
}
buttonLeftOldValue = buttonLeftValue;
if(ledLeftValue == 1) {
digitalWrite(ledLeft, HIGH);
digitalWrite(ledRight, LOW); //NO FUNCIONA APAGADO DERECHO
} else {
digitalWrite(ledLeft, LOW);
}
//BOTON Y LED DERECHO -------------------------------------------
if(buttonRightValue == LOW && buttonRightOldValue == HIGH) {
ledRightValue = 1 - ledRightValue;
delay(10);
}
buttonRightOldValue = buttonRightValue;
if(ledRightValue == 1) {
digitalWrite(ledLeft, LOW); //NO FUNCIONA APAGADO IZQUIERDO
digitalWrite(ledRight, HIGH);
} else {
digitalWrite(ledRight, LOW);
}
//BOTON DE FRENO ------------------------------------------------
if(buttonBrakeValue == LOW) {
digitalWrite(ledLeft, HIGH);
digitalWrite(ledRight, HIGH);
digitalWrite(ledBrake, HIGH);
} else {
digitalWrite(ledLeft, LOW);
digitalWrite(ledRight, LOW);
digitalWrite(ledBrake, LOW);
}
//BOTON DE EMERGENCIA ------------------------------------------
if(buttonEmergencyValue == LOW && buttonEmergencyOldValue == HIGH) {
ledEmergencyValue = 1 - ledEmergencyValue;
delay(10);
}
buttonEmergencyOldValue = buttonEmergencyValue;
if(ledEmergencyValue == 1) {
if (currentMillis - previousMillis >= interval) {
// Guarda el ultimo tiempo de parpadeo de LED
previousMillis = currentMillis;
// Si el LED está apagado, se enciende o vice-versa:
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
// Setear LED con ledState de la variable:
digitalWrite(ledLeft, ledState);
digitalWrite(ledRight, ledState);
digitalWrite(ledBrake, ledState);
}
}
}
La luz izquierda, la luz derecha y las luces de freno funcionan sin problemas. El problema es que el botón de luces de emergencia me enciende las luces pero con muy baja intensidad. Para las luces de emergencia utilicé un código para el parpadeo sin usar delay().
No sé cómo resolver este problema de la baja intensidad, para testear, comenté el código del funcionamiento de los otros 3 botones, ahí recien enciende.
¿Cuál será el problema? Intenté colocar una batería de 9V adicional, pero sigue iluminando bajo.
Agradezco este espacio y estaré muy agradecido por la ayuda.
