- Belen Soria
- Thiago Rodríguez
- Ivan Sacks
- Franco Sofia
Nota: Aquí se encuentra las entregas correspondientes al proyecto en orden ascendente.
El semaforo cumple la funcion de, si bien ser un semaforo usual, también es un semaforo para invidentes, ya que cuenta con un pienzo. Este al hacer sonido durante la luz roja, le indica al usuario cuando no pasar.
Esta funcion se encarga de encender los leds y buzzer, y apagarlos.
LED_VERDE_A, LED_VERDE_B, TIEMPO_VERDE, LED_AMARILLO_A, LED_AMARILLO_B, TIEMPO_AMARILLO, LED_ROJO_A, LED_ROJO_B, BUZZER son #define que utilizamos para agregar los leds, y el buzzer asociandolo a pines de la placa arduino.
En la funcion loop, llama las funciones PrenderApagarLeds, enviando los parametros, y PrenderApagardLedRojoBuzzer la cual cuando enciende, también suena el buzzer.
void loop()
{
PrenderApagarLeds(LED_VERDE_A,LED_VERDE_B, TIEMPO_VERDE);
PrenderApagarLeds(LED_AMARILLO_A, LED_AMARILLO_B, TIEMPO_AMARILLO);
PrenderApagardLedRojoBuzzer(LED_ROJO_A,LED_ROJO_B, BUZZER);
PrenderApagarLeds(LED_AMARILLO_A, LED_AMARILLO_B, TIEMPO_AMARILLO);
}
El semaforo cumple la funcion de, si bien ser un semaforo usual, también es un semaforo para invidentes, ya que cuenta con un pienzo. Este al hacer sonido durante la luz roja, le indica al usuario cuando no pasar, además, al hacer un sonido cada segundo durante la luz amarilla, indica cuando tener precaución.
Esta funcion se encarga de encender los leds y buzzer, y apagarlos.
LED_AMARILLO_A, LED_AMARILLO_B, LED_ROJO_A, LED_ROJO_B, BUZZER son #define que utilizamos para agregar los leds, y el buzzer asociandolo a pines de la placa arduino.
En la funcion PrenderApagarLedBuzzer, primero se prende el led que se envió como parametro, luego en la condición notifica cual led está prendido. Además llama a la funcion PrenderApagardLedRojoBuzzer enviandole los parametros: buzzer -> variable de tipo entero que representa el pinMode del buzzer buzzer_tiempo_segundos -> Variable de tipo entero que representa la cantidad de segundos que debe sonar el buzzer 1 o 2 -> La cantidad de sonidos por segundo
Y por último, apaga los leds.
void PrenderApagarLedBuzzer(int led,int led_repuesto,int buzzer,int buzzer_tiempo_segundos)
{
digitalWrite(led, HIGH);
digitalWrite(led_repuesto, HIGH);
if(led == LED_ROJO_A || led == LED_ROJO_B)
{
Serial.println("Prendido: Led rojo 5 segundos y buffer suena 2 veces por segundo.");
PrenderApagarBuffer(buzzer,buzzer_tiempo_segundos,2);
}
else
{
if(led == LED_AMARILLO_A || led == LED_AMARILLO_B)
{
Serial.println("Prendido: Led amarillo por 3 segundos y buffer suena 1 vez por segundo.");
PrenderApagarBuffer(buzzer,buzzer_tiempo_segundos,1);
}
}
digitalWrite(led, LOW);
digitalWrite(led_repuesto, LOW);
}
Codificamos un semaforo doble para invidentes, este hace dos sonidos cuando la luz roja esta prendinda y uno suave cuando la luz amarilla esta prendida. Cuenta con un boton que al ser apretado, le da a la persona que lo requiera más tiempo para cruzar la calle.
Esta funcion se encarga de verificar si el boton fue presionado, para guardar una varible que determine si el tiempo del led verde se duplicará.
boton_presionado y flag_presionado son variables globales que utilizamos para saber si se presionó el boton.
En la funcion RecibirTiempoLedVerde, primero leemos el estado del boton verde, y si este fue presionado se asigna 1 en el entero flag_presionado y se notifica por pantalla.
Y por último, apaga los leds.
void RecibirTiempoLedVerde()
{
boton_presionado = digitalRead(BOTON_VERDE);
if (boton_presionado == 1)
{
flag_presionado = 1;
Serial.println("La proxima luz verde se duplicara.");
}
}