Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save eloisaromero/01474e496393648611ae5c0f4f32b42f to your computer and use it in GitHub Desktop.
Save eloisaromero/01474e496393648611ae5c0f4f32b42f to your computer and use it in GitHub Desktop.
/**
* Ejemplo de semáforo para coches y peatones regulado por un botón con parpadeo en el semáforo de peatones para Kit Educativo de Semáforo para Arduino.
* Copyright 2018 - Fábrica Digital (fabricadigital.org)
*
* Publicado bajo licencia CC-BY-SA 4.0
* Creative Commons: Reconocimiento - Compartir Igual 4.0 Internacional
* http://creativecommons.org/licenses/by-sa/4.0/deed.es_ES
*
* Modificado el 09 de enero de 2018
* por Eloísa Romero para Fábrica Digital
*/
// Creamos las variables que almacenan el pin al que hemos conectado cada LED y el botón
const int LED_ROJO_COCHE = 13; // Variable constante que almacena el pin al que hemos conectado el LED rojo de los coches
const int LED_AMBAR_COCHE = 12; // Variable constante que almacena el pin al que hemos conectado el LED ámbar de los coches
const int LED_VERDE_COCHE = 11; // Variable constante que almacena el pin al que hemos conectado el LED verde de los coches
const int LED_ROJO_PEATON = 9; // Variable constante que almacena el pin al que hemos conectado el LED rojo de los peatones
const int LED_VERDE_PEATON = 8; // Variable constante que almacena el pin al que hemos conectado el LED verde de los peatones
const int BOTON = 10; // Variable constante que almacena el pin al que hemos conectado el botón
/* Creamos una variable no constante que almacena el estado en el que se encuentra el botón.
La inicializo en 1 (HIGH), porque mi programa va a empezar (primera vuelta del loop) con el botón relajado*/
int estadoBoton = 1;
void setup() {
/* Inicializamos los LEDs como salidas (OUTPUT)
y el botón como entrada, activando la resistencia interna de Arduino (INPUT_PULLUP)*/
pinMode (LED_ROJO_COCHE, OUTPUT);
pinMode(LED_AMBAR_COCHE, OUTPUT);
pinMode(LED_VERDE_COCHE, OUTPUT);
pinMode(LED_ROJO_PEATON, OUTPUT);
pinMode(LED_VERDE_PEATON, OUTPUT);
pinMode(BOTON, INPUT_PULLUP);
}
void loop() {
// Estado 1: El semáforo de coches está verde y el de los peatones rojo:
digitalWrite(LED_VERDE_COCHE, HIGH);
digitalWrite(LED_ROJO_PEATON, HIGH);
// Leemos el botón y guardamos el estado en la variable estadoBoton:
estadoBoton = digitalRead(BOTON);
/* si el botón está pulsado (LOW), el semáforo de coches pasa de verde a ámbar y de ámbar a rojo,
y el semáforo de peatones pasa de rojo a verde. Esta acción se mantiene durante 5000 milisegundos*/
if (estadoBoton == LOW){
digitalWrite(LED_VERDE_COCHE, LOW);
digitalWrite(LED_AMBAR_COCHE, HIGH);
delay(1000);
digitalWrite(LED_AMBAR_COCHE, LOW);
digitalWrite(LED_ROJO_COCHE, HIGH);
digitalWrite(LED_ROJO_PEATON, LOW);
digitalWrite(LED_VERDE_PEATON, HIGH);
delay(5000);
// Bucle for() dentro del "if" para que el LED verde de los peatones parpadee antes de ponerse en rojo:
for(int i=1; i<=3; i++){
digitalWrite(LED_VERDE_PEATON, LOW);
delay(200);
digitalWrite(LED_VERDE_PEATON, HIGH);
delay(200);
}
digitalWrite(LED_ROJO_COCHE, LOW);
digitalWrite(LED_VERDE_PEATON, LOW);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment