Semáforo con Arduino y botón para peatones (materiales y código)

Arduino ile yaya butonlu trafik lambası projesi kapak görseli

Bu yazıyı Türkçe okuyun · Read in English

¿Qué hace este proyecto?

Construimos un semáforo que funciona igual que los de los cruces de verdad. Los coches tienen luces roja, amarilla y verde; los peatones, roja y verde. Cuando un peatón pulsa el botón, la luz de los coches pasa a amarillo y luego a rojo, y los peatones pueden cruzar. Aunque nadie pulse el botón, las luces cambian solas cada cierto tiempo.

  • Edad: a partir de 9 años
  • Nivel: Principiante
  • Tiempo: unos 40 minutos
  • Qué aprenderás: encender y apagar LED, leer un botón, medir el tiempo con millis(), escribir una función

Lista de materiales

MaterialCant.
Arduino Uno (o compatible)1
LED (2 rojos, 1 amarillo, 2 verdes)5
Resistencia de 220 Ω5
Pulsador1
Protoboard1
Cables puente macho-macho~12
Cable USB1

Conexiones

Esquema de conexiones del semáforo con Arduino y botón para peatones
ComponenteConexiónPin de Arduino
LED rojo de cochesPata larga (a través de 220 Ω)D8
LED amarillo de cochesPata larga (a través de 220 Ω)D9
LED verde de cochesPata larga (a través de 220 Ω)D10
LED rojo de peatonesPata larga (a través de 220 Ω)D11
LED verde de peatonesPata larga (a través de 220 Ω)D12
Todos los LEDPatas cortasGND
BotónUna pataD2
BotónPata opuesta en diagonalGND

No usamos una resistencia externa para el botón; en su lugar activamos la resistencia pull-up interna de Arduino (INPUT_PULLUP).

Código

// Semáforo con Arduino y botón para peatones - ozandamci.com

const int carRed = 8;
const int carYellow = 9;
const int carGreen = 10;
const int pedRed = 11;
const int pedGreen = 12;
const int buttonPin = 2;

const unsigned long greenTime = 10000; // el verde de coches dura 10 s si nadie pulsa el botón

void setup() {
  pinMode(carRed, OUTPUT);
  pinMode(carYellow, OUTPUT);
  pinMode(carGreen, OUTPUT);
  pinMode(pedRed, OUTPUT);
  pinMode(pedGreen, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}

void lights(bool cr, bool cy, bool cg, bool pr, bool pg) {
  digitalWrite(carRed, cr);
  digitalWrite(carYellow, cy);
  digitalWrite(carGreen, cg);
  digitalWrite(pedRed, pr);
  digitalWrite(pedGreen, pg);
}

void loop() {
  // 1) Verde para coches, rojo para peatones
  lights(LOW, LOW, HIGH, HIGH, LOW);
  unsigned long start = millis();
  while (millis() - start < greenTime) {
    if (digitalRead(buttonPin) == LOW) {
      delay(1000); // breve espera tras pulsar el botón
      break;
    }
  }

  // 2) Amarillo para coches
  lights(LOW, HIGH, LOW, HIGH, LOW);
  delay(2000);

  // 3) Rojo para coches, verde para peatones
  lights(HIGH, LOW, LOW, LOW, HIGH);
  delay(5000);

  // 4) El verde de peatones parpadea como aviso
  for (int i = 0; i < 4; i++) {
    digitalWrite(pedGreen, LOW);
    delay(300);
    digitalWrite(pedGreen, HIGH);
    delay(300);
  }

  // 5) Rojo para peatones, rojo + amarillo para coches (preparados)
  lights(HIGH, HIGH, LOW, HIGH, LOW);
  delay(1500);
}

Paso a paso

  1. Prepara las líneas de alimentación. Conecta el pin GND de Arduino a la línea – de la protoboard.
  2. Coloca las luces de los coches. Pon los LED rojo, amarillo y verde uno debajo de otro. Conecta una resistencia de 220 Ω a la pata larga de cada uno y llévalos a D8, D9 y D10.
  3. Coloca las luces de los peatones. Pon los LED rojo y verde un poco más allá y conéctalos a D11 y D12 a través de resistencias.
  4. Conecta las patas cortas de todos los LED a la línea –.
  5. Coloca el botón. Pon el botón sobre la separación central de la protoboard. Conecta una pata a D2 y la pata opuesta en diagonal a la línea –.
  6. Sube el código. En el Arduino IDE, elige Arduino Uno y el puerto correcto en Herramientas → Placa y haz clic en Subir.
  7. Pruébalo. Pulsa el botón mientras la luz de los coches esté en verde. Un segundo después debería encenderse el amarillo y, a continuación, el verde de los peatones.

Solución de problemas

  • No pasa nada al pulsar el botón: Comprueba que usas patas del botón opuestas en diagonal. Las patas del mismo lado pueden estar siempre conectadas.
  • Un LED no se enciende nunca: Puede que el LED esté al revés; la pata larga debe ir al pin de Arduino.

Pruébalo tú mismo

  • Cambia los tiempos y añade un modo nocturno: por la noche solo parpadea la luz amarilla.
  • Añade un zumbador que suene mientras la luz de peatones esté en verde, para ayudar a las personas con discapacidad visual.

Vídeo

La narración está en turco. Hay subtítulos en español: pulsa CC en el vídeo.

Birisi “Semáforo con Arduino y botón para peatones (materiales y código)” üzerinde düşündü

Bir Cevap Yazın