Taula de continguts:

Semàfor interactiu intel·ligent: 5 passos (amb imatges)
Semàfor interactiu intel·ligent: 5 passos (amb imatges)

Vídeo: Semàfor interactiu intel·ligent: 5 passos (amb imatges)

Vídeo: Semàfor interactiu intel·ligent: 5 passos (amb imatges)
Vídeo: Generació Digital - Capítol 183 2024, Desembre
Anonim
Semàfor interactiu intel·ligent
Semàfor interactiu intel·ligent

Esteu a punt per construir el millor semàfor més interactiu del món? Bé! En aquest tutorial, explicarem com es pot construir un per si mateix mitjançant Arduino.

Components necessaris: - Arduino (..duh) - Mosfet LM317 - 2x 60cm de tires LED RGB analògiques (12V) - Tub de PVC (1m x 125mm) - Cables (vermell i negre) - Plaques metàl·liques per a taps de llum- Acrílic per a la llum -icons (consulteu flaticon.com si hi ha icones.svg) - Pintura en blanc i negre esprai - Cinta elèctrica - Tots els components de soldadura necessaris - Pantalla amb blindatge necessari (no s'utilitza al tutorial)

Pas 1: Pas 1: feu els majúscules

Pas 1: feu les tapes de llum
Pas 1: feu les tapes de llum

El disseny és cosa vostra. Hem fet una gorra de 15x15cm per subjectar els llums. Hem tallat les plaques metàl·liques a la mida correcta i hem utilitzat una plegadora metàl·lica (no, no d’Avatar) per doblegar els taps amb les formes adequades. Les plaques posteriors es van fabricar a partir d’un component diferent.

Pas 2: Pas 2: Preparació del pal de PVC

Pas 2: Prepara el pal de PVC
Pas 2: Prepara el pal de PVC

Talleu 2 forats al pal de PVC per adaptar-los als taps de llum. A continuació, utilitzeu un polvoritzador de pintura negra per pintar tota la cosa de negre. Si voleu, podeu afegir ratlles blanques a la part inferior del pal (habitual als Països Baixos).

Pas 3: Pas 3: Muntatge de les tires LED RGB i poliment de sorra de les plaques acríliques

Pas 3: Muntatge de les tires LED RGB i poliment de sorra de les plaques acríliques
Pas 3: Muntatge de les tires LED RGB i poliment de sorra de les plaques acríliques
Pas 3: Muntatge de les tires LED RGB i sorrejat de les plaques acríliques
Pas 3: Muntatge de les tires LED RGB i sorrejat de les plaques acríliques

A continuació, haureu de muntar les tires LED RGB a l'interior del tap de llum. Ajusteu-los al voltant de la tapa i col·loqueu-los el més a prop possible de la part davantera.

A continuació, haureu de polir el símbol seleccionat per a la placa acrílica. Aconsegueix una mica de cinta i cobreix tota la placa acrílica. A continuació, retalleu la forma / figura que vulgueu. Després d'això, podeu escampar amb sorra la placa per obtenir un efecte de vidre esmerilat.

Pas 4: Pas 4: Connecteu les tires LED RGB a l'Arduino

Pas 4: connecteu les tires LED RGB a l'Arduino
Pas 4: connecteu les tires LED RGB a l'Arduino

Ara arriba la part complicada: connectar les tires LED RGB a l’Arduino. Quan connecteu els pins, assegureu-vos de posar els 12v als 12v de la tira. Entre cada color, tan vermell o verd, cal posar un mosfet. Connecteu les dades de la tira de led al pin central del mosfet i el pin esquerre al vostre Arduino. El passador dret ha de tornar al terra de l'Arduino.

Pas 5: Pas 5: escriviu el codi Arduino

Pas 5: escriviu el codi Arduino
Pas 5: escriviu el codi Arduino

Aquest codi Arduino està controlat per bluetooth, perquè no hem utilitzat cap pantalla interna. Per tant, el codi es controla mitjançant missatges bluetooth a la funció loop ().

#define r 6 # define g 11 #include

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

#define angryLength 4

# definir caiguda longitud 3 # definir feliç longitud 4 # definir al telèfon longitud 13 # definir parlar longitud 5 # definir caminar longitud 4 # definir caminar fora de longitud 4 # definir ondulant longitud 6

botó bool Premeu;

int currentMillis; int previousMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

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

bool blockLight = fals;

bool lightRed = cert;

int currentAnimationDelay;

configuració nul·la () {

// posa el teu codi de configuració aquí, per executar-lo una vegada: pinMode (r, OUTPUT); pinMode (g, OUTPUT);

Serial.begin (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = false; currentMillis = 0; anteriorMilis = 0;

animation1Delay = WalkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = cert; }

bucle buit () {

// retard (20);

// poseu el codi principal aquí, per executar-lo repetidament: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - anteriorMillis> animation1Delay) {Serial.println ("0"); anteriorMillis = actualMillis; animació1Fet = cert; }} else if (animation2Done == false i animation1Done == true) {if (currentMillis - anteriorMillis> animation2Delay) {Serial.println ("1"); anteriorMillis = actualMillis; animation2Done = true; }} else if (animation3Done == false i animation2Done == true) {if (currentMillis - anteriorMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); anteriorMillis = actualMillis; animation3Done = true; lightRed = fals; }} else if (animation4Done == false i animation3Done == true) {if (currentMillis - anteriorMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = cert; Serial.println ("FLSH"); }}}

if (Serial.available ()) {

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

animació1Fet = fals;

animació2Fet = fals; animació3Fet = fals; animation4Done = fals; animació5Fet = fals;

animation1Delay = WalkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = cert; Serial.println ("3"); buttonPressed = true; anteriorMillis = actualMillis; }

if (str == "VERMELL") {

blockLight = fals; lightRed = cert; }

if (str == "VERD") {

blockLight = fals; lightRed = fals; }

if (str == "LLUM: VERD: DESACTIVAT") {

blockLight = cert; 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); } if (lightRed == false) {analogWrite (r, 255); analogWrite (g, 0); }}}

Recomanat: