Tabla de contenido:

Semáforo interactivo inteligente: 5 pasos (con imágenes)
Semáforo interactivo inteligente: 5 pasos (con imágenes)

Video: Semáforo interactivo inteligente: 5 pasos (con imágenes)

Video: Semáforo interactivo inteligente: 5 pasos (con imágenes)
Video: Cuentos Infantiles | El semáforo de las emociones | Cuento de emociones 2024, Noviembre
Anonim
Semáforo interactivo inteligente
Semáforo interactivo inteligente

¿Listo para construir el mejor y más interactivo semáforo del mundo? ¡Bien! En este tutorial, explicaremos cómo puede construir uno usted mismo usando Arduino.

Componentes necesarios: - Arduino (..duh) - LM317 Mosfet- 2x Tiras LED RGB analógicas de 60cm (12V) - Tubo de PVC (1m x 125mm) - Cables (rojo y negro) - Placas metálicas para casquillos de luz - Acrílico para la luz -iconos (consulte flaticon.com para ver los íconos.svg) - Pintura en aerosol en blanco y negro.- Cinta eléctrica- Todos los componentes de soldadura requeridos- Pantalla con el protector requerido (no se usa en el tutorial)

Paso 1: Paso 1: Haga las tapas de luz

Paso 1: haz las tapas de luz
Paso 1: haz las tapas de luz

El diseño realmente depende de ti. Hemos hecho un tapón de 15x15cm para sujetar las luces. Cortamos las placas de metal al tamaño correcto y usamos un doblador de metal (no, no de Avatar) para doblar las tapas en las formas correctas. Las placas traseras estaban hechas de un componente diferente.

Paso 2: Paso 2: Preparación del poste de PVC

Paso 2: preparación del poste de PVC
Paso 2: preparación del poste de PVC

Corte 2 orificios en el poste de PVC para colocar las tapas de luz. Luego, usa una lata de pintura en aerosol negra para pintar todo de negro. Si lo desea, puede agregar rayas blancas en la parte inferior del poste (común en los Países Bajos).

Paso 3: Paso 3: Montaje de las tiras de LED RGB y arenado de las placas acrílicas

Paso 3: ensamblar las tiras de LED RGB y pulir las placas acrílicas con chorro de arena
Paso 3: ensamblar las tiras de LED RGB y pulir las placas acrílicas con chorro de arena
Paso 3: Montaje de las tiras de LED RGB y arenado de las placas acrílicas
Paso 3: Montaje de las tiras de LED RGB y arenado de las placas acrílicas

A continuación, deberá ensamblar las tiras de LED RGB dentro de la tapa de luz. Ajústelos alrededor de la tapa y colóquelos lo más cerca posible del frente.

A continuación, deberá pulir con chorro de arena el símbolo seleccionado en la placa acrílica. Consigue un poco de cinta y cubre toda la placa acrílica. Luego recorta la forma / figura que quieras. Después de esto, puede pulir la placa para obtener un efecto de vidrio esmerilado.

Paso 4: Paso 4: Conecte las tiras de LED RGB al Arduino

Paso 4: Conecte las tiras de LED RGB al Arduino
Paso 4: Conecte las tiras de LED RGB al Arduino

Ahora viene la parte complicada: conectar las tiras de LED RGB al Arduino. Cuando conecte los pines, asegúrese de colocar los 12v en los 12v de su tira. Entre cada color, tan rojo o verde, es necesario poner un mosfet. Conecte los datos de la tira de led al pin central del mosfet y el pin izquierdo a su Arduino. El pin derecho tiene que volver al suelo del Arduino.

Paso 5: Paso 5: Escribe el código Arduino

Paso 5: escribe el código Arduino
Paso 5: escribe el código Arduino

Este código Arduino está controlado por bluetooth, porque no usamos una pantalla interna. Entonces, el código se controla a través de mensajes bluetooth en la función loop ().

#define r 6 # define g 11 #include

SoftwareSerial mySerial (10, 11); // RX, TX

#define angryLength 4

#define FallingLength 3 #define happyLength 4 #define onPhoneLength 13 #define talkingLength 5 #define walkingLength 4 #define walkingOutLength 4 #define wavingLength 6

bool buttonPressed;

int currentMillis; int previousMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

bool animation2Done = false; bool animation3Done = false; bool animation4Done = false; bool animation5Done = false;

bool blockLight = falso;

bool lightRed = verdadero;

int currentAnimationDelay;

configuración vacía () {

// ponga su código de configuración aquí, para que se ejecute una vez: pinMode (r, OUTPUT); pinMode (g, SALIDA);

Serial.begin (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = falso; currentMillis = 0; anteriorMillis = 0;

animation1Delay = walkingLength * 1000;

animation2Delay = wavingLength * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = verdadero; }

bucle vacío () {

// retraso (20);

// ponga su código principal aquí, para que se ejecute repetidamente: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); previousMillis = currentMillis; animation1Done = true; }} else if (animation2Done == false y animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = currentMillis; animation2Done = verdadero; }} else if (animation3Done == false y animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); previousMillis = currentMillis; animation3Done = verdadero; lightRed = falso; }} else if (animation4Done == false y animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = verdadero; Serial.println ("FLSH"); }}}

if (Serial.available ()) {

String str = Serial.readString (); if (str == "CMD: BUTTON_PRESSED") {

animation1Done = falso;

animation2Done = falso; animation3Done = falso; animation4Done = falso; animation5Done = falso;

animation1Delay = walkingLength * 1000;

animation2Delay = wavingLength * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = verdadero; Serial.println ("3"); buttonPressed = verdadero; previousMillis = currentMillis; }

if (str == "RED") {

blockLight = falso; lightRed = verdadero; }

if (str == "VERDE") {

blockLight = falso; lightRed = falso; }

if (str == "LIGHT: GREEN: OFF") {

blockLight = verdadero; analogWrite (g, 255); } if (str == "LIGHT: GREEN: ON") {blockLight = true; analogWrite (g, 0); } //Serial.println(str); }

if (blockLight == false) {

if (lightRed == true) {

analogWrite (r, 0); analogWrite (g, 255); } si (rojo claro == falso) {escritura analógica (r, 255); analogWrite (g, 0); }}}

Recomendado: