miércoles, 26 de enero de 2022

SEMÁFORO CON CONTROL DE TRÁFICO

 DATOS

Alumno: Manuel Jiménez González

Asignatura: Innovación Docente de la Especialidad de Tecnología

Titulación: Máster Universitario en Profesor de Educación Secundaria Obligatoria y Bachillerato, Formación Profesional y Enseñanza de Idiomas.

Centro: Universidad de Salamanca

Curso: 2021/2022

DESCRIPCIÓN DEL PROYECTO

El objetivo de este proyecto es diseñar un sistema automátizado que controle un semáforo situado en una intersección por medio de la placa Arduino que podría servir como actividad en el bloque didáctico de Control y Robótica de la asignatura de Tecnología en 3º de la ESO.

El sistema cuenta con dos entradas (pulsador para el paso de peatones y un fotorresistor situado a 50m de la intersección, que se active cuando un coche estacione sobre el) y tres salida correspondientes a tres LEDs, uno para cada luz del semáforo (rojo, ámbar y verde).

El sistema está preparado para dar respuesta a tres posibles situaciones como se explicará en el siguiente vídeo.

Vídeo:




Componentes:



- Arduino Elegoo One.
- Protoboard.
- Diodo LED rojo.
- Diodo LED amarillo.
- Diodo LED verde.
- 10 Cables de diferentes longitudes.
- 3 Resistencias de 220 Ohmios.
- 2 Resistencias de 10 KOhmios.
- 1 Pulsador.
- 1 Fotorresistor.

Código:

// Semáforo sencillo en Arduino
int tiempoEspera = 5000;

// variable to hold sensor value
int sensor;

const int ledRojo = 10;
const int ledAmarillo = 9;
const int ledVerde = 8;
int switchstate = 0;

void setup(){
  Serial.begin(9600);
  pinMode(ledRojo, OUTPUT);    // Rojo
  pinMode(ledAmarillo, OUTPUT);     // Amarillo
  pinMode(ledVerde, OUTPUT);     // Verde
}
void loop() { 

  sensor = analogRead(A0);
  switchstate = digitalRead(2);
  if (switchstate == HIGH){
    digitalWrite(ledRojo, HIGH);     // rojo encendido
  }
  else{
    digitalWrite(ledRojo, LOW);     // rojo encendido
    if (sensor <400){
      digitalWrite(ledVerde, HIGH);      // verde encendido
      digitalWrite(ledRojo, LOW);     // rojo encendido
      digitalWrite(ledAmarillo, LOW);       // amarillo apagado
      delay(5000);
    }
    else if(sensor>500){
      digitalWrite(ledVerde, LOW);       // verde apagado
      digitalWrite(ledAmarillo, HIGH);       // amarillo apagado
      delay(5000);
      digitalWrite(ledAmarillo, LOW);       // amarillo apagado    
      digitalWrite(ledRojo, HIGH);     // rojo encendido
      delay(5000);
    }
  }
}






No hay comentarios:

Publicar un comentario