0% encontró este documento útil (0 votos)
155 vistas6 páginas

Semaforo Arduino

Este proyecto describe un semáforo controlado por Arduino que cambia según la interacción con peatones y vehículos. El ciclo comienza con el semáforo de peatones en verde y el de vehículos en rojo. Para cambiar el semáforo de vehículos a verde, se usa un sensor ultrasónico para detectar vehículos detenidos durante 6 segundos. Los peatones pueden cambiar el semáforo presionando un botón. Los cambios de luz tardan entre 5-6 segundos y hay un retraso ad

Cargado por

JHON
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Descargar como docx, pdf o txt
0% encontró este documento útil (0 votos)
155 vistas6 páginas

Semaforo Arduino

Este proyecto describe un semáforo controlado por Arduino que cambia según la interacción con peatones y vehículos. El ciclo comienza con el semáforo de peatones en verde y el de vehículos en rojo. Para cambiar el semáforo de vehículos a verde, se usa un sensor ultrasónico para detectar vehículos detenidos durante 6 segundos. Los peatones pueden cambiar el semáforo presionando un botón. Los cambios de luz tardan entre 5-6 segundos y hay un retraso ad

Cargado por

JHON
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 6

Semáforo con pase de peatones Arduino

Se trata de un mini proyecto que hice para probar y aprender a programar Arduino.

Este semáforo no cambia por periodos de tiempo, cambia según como se interactúe con el.

El ciclo empieza con el semáforo para peatones en verde con el Buzzer pitando intermitentemente para que los
peatones invidentes sepan que pueden pasar mientras que el semáforo de coches se encuentra en rojo. Para que el
semáforo de coches cambie se usa el sensor de ultrasonido que mide la distancia en un área para saber si existen
coches detenidos esperando para ello también se tiene que cumplir una regla de 6 segundos seguidos a menos de
esa distancia. En este caso y como es un ejemplo puse que si la distancia es menor a 100 centímetros durante 6
segundos cambiara. Una vez se encuentre en verde el semáforo de coches y en rojo el de peatones para que cambie
otra vez el peatón tendrá que pulsar el botón.

Los procesos de cambios no son inmediatos una vez accionados tardan 5 segundos en cambiar de verde a rojo
además entre los cambios de semáforo a semáforo se aplica un segundo y medio mas.

Componentes

- Placa de Elegoo uno R3


- Sensor de ultrasonido HC-SR04
- Botón (Pequeño)
- Buzzer pasivo
- 5 Led
- 5 resistencias 220 ohmios
- 1 resistencia 10k ohmios

Plano
En plano se ve muy bonito en la realidad es algo como esto

Código:
#include <SR04.h>

// Nombre de colores asociados con la salidas digitales correspondiente.

#define PEATON_LED_ROJO 2

#define PEATON_LED_vERDE 3

#define PEATON_BUZZER 4

#define COCHE_LED_ROJO 5

#define COCHE_LED_AMARILLO 6

#define COCHE_LED_VERDE 7

#define BOTTON_PEATON 8

#define ECHO_PIN 9

#define TRIG_PIN 10

bool bPasoPeatonesActivo = true;

int iTiempoCambioLed = 5000;

int iTiempoEntreSemaforo = 1500;

int iTiempoCambioSemaforo = 5000;


int iPulsadorPeatones;

int iPulsadorCoches;

int iIteradorCoches;

int iBottonEmergencia;

long a;

//SENSOR SR04

SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);

void setup() {

Serial.begin(9600);

// Definir funcionamiento de cada PIN

pinMode(PEATON_LED_ROJO, OUTPUT);

pinMode(PEATON_LED_vERDE, OUTPUT);

pinMode(PEATON_BUZZER, OUTPUT);

pinMode(COCHE_LED_ROJO, OUTPUT);

pinMode(COCHE_LED_AMARILLO, OUTPUT);

pinMode(COCHE_LED_VERDE, OUTPUT);

pinMode(BOTTON_PEATON, INPUT);

// Estado inicial: semaforo de peatones en verde y coches en rojo

digitalWrite(PEATON_LED_ROJO, LOW);

digitalWrite(PEATON_LED_vERDE, HIGH);

digitalWrite(COCHE_LED_ROJO, HIGH);

digitalWrite(COCHE_LED_AMARILLO, LOW);

digitalWrite(COCHE_LED_VERDE, LOW);

bPasoPeatonesActivo = true;

void loop() {

if (bPasoPeatonesActivo){

sensorProximidad();

semaforoPeatones();

} else {

iPulsadorPeatones = digitalRead(BOTTON_PEATON);

if (iPulsadorPeatones == HIGH) {

semaforoCoches();
bPasoPeatonesActivo = true;

void semaforoPeatones() {

delay(iTiempoCambioSemaforo-3000);

for (int i = 0; i <= 6; i++) {

digitalWrite(PEATON_LED_vERDE, LOW);

delay(250);

digitalWrite(PEATON_LED_vERDE, HIGH);

delay(250);

sonarBuzzer("CORTO");

digitalWrite(PEATON_LED_vERDE, LOW);

digitalWrite(PEATON_LED_ROJO, HIGH);

delay(iTiempoEntreSemaforo);

digitalWrite(COCHE_LED_ROJO, LOW);

digitalWrite(COCHE_LED_VERDE, HIGH);

bPasoPeatonesActivo = false;

void semaforoCoches() {

delay(iTiempoCambioSemaforo);

digitalWrite(COCHE_LED_VERDE, LOW);

digitalWrite(COCHE_LED_AMARILLO, HIGH);

delay(iTiempoCambioLed);

digitalWrite(COCHE_LED_AMARILLO, LOW);

digitalWrite(COCHE_LED_ROJO, HIGH);

delay(iTiempoEntreSemaforo);

digitalWrite(PEATON_LED_ROJO, LOW);
digitalWrite(PEATON_LED_vERDE, HIGH);

bPasoPeatonesActivo = true;

sonarBuzzer("LARGO");

void sonarBuzzer(String sVelocidad) {

if (sVelocidad == "CORTO") {

for (int i = 0; i <= 8; i++) {

tone(PEATON_BUZZER, 500);

delay(50);

noTone(PEATON_BUZZER);

delay(50);

} else { sensorProximidad(); }

void sensorProximidad() {

int iX = 1;

while (iX==1){

a=sr04.Distance();

delay(400);

tone(PEATON_BUZZER, 500);

delay(150);

noTone(PEATON_BUZZER);

delay(150);

if ((a <= 100) and (a > 0 )) {

iIteradorCoches++;

} else { iIteradorCoches = 0; }

if (iIteradorCoches >= 6) {

iIteradorCoches = 0;

iX=2;

También podría gustarte