Tartalomjegyzék:

Intelligens interaktív közlekedési lámpa: 5 lépés (képekkel)
Intelligens interaktív közlekedési lámpa: 5 lépés (képekkel)

Videó: Intelligens interaktív közlekedési lámpa: 5 lépés (képekkel)

Videó: Intelligens interaktív közlekedési lámpa: 5 lépés (képekkel)
Videó: 6-aspect traffic light 2024, November
Anonim
Intelligens interaktív közlekedési lámpa
Intelligens interaktív közlekedési lámpa

Készen áll a világ legjobb és leginteraktívabb jelzőlámpájának megépítésére? Jó! Ebben az oktatóanyagban elmagyarázzuk, hogyan építhet egyet egyedül az Arduino használatával.

Szükséges alkatrészek:- Arduino (..duh)- LM317 Mosfet- 2x 60 cm analóg RGB LED szalagok (12V)- PVC cső (1m x 125mm)- Kábelek (piros és fekete)- Fémlemezek a fénysapkákhoz- Akril a fényhez - ikonok (ellenőrizze a flaticon.com webhelyen.svg ikonokat)- Spraycan fekete-fehér festék.- Elektromos szalag- Minden szükséges forrasztási alkatrész- Kijelző a szükséges árnyékolással (nem használatos az oktatóanyagban)

1. lépés: 1. lépés: Készítse el a fénysapkákat

Lépés: Készítse el a fénysapkákat
Lépés: Készítse el a fénysapkákat

A dizájn valóban rajtad múlik. Készítettünk egy 15x15 cm -es sapkát a lámpák tartására. A fémlemezeket a megfelelő méretűre vágtuk, és egy fém hajlítóval (nem, nem az Avatarból) hajlítottuk a sapkákat a megfelelő formákba. A hátlapok más alkatrészből készültek.

2. lépés: 2. lépés: A PVC oszlop előkészítése

2. lépés: A PVC oszlop előkészítése
2. lépés: A PVC oszlop előkészítése

Vágjon 2 lyukat a PVC pólusba, hogy illeszkedjen a fénysapkákhoz. Ezután fekete festékszóróval fesse le az egészet feketére. Ha szeretné, fehér csíkokat tehet a pólus aljára (Hollandiában gyakori).

3. lépés: 3. lépés: Az RGB LED szalagok összeszerelése és az akrillemezek homokfúvása

3. lépés: Az RGB LED szalagok összeszerelése és az akrillemezek homokfúvása
3. lépés: Az RGB LED szalagok összeszerelése és az akrillemezek homokfúvása
3. lépés: Az RGB LED szalagok összeszerelése és az akrillemezek homokfúvása
3. lépés: Az RGB LED szalagok összeszerelése és az akrillemezek homokfúvása

Ezután össze kell szerelnie az RGB LED csíkokat a fénysapka belsejében. Szorosan rögzítse őket a kupak körül, és helyezze a lehető legközelebb az elejéhez.

Ezután a kiválasztott szimbólumot homokfúvással kell lefújni az akrillemezen. Szerezzen szalagot, és fedje le az egész akrillemezt. Ezután vágja ki a kívánt alakot/alakot. Ezt követően a lemezt homokfúvással lehet elérni, hogy matt-üvegszerű hatást érjen el.

4. lépés: 4. lépés: Csatlakoztassa az RGB LED csíkokat az Arduino -hoz

Lépés: Csatlakoztassa az RGB LED csíkokat az Arduino -hoz
Lépés: Csatlakoztassa az RGB LED csíkokat az Arduino -hoz

Most jön a trükkös rész: az RGB LED szalagok csatlakoztatása az Arduino -hoz. Amikor csatlakoztatja a csapokat, győződjön meg arról, hogy a 12V -ot a szalag 12V -ra helyezi. Mindegyik szín, így piros vagy zöld között mosfet kell helyezni. Csatlakoztassa a led szalag adatait a mosfet középső tűjéhez, a bal oldali tűt pedig az Arduino készülékéhez. A jobb oldali csapnak vissza kell mennie az Arduino talajába.

5. lépés: 5. lépés: Írja be az Arduino kódot

Lépés: Írja be az Arduino kódot
Lépés: Írja be az Arduino kódot

Ezt az Arduino kódot bluetooth vezérli, mert nem használtunk belső kijelzőt. Tehát a kódot Bluetooth -üzenetek vezérlik a loop () függvényben.

#define r 6 #define g 11 #include

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

#define mérgesHosszúság 4

#define fallsLength 3 #define happyLength 4 #define onPhoneLength 13 #define talkingHossz 5

bool gomb megnyomva;

int currentMillis; int előzőMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

bool animation2Done = hamis; bool animation3Done = hamis; bool animation4Done = hamis; bool animation5Done = hamis;

bool blockLight = hamis;

bool lightRed = igaz;

int currentAnimationDelay;

void setup () {

// tegye ide a beállítási kódot, hogy egyszer fusson: pinMode (r, OUTPUT); pinMode (g, OUTPUT);

Sorozat.kezdet (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = hamis; currentMillis = 0; előzőMillis = 0;

animation1Delay = walkingLength * 1000;

animation2Delay = hullámzóLength * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = igaz; }

void loop () {

// delay (20);

// tegye ide a fő kódot, hogy ismételten fusson: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); previousMillis = currentMillis; animation1Done = igaz; }} else if (animation2Done == false és animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = currentMillis; animation2Done = igaz; }} else if (animation3Done == false és animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); previousMillis = currentMillis; animation3Done = igaz; lightRed = hamis; }} else if (animation4Done == false és animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = igaz; Serial.println ("FLSH"); }}}

if (Serial.available ()) {

Karakterlánc str = Serial.readString (); if (str == "CMD: BUTTON_PRESSED") {

animation1Done = false;

animation2Done = hamis; animation3Done = hamis; animation4Done = hamis; animation5Done = hamis;

animation1Delay = walkingLength * 1000;

animation2Delay = hullámzóLength * 1000; animation3Delay = happyLength * 1000; animation4Delay = walkingOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

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

if (str == "RED") {

blockLight = hamis; lightRed = igaz; }

if (str == "ZÖLD") {

blockLight = hamis; lightRed = hamis; }

ha (str == "FÉNY: ZÖLD: KI") {

blockLight = igaz; analogWrite (g, 255); } if (str == "LIGHT: ZÖLD: BE") {blockLight = true; analogWrite (g, 0); } //Serial.println(str); }

if (blockLight == hamis) {

if (lightRed == true) {

analogWrite (r, 0); analogWrite (g, 255); } if (lightRed == false) {analogWrite (r, 255); analogWrite (g, 0); }}}

Ajánlott: