#include "LedControl.h"
// Configura la matriz LED 8x8
LedControl lc = LedControl(14, 15, 16, 1); // DIN, CLK, CS, número de matrices
// Define el patrón binario para las letras
byte letraA[] = {
B11111110,
B10000010,
B10000010,
B11111110,
B10000010,
B10000010,
B10000010,
B10000010};
byte letraL[] = {
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B11111111};
byte letraT[] = {
B11111111,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000};
byte letraO[] = {
B11111111,
B10000001,
B10000001,
B10000001,
B10000001,
B10000001,
B10000001,
B11111111};
byte letraP[] = {
B11111111,
B10000001,
B10000001,
B11111111,
B00000001,
B00000001,
B00000001,
B00000001};
byte letraE[] = {
B11111111,
B00000001,
B00000001,
B11111111,
B00000001,
B00000001,
B00000001,
B11111111};
byte letraR[] = {
B11111111,
B10000001,
B10000001,
B11111111,
B00000011,
B00000101,
B00001001,
B00010001};
byte letraS[] = {
B11111111,
B00000001,
B00000001,
B11111111,
B10000000,
B10000000,
B10000000,
B11111111};
byte letraC[] = {
B11111111,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B00000001,
B11111111};
byte letraI[] = {
B11111111,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B11111111};
byte letraV[] = {
B10000010,
B10000010,
B10000010,
B10000010,
B10000010,
B01000100,
B00101000,
B00010000};
byte letraN[] = {
B10000011,
B10000101,
B10001001,
B10010001,
B10100001,
B11000001,
B10000001,
B10000001};
byte letraG[] = {
B11111111,
B00000001,
B00000001,
B11111001,
B10001001,
B10001001,
B10000001,
B11111111};
int buzzer = 17;
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 6;
int g = 7;
int verde = 8;
int amarillo = 9;
int rojo = 10;
int DISTANCIA = 0;
int pinEco=20;
int pinGatillo=21;
long readUltrasonicDistance(int triggerPin, int echoPin)
{
//Iniciamos el pin del emisor de reuido en salida
pinMode(triggerPin, OUTPUT);
//Apagamos el emisor de sonido
digitalWrite(triggerPin, LOW);
//Retrasamos la emision de sonido por 2 milesismas de segundo
delayMicroseconds(2);
// Comenzamos a emitir sonido
digitalWrite(triggerPin, HIGH);
//Retrasamos la emision de sonido por 2 milesismas de segundo
delayMicroseconds(10);
//Apagamos el emisor de sonido
digitalWrite(triggerPin, LOW);
//Comenzamos a escuchar el sonido
pinMode(echoPin, INPUT);
// Calculamos el tiempo que tardo en regresar el sonido
return pulseIn(echoPin, HIGH);
}
void setup ()
{
Serial.begin(115200);
//Configuramos el pin del led como salida
// buzzer
pinMode(buzzer, OUTPUT);
//semaforo
pinMode(rojo, OUTPUT);
pinMode(amarillo, OUTPUT);
pinMode(verde, OUTPUT);
// delay de 7 segmentos (1 unidad)
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
lc.shutdown(0, false); // Iniciar el controlador
lc.setIntensity(0, 8); // Ajustar la intensidad de brillo (puedes ajustarla según tu preferencia)
lc.clearDisplay(0); // Limpiar la matriz LED
}
void loop ()
{
//semaforo
digitalWrite(verde,HIGH);
digitalWrite(amarillo,LOW);
digitalWrite(rojo,LOW);
delay(1000);
// delay de 7 segmentos (1 unidad)
cero();
delay(1000);
uno();
delay(1000);
dos();
delay(1000);
tres();
delay(1000);
mostrarLetra(letraA);
delay(187); // Mostrar "A" durante 1 segundo
mostrarLetra(letraL);
delay(187); // Mostrar "L" durante 1 segundo
mostrarLetra(letraT);
delay(187); // Mostrar "T" durante 1 segundo
mostrarLetra(letraO);
delay(187); // Mostrar "O" durante 1 segundo
mostrarLetra(letraP);
delay(187);
mostrarLetra(letraE);
delay(187);
mostrarLetra(letraR);
delay(187);
mostrarLetra(letraS);
delay(187);
mostrarLetra(letraO);
delay(187);
mostrarLetra(letraN);
delay(187);
mostrarLetra(letraA);
delay(187);
mostrarLetra(letraC);
delay(187);
mostrarLetra(letraI);
delay(187);
mostrarLetra(letraE);
delay(187);
mostrarLetra(letraG);
delay(187);
mostrarLetra(letraA);
delay(187);
//buzzer
tone(buzzer, 2000); // 2000 Hz (2 kHz)
delay(1500); // Espera 2 segundos
// Detiene el tono
noTone(buzzer);
// Espera 1 segundo antes de generar otro tono
delay(1500);
digitalWrite(amarillo,HIGH);
digitalWrite(verde,LOW);
digitalWrite(rojo,LOW);
delay(1000);
// delay de 7 segmentos (1 unidad)
cero();
delay(1000);
uno();
delay(1000);
dos();
delay(1000);
tres();
delay(1000);
mostrarLetra(letraE);
delay(166);
mostrarLetra(letraS);
delay(166);
mostrarLetra(letraP);
delay(166);
mostrarLetra(letraE);
delay(166);
mostrarLetra(letraR);
delay(166);
mostrarLetra(letraE);
delay(166);
mostrarLetra(letraP);
delay(166);
mostrarLetra(letraE);
delay(166);
mostrarLetra(letraR);
delay(166);
mostrarLetra(letraS);
delay(166);
mostrarLetra(letraO);
delay(166);
mostrarLetra(letraN);
delay(166);
mostrarLetra(letraA);
delay(166);
mostrarLetra(letraC);
delay(166);
mostrarLetra(letraI);
delay(166);
mostrarLetra(letraE);
delay(166);
mostrarLetra(letraG);
delay(166);
mostrarLetra(letraA);
delay(166);
// buzzer
tone(buzzer, 2000); // 2000 Hz (2 kHz)
delay(1500); // Espera 2 segundos
// Detiene el tono
noTone(buzzer);
// Espera 1 segundo antes de generar otro tono
delay(1500);
digitalWrite(rojo,HIGH);
digitalWrite(verde,LOW);
digitalWrite(amarillo,LOW);
delay(2000);
DISTANCIA = 0.01723 * readUltrasonicDistance(pinGatillo, pinEco);
//Mostramos la disstancia
Serial.println(DISTANCIA);
//Si la distancia es menor a 20 encendemos el led
if (DISTANCIA < 20) {
digitalWrite(rojo, HIGH);
}
//Si la distancia es mayor a 20 apagamos el led
else {
digitalWrite(rojo, LOW);
digitalWrite(verde, LOW);
digitalWrite(amarillo, LOW);
}
delay(10);
tone(buzzer, 2000); // 2000 Hz (2 kHz)
delay(1500); // Espera 2 segundos
// Detiene el tono
noTone(buzzer);
// Espera 1 segundo antes de generar otro tono
delay(1500);
// delay de 7 segmentos (1 unidad)
cero();
delay(1000);
uno();
delay(1000);
dos();
delay(1000);
tres();
delay(1000);
mostrarLetra(letraA);
delay(166);
mostrarLetra(letraV);
delay(166);
mostrarLetra(letraA);
delay(166);
mostrarLetra(letraN);
delay(166);
mostrarLetra(letraC);
delay(166);
mostrarLetra(letraE);
delay(166);
mostrarLetra(letraP);
delay(166);
mostrarLetra(letraE);
delay(166);
mostrarLetra(letraR);
delay(166);
mostrarLetra(letraS);
delay(166);
mostrarLetra(letraO);
delay(166);
mostrarLetra(letraN);
delay(166);
mostrarLetra(letraA);
delay(166);
mostrarLetra(letraC);
delay(166);
mostrarLetra(letraI);
delay(166);
mostrarLetra(letraE);
delay(166);
mostrarLetra(letraG);
delay(166);
mostrarLetra(letraA);
delay(166);
}
void cero ()
{
digitalWrite(a, LOW );
digitalWrite(b, LOW );
digitalWrite(c, LOW );
digitalWrite(d, LOW );
digitalWrite(e, LOW );
digitalWrite(f, LOW );
digitalWrite(g, HIGH );
}
void uno ()
{
digitalWrite(a, HIGH );
digitalWrite(b, LOW );
digitalWrite(c, LOW );
digitalWrite(d, HIGH );
digitalWrite(e, HIGH );
digitalWrite(f, HIGH );
digitalWrite(g, HIGH );
}
void dos ()
{
digitalWrite(a, LOW );
digitalWrite(b, LOW );
digitalWrite(c, HIGH );
digitalWrite(d, LOW );
digitalWrite(e, LOW );
digitalWrite(f, HIGH );
digitalWrite(g, LOW );
}
void tres ()
{
digitalWrite(a, LOW );
digitalWrite(b, LOW );
digitalWrite(c, LOW );
digitalWrite(d, LOW );
digitalWrite(e, HIGH );
digitalWrite(f, HIGH );
digitalWrite(g, LOW );
}
// Función para mostrar un patrón binario en la matriz LED
void mostrarLetra(byte letra[]) {
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, letra[i]); // Mostrar fila por fila
}
delay(500); // Añadir un pequeño retardo entre letras
lc.clearDisplay(0); // Limpiar la matriz LED
}