Created
January 9, 2018 15:45
-
-
Save eloisaromero/01474e496393648611ae5c0f4f32b42f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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