
Semáforo sencillo
- AGR
- Electrónica , Programación
- 21 Nov, 2024
// C++ code
//
// Pines de los LEDs del semáforo sencillo
const int LED_VERDE = 2;
const int LED_AMARILLO = 3;
const int LED_ROJO = 4;
void setup() {
// Configuración de los pines OUTPUT
pinMode(LED_VERDE, OUTPUT);
pinMode(LED_AMARILLO, OUTPUT);
pinMode(LED_ROJO, OUTPUT);
}
void loop() {
// Encender el LED verde por 3 segundos
digitalWrite(LED_VERDE, HIGH);
delay(3000);
// Parpadeo del LED verde usando un ciclo For
for (int i = 0; i < 5; i++) { // Ajusta el número de parpadeos
digitalWrite(LED_VERDE, LOW);
delay(300);
digitalWrite(LED_VERDE, HIGH);
delay(300);
}
// Apagar el LED verde y encender el amarillo por 2 segundos
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARILLO, HIGH);
delay(2000);
// Apagar el LED amarillo y encender el rojo por 3 segundos
digitalWrite(LED_AMARILLO, LOW);
digitalWrite(LED_ROJO, HIGH);
delay(3000);
// Apagar el LED rojo para repetir la secuencia
digitalWrite(LED_ROJO, LOW);
}
Explicación del Código: Control de un Semáforo Sencillo
Este código en C++ simula el funcionamiento de un semáforo sencillo utilizando un microcontrolador Arduino. Controla tres LEDs (verde, amarillo y rojo), que se encienden y apagan en una secuencia típica de semáforo.
1. Definición de Pines
Se asignan constantes a los pines del microcontrolador que estarán conectados a los LEDs:
Esto facilita el control de cada LED mediante nombres descriptivos en lugar de números de pin.
const int LED_VERDE = 2;
const int LED_AMARILLO = 3;
const int LED_ROJO = 4;
2. Funcion Setup
En esta funcion se configuran los pines como salidas (OUTPUT) para controlar los leds.Esto permite enviar señales de encendido o apagado a cada LED.
3. Funcion Loop
Ciclo Principal: loop() La función loop() contiene la lógica que se ejecuta de manera continua:
Encender el LED verde:
digitalWrite(LED_VERDE, HIGH);
delay(3000);
//El LED verde se enciende por 3 segundos.
Parpadeo del LED verde:
for (int i = 0; i < 5; i++) {
digitalWrite(LED_VERDE, LOW);
delay(300);
digitalWrite(LED_VERDE, HIGH);
delay(300);
}
Aquí, el LED verde parpadea 5 veces (encendido/apagado con un intervalo de 300 ms).
Transición al LED amarillo:
digitalWrite(LED_VERDE, LOW);
digitalWrite(LED_AMARILLO, HIGH);
delay(2000);
El LED amarillo se enciende por 2 segundos mientras el verde se apaga.
Transición al LED rojo:
digitalWrite(LED_AMARILLO, LOW);
digitalWrite(LED_ROJO, HIGH);
delay(3000);
Finalmente, el LED rojo se enciende por 3 segundos mientras el amarillo se apaga.
Reinicio del ciclo:
digitalWrite(LED_ROJO, LOW);
Se apagan todos los LEDs, y el ciclo se repite desde el principio.
Desafíos
Desafío 1: Cambiar Duraciones
Descripción: Modifica el código para ajustar las duraciones de cada LED encendido. Por ejemplo:
- LED verde: 5 segundos
- LED amarillo: 1 segundo
- LED rojo: 4 segundos
Pista: Edita los valores de delay()
en las secciones correspondientes del código.
Desafío 2: Parpadeo de LED Rojo
Descripción: Modifica el código para que el LED rojo parpadee rápidamente durante sus 3 segundos encendido.
Pista: Añade un ciclo for
similar al usado para el LED verde, pero ajusta el número de parpadeos y la duración de delay()
.
Preguntas:
Preguntas básicas:
- Respuesta: Un LED (Light Emitting Diode) es un diodo que emite luz cuando la corriente eléctrica fluye a través de él en la dirección correcta. Se utiliza en circuitos para iluminación y señalización.
- Respuesta: La resistencia limita la corriente que pasa a través del LED, evitando que se queme debido a un exceso de corriente.
- Respuesta: El pin GND (Ground) es el punto de referencia de voltaje cero en un circuito y se conecta a la tierra del circuito para completar el flujo de corriente.
- Respuesta: El ánodo es el lado positivo y normalmente es la pata más larga del LED. El cátodo es el lado negativo, identificado por la pata más corta o una marca plana en el borde del LED.
- Respuesta: El LED probablemente se quemará porque pasará demasiada corriente a través de él, superando su capacidad.
Preguntas intermedias:
- Respuesta: La resistencia se calcula usando la fórmula V=IR
- Respuesta: Un pin digital en Arduino puede tener dos estados, HIGH (5V) o LOW (0V). Se utiliza para controlar dispositivos como LEDs. Por ejemplo, puedes usar el comando
digitalWrite(pin, HIGH)
para encender un LED conectado a ese pin.
- Respuesta: Un pin digital solo tiene dos estados (HIGH o LOW), mientras que un pin analógico puede leer o escribir valores continuos, como voltajes entre 0 y 5V.
- Respuesta: Un LED parpadea cuando se enciende y apaga de forma repetida. Esto se programa alternando el estado del LED con
digitalWrite
y agregando un retardo condelay()
.
Preguntas avanzadas:
- Respuesta: Usando la Ley de Ohm: Por lo tanto, necesitas una resistencia de al menos 150 ohmios.
- Respuesta: Si usas una resistencia de mayor valor, el LED emitirá menos luz porque pasa menos corriente a través de él.
- Respuesta: Conectas el potenciómetro a un pin analógico de Arduino para leer su valor. Luego usas ese valor para ajustar el brillo del LED con
analogWrite()
, que utiliza modulación por ancho de pulso (PWM).