//aclaramos variablesa
int pot_value;
int pot_map;
int rojo = 3;
int ambar = 2;
int verde = 1;
void setup() {
Serial.begin(9600);
//Configuramos nuestro pin como analog input
pinMode(A0,INPUT);
pinMode(rojo,OUTPUT);
pinMode(ambar,OUTPUT);
pinMode(verde,OUTPUT);
}
void loop() {
//Leemos el valor del pin
Serial.println(pot_value);
delay(400);
Serial.println(pot_map);
pot_value = analogRead(A0);
pot_map = map(pot_value, 0, 1023, 0, 300); //las primeras cifras son input y las ultimas output
//primer intento
if (pot_map >100) {
digitalWrite(rojo, HIGH);
digitalWrite(ambar, LOW);
digitalWrite(verde, LOW);
} else {
digitalWrite(rojo, LOW);
digitalWrite(ambar, LOW);
digitalWrite(verde, LOW); // Apagar todos antes de encender uno
if (pot_map <=100) {
digitalWrite(rojo,LOW);
digitalWrite(ambar, HIGH);
digitalWrite(verde, LOW); // Asegurar que solo se encienda 1 LED
} else{
digitalWrite(rojo,LOW);
digitalWrite(ambar, LOW);
digitalWrite(verde, HIGH);
}
}
}
//segundo intento
if(pot_map <100){
digitalWrite(rojo,HIGH);
} else {
digitalWrite(rojo,LOW);
if(pot_map <200){
digitalWrite(ambar,HIGH);
} else {
digitalWrite(verde,HIGH);
}
}
delay(200);
}
//por algun motivo que desconozco, la estructura de if else con otro if else no me funcionó.
//Se encendían el rojo y el verde, luego el verde y el ambar y finalmente solo el verde.
//Busqué en el manual de Arduino y me topé con la alternativa de "else if"
//otros intentos
if (pot_map <= 100) {
digitalWrite(rojo, HIGH);
digitalWrite(ambar, LOW);
digitalWrite(verde, LOW);
} else if (pot_map > 100) {
digitalWrite(rojo, LOW);
digitalWrite(ambar, HIGH);
digitalWrite(verde, LOW);
} else if (pot_map > 200) {
digitalWrite(rojo, LOW);
digitalWrite(ambar, LOW);
digitalWrite(verde, HIGH);
}
if (pot_map <= 100) {
digitalWrite(rojo, HIGH);
digitalWrite(ambar, LOW);
digitalWrite(verde, LOW);
} else {
digitalWrite(rojo, LOW);
digitalWrite(ambar, LOW);
digitalWrite(verde, LOW); // Apagamos todos para evitar interferencias
if (pot_map > 100) {
digitalWrite(ambar, HIGH);
}
if (pot_map > 200) {
digitalWrite(ambar, LOW); // Apagar ambar antes de encender verde
digitalWrite(verde, HIGH);
}
}
//