Indholdsfortegnelse:

Smart interaktivt trafiklys: 5 trin (med billeder)
Smart interaktivt trafiklys: 5 trin (med billeder)

Video: Smart interaktivt trafiklys: 5 trin (med billeder)

Video: Smart interaktivt trafiklys: 5 trin (med billeder)
Video: 25 крутых изобретений в области личного транспорта | Дизайн автомобиля 2024, November
Anonim
Smart interaktivt trafiklys
Smart interaktivt trafiklys

Klar til at bygge verdens bedste og mest interaktive trafiklys? Godt! I denne vejledning forklarer vi, hvordan du selv kan bygge en ved hjælp af Arduino.

Påkrævede komponenter:- Arduino (..duh)- LM317 Mosfet- 2x 60cm analoge RGB LED-strips (12V)- PVC-rør (1m x 125mm)- Kabler (rød og sort)- Metalplader til lysdæksler- Akryl til lyset -ikoner (tjek flaticon.com for.svg-ikoner)- Spraycan sort og hvid maling.- Elektrisk tape- Alle nødvendige loddekomponenter- Display med påkrævet afskærmning (bruges ikke i vejledning)

Trin 1: Trin 1: Lav Light-caps

Trin 1: Lav Light-caps
Trin 1: Lav Light-caps

Designet er virkelig op til dig. Vi har lavet en 15x15cm hætte til at holde lysene. Vi har skåret metalpladerne til den korrekte størrelse og brugt en metalbøjler (nej, ikke fra Avatar) til at bøje hætterne i de rigtige former. Bagpladerne var lavet af en anden komponent.

Trin 2: Trin 2: Forberedelse af PVC -stangen

Trin 2: Forberedelse af PVC -stangen
Trin 2: Forberedelse af PVC -stangen

Skær 2 huller i PVC-stangen, så de passer til lysdækslerne. Brug derefter en sort maling spraydåse til at male det hele sort. Hvis du vil, kan du tilføje hvide striber i bunden af stangen (almindelig i Holland).

Trin 3: Trin 3: Montering af RGB LED -strips og sandblæsning af akrylpladerne

Trin 3: Montering af RGB LED -strips og sandblæsning af akrylpladerne
Trin 3: Montering af RGB LED -strips og sandblæsning af akrylpladerne
Trin 3: Montering af RGB LED -strips og sandblæsning af akrylpladerne
Trin 3: Montering af RGB LED -strips og sandblæsning af akrylpladerne

Dernæst skal du samle RGB LED-strimlerne inde i lysdækslet. Monter dem tæt omkring hætten, og placer dem så tæt på forsiden som muligt.

Dernæst skal du sandblæse det valgte symbol på akrylpladen. Få lidt tape og dæk hele akrylpladen. Skær derefter den form/figur, du ønsker, ud. Herefter kan du sandblæse pladen for at få en matteret glaslignende effekt.

Trin 4: Trin 4: Tilslut RGB LED Strips til Arduino

Trin 4: Tilslut RGB LED Strips til Arduino
Trin 4: Tilslut RGB LED Strips til Arduino

Nu kommer den vanskelige del: tilslutning af RGB LED Strips til Arduino. Når du forbinder stifterne, skal du sørge for at sætte 12v på 12v på din strimmel. Mellem hver farve, så rød eller grøn, skal du lægge en mosfet. Forbind dataene fra ledstrimlen til den midterste pin på mosfet og den venstre pin til din Arduino. Den højre pin skal gå tilbage til jorden på Arduino.

Trin 5: Trin 5: Skriv Arduino -koden

Trin 5: Skriv Arduino -koden
Trin 5: Skriv Arduino -koden

Denne Arduino -kode styres af bluetooth, fordi vi ikke brugte en intern skærm. Så koden styres via bluetooth -meddelelser i loop () -funktionen.

#define r 6 #definere g 11 #include

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

#define angryLængde 4

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

bool -knap Tryk på;

int currentMillis; int foregåendeMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

bool animation2Done = falsk; bool animation3Done = falsk; bool animation4Done = falsk; bool animation5Done = falsk;

bool blockLight = falsk;

bool lightRed = sand;

int currentAnimationDelay;

ugyldig opsætning () {

// sæt din opsætningskode her for at køre en gang: pinMode (r, OUTPUT); pinMode (g, OUTPUT);

Serial.begin (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = false; currentMillis = 0; foregående Millis = 0;

animation1Delay = walkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = sand; }

void loop () {

// forsinkelse (20);

// sæt din hovedkode her for at køre gentagne gange: usigneret lang currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); previousMillis = currentMillis; animation1Done = true; }} ellers hvis (animation2Done == false og animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = currentMillis; animation2Done = true; }} ellers hvis (animation3Done == false og animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("lyd:grøn "); previousMillis = currentMillis; animation3Done = true; lightRed = falsk; }} ellers hvis (animation4Done == false og animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = true; Serial.println ("FLSH"); }}}

hvis (Serial.available ()) {

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

animation1Done = falsk;

animation2Done = falsk; animation3Done = falsk; animation4Done = falsk; animation5Done = falsk;

animation1Delay = walkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

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

hvis (str == "RØD") {

blockLight = falsk; lightRed = sand; }

hvis (str == "GRØN") {

blockLight = falsk; lightRed = falsk; }

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

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

hvis (blockLight == false) {

hvis (lightRed == true) {

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

Anbefalede: