Obsah:

Inteligentný interaktívny semafor: 5 krokov (s obrázkami)
Inteligentný interaktívny semafor: 5 krokov (s obrázkami)

Video: Inteligentný interaktívny semafor: 5 krokov (s obrázkami)

Video: Inteligentný interaktívny semafor: 5 krokov (s obrázkami)
Video: Операционные системы, урок 1: Что такое компьютер и операционная система 2024, November
Anonim
Inteligentný interaktívny semafor
Inteligentný interaktívny semafor

Ste pripravení postaviť najlepší a najinteraktívnejší semafor na svete? Dobre! V tomto návode vám vysvetlíme, ako si ho môžete vytvoriť sami pomocou Arduina.

Požadované komponenty:- Arduino (..duh)- LM317 Mosfet- 2x 60 cm analógové RGB LED pásy (12V)- PVC trubica (1 m x 125 mm)- Káble (červené a čierne)- Kovové platne pre žiarovky- Akryl pre svetlo -ikony (ikony.svg nájdete na flaticon.com)- čiernobiely lak na sprej.- elektrická páska- všetky požadované spájkovacie komponenty- displej s požadovaným štítom (nepoužíva sa v návode)

Krok 1: Krok 1: Vytvorte svetelné kryty

Krok 1: Vytvorte svetelné kryty
Krok 1: Vytvorte svetelné kryty

Dizajn je skutočne na vás. Vyrobili sme čiapku 15x15 cm na uchytenie svetiel. Vystrihli sme kovové platne na správnu veľkosť a pomocou kovového ohýbača (nie, nie od spoločnosti Avatar) sme čiapky ohýbali v správnych tvaroch. Zadné dosky boli vyrobené z iného komponentu.

Krok 2: Krok 2: Príprava pólu z PVC

Krok 2: Príprava pólu z PVC
Krok 2: Príprava pólu z PVC

Do stĺpika z PVC vyrežte 2 otvory tak, aby zodpovedali krytkám svetla. Potom použite sprej na čiernu farbu na natretie celej veci na čierno. Ak chcete, môžete na spodok tyče pridať biele pruhy (bežné v Holandsku).

Krok 3: Krok 3: Zostavenie RGB LED pásikov a pieskovanie akrylových dosiek

Krok 3: Zostavenie RGB LED pásikov a pieskovanie akrylových dosiek
Krok 3: Zostavenie RGB LED pásikov a pieskovanie akrylových dosiek
Krok 3: Zostavenie RGB LED pásikov a pieskovanie akrylových dosiek
Krok 3: Zostavenie RGB LED pásikov a pieskovanie akrylových dosiek

Ďalej budete musieť zostaviť RGB LED pásy do žiarovky. Nasaďte ich tesne okolo uzáveru a umiestnite ich čo najbližšie k prednej časti.

Ďalej budete musieť pieskovaný symbol na akrylovej doske opieskovať. Vezmite si pásku a pokryte celú akrylovú dosku. Potom vystrihnite požadovaný tvar/postavu. Potom môžete doštičku pieskovať, aby ste získali efekt podobný matnému sklu.

Krok 4: Krok 4: Pripojte RGB LED pásiky k Arduinu

Krok 4: Pripojte RGB LED pásy k Arduinu
Krok 4: Pripojte RGB LED pásy k Arduinu

Teraz prichádza náročná časť: pripojenie RGB LED pásikov k Arduinu. Keď pripájate kolíky, uistite sa, že ste zapojili 12 V na 12 V vášho prúžku. Medzi každú farbu, takú červenú alebo zelenú, musíte dať mosfet. Pripojte údaje LED pásky k strednému kolíku mosfetu a ľavý kolík k vášmu Arduinu. Pravý kolík sa musí vrátiť na zem Arduina.

Krok 5: Krok 5: Napíšte kód Arduino

Krok 5: Napíšte kód Arduino
Krok 5: Napíšte kód Arduino

Tento kód Arduino je ovládaný bluetooth, pretože sme nepoužili interný displej. Kód je teda ovládaný prostredníctvom správ bluetooth vo funkcii loop ().

#define r 6 #definujte g 11 #include

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

#define angryDĺžka 4

#define klesáDĺžka 3 #define happyLength 4 #define onPhoneLength 13 #define talkingLength 5 #define walkingLength 4 #define walkingOutLength 4 #define wavingLength 6

tlačidlo boolStlačené;

int currentMillis; int predchádzajúciMillis;

int animation1Odklad;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

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

bool blockLight = false;

bool lightRed = true;

int currentAnimationDelay;

neplatné nastavenie () {

// sem vložte svoj inštalačný kód, aby sa spustil raz: pinMode (r, OUTPUT); pinMode (g, VÝSTUP);

Serial.begin (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = false; currentMillis = 0; predchádzajúciMillis = 0;

animation1Delay = walkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = true; }

prázdna slučka () {

// zdržanie (20);

// sem vložte svoj hlavný kód, aby sa spúšťal opakovane: nepodpísaný dlhý aktuálnyMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); previousMillis = súčasnýMillis; animation1Done = true; }} else if (animation2Done == false a animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = súčasnýMillis; animation2Done = true; }} else if (animation3Done == false a animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); previousMillis = súčasnýMillis; animation3Done = true; lightRed = false; }} else if (animation4Done == false a animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = true; Serial.println ("FLSH"); }}}

ak (Serial.available ()) {

Reťazec str = Serial.readString (); ak (str == "CMD: BUTTON_PRESSED") {

animation1Done = false;

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

animation1Delay = walkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = true; Serial.println ("3"); buttonPressed = true; previousMillis = súčasnýMillis; }

ak (str == "ČERVENÁ") {

blockLight = false; lightRed = true; }

ak (str == "ZELENÉ") {

blockLight = false; lightRed = false; }

ak (str == "SVETLO: ZELENÉ: VYPNUTÉ") {

blockLight = true; analogWrite (g, 255); } if (str == "SVETLO: ZELENÉ: ZAPNUTÉ") {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); }}}

Odporúča: