Talaan ng mga Nilalaman:

Smart Interactive Traffic Light: 5 Hakbang (na may Mga Larawan)
Smart Interactive Traffic Light: 5 Hakbang (na may Mga Larawan)

Video: Smart Interactive Traffic Light: 5 Hakbang (na may Mga Larawan)

Video: Smart Interactive Traffic Light: 5 Hakbang (na may Mga Larawan)
Video: New! Cheapest Human Tracking Security Camera Icsee Xmeye 2024, Nobyembre
Anonim
Smart Interactive Traffic Light
Smart Interactive Traffic Light

Handa nang buuin ang pinakamahusay at pinaka-interactive na ilaw ng trapiko sa buong mundo? Mabuti! Sa tutorial na ito, ipaliwanag namin kung paano ka makakabuo ng isa sa iyong sarili gamit ang Arduino.

Mga kinakailangang sangkap: - Arduino (..duh) - LM317 Mosfet- 2x 60cm Analog RGB LED Strips (12V) - Tube ng PVC (1m x 125mm) - Mga Cables (pula at itim) - Mga plate ng metal para sa light-caps- Acryl para sa ilaw -icons (suriin ang flaticon.com para sa.svg na mga icon) - Spraycan na itim at puting pintura.- Elektrikal na tape- Lahat ng kinakailangang mga sangkap ng paghihinang- Ipakita na may kinakailangang kalasag (hindi ginamit sa tutorial)

Hakbang 1: Hakbang 1: Gawin ang mga Light-cap

Hakbang 1: Gawin ang mga Light-cap
Hakbang 1: Gawin ang mga Light-cap

Nasa iyo talaga ang disenyo. Gumawa kami ng 15x15cm na cap upang hawakan ang mga ilaw. Pinutol namin ang mga metal plate sa tamang sukat at ginamit ang isang metal bender (hindi, hindi mula sa Avatar) upang yumuko ang mga takip sa tamang mga hugis. Ang mga backplate ay ginawa mula sa ibang sangkap.

Hakbang 2: Hakbang 2: Paghahanda ng PVC Pole

Hakbang 2: Inihahanda ang PVC Pole
Hakbang 2: Inihahanda ang PVC Pole

Gupitin ang 2 butas sa poste ng PVC upang magkasya ang mga light-cap. Pagkatapos ay gumamit ng isang itim na spray spray ng pintura upang pintura ang buong bagay na itim. Kung nais mo, maaari kang magdagdag ng mga puting guhitan sa ilalim ng poste (karaniwan sa The Netherlands).

Hakbang 3: Hakbang 3: Pag-iipon ng RGB LED Strips at Sandblasting ang Acrylic Plates

Hakbang 3: Pag-iipon ng RGB LED Strips at Sandblasting ang Acrylic Plates
Hakbang 3: Pag-iipon ng RGB LED Strips at Sandblasting ang Acrylic Plates
Hakbang 3: Pag-iipon ng RGB LED Strips at Sandblasting ang Acrylic Plates
Hakbang 3: Pag-iipon ng RGB LED Strips at Sandblasting ang Acrylic Plates

Susunod na kakailanganin mong tipunin ang mga RGB LED strip sa loob ng light-cap. Pagkasyahin ang mga ito sa paligid ng takip, at ilagay ang mga ito malapit sa harap hangga't maaari.

Susunod na kakailanganin mong i-sandblast ang napiling simbolo para sa acrylic plate. Kumuha ng ilang tape at takpan ang buong plate ng acrylic. Pagkatapos gupitin ang gusto mong hugis / pigura. Pagkatapos nito, maaari mong i-sandblast ang plato upang makakuha ng mala-frosted-glass na epekto.

Hakbang 4: Hakbang 4: Ikonekta ang RGB LED Strips sa Arduino

Hakbang 4: Ikonekta ang RGB LED Strips sa Arduino
Hakbang 4: Ikonekta ang RGB LED Strips sa Arduino

Dumarating ngayon ang nakakalito na bahagi: pagkonekta sa RGB LED Strips sa Arduino. Kapag kumokonekta ka sa mga pin siguraduhing inilagay mo ang 12v sa 12v ng iyong strip. Sa pagitan ng bawat kulay, kaya pula o berde, kailangan mong maglagay ng isang mosfet. Ikonekta ang data ng led strip sa gitnang pin ng mosfet, at ang kaliwang pin sa iyong Arduino. Ang tamang pin ay kailangang bumalik sa lupa ng Arduino.

Hakbang 5: Hakbang 5: Isulat ang Arduino Code

Hakbang 5: Isulat ang Arduino Code
Hakbang 5: Isulat ang Arduino Code

Ang Arduino code na ito ay kinokontrol ng bluetooth, dahil hindi kami gumamit ng isang panloob na display. Kaya't ang code ay kinokontrol sa pamamagitan ng mga bluetooth na mensahe sa loop () na pagpapaandar.

# tukuyin ang r 6 # tukuyin ang g 11 # isama

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

# tukuyin ang galitLength 4

#tukoy ang pagbagsak ng Haba 3 # tukuyin ang masayang Haba 4 # tukuyin saPhoneLength 13 # tukuyin ang pagsasalita Haba 5 # tukuyin ang paglalakad Haba 4 # tukuyin ang paglalakadOutLength 4 #define wavingLength 6

pindutan ng boolPressed;

int kasalukuyangMillis; int nakaraangMillis;

int animasyon1Delay;

int animasyon2Delay; int animasyon3Delay; int animasyon4Delay;

bool animation1Done = false;

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

bool blockLight = false;

bool lightRed = totoo;

int kasalukuyangAnimationDelay;

walang bisa ang pag-setup () {

// ilagay ang iyong setup code dito, upang tumakbo nang isang beses: pinMode (r, OUTPUT); pinMode (g, OUTPUT);

Serial.begin (9600);

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

animation1Delay = paglalakad ng Haba * 1000;

animation2Delay = wavingLength * 1000; animation3Delay = happyLength * 1000; animasyon4Delay = paglalakadOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = totoo; }

void loop () {

// pagkaantala (20);

// ilagay ang iyong pangunahing code dito, upang patakbuhin nang paulit-ulit: unsigned long currentMillis = millis (); kung (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - nakaraangMillis> animasyon1Delay) {Serial.println ("0"); nakaraangMillis = kasalukuyangMillis; animation1Done = totoo; }} iba pa kung (animasyon2Done == maling at animasyon1Done == totoo) {kung (currentMillis - nakaraangMillis> animasyon2Delay) {Serial.println ("1"); nakaraangMillis = kasalukuyangMillis; animation2Done = totoo; }} iba pa kung (animation3Done == false at animation2Done == totoo) {kung (currentMillis - nakaraangMillis> animasyon3Delay) {Serial.println ("2"); //Serial.println("sound:green "); nakaraangMillis = kasalukuyangMillis; animation3Done = totoo; lightRed = false; }} iba pa kung (animation4Done == false at animation3Done == totoo) {kung (currentMillis - nakaraangMillis> animasyon4Delay) {nakaraangMillis = currentMillis; animation4Done = totoo; Serial.println ("FLSH"); }}}

kung (Serial.available ()) {

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

animation1Done = false;

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

animation1Delay = paglalakad ng Haba * 1000;

animation2Delay = wavingLength * 1000; animation3Delay = happyLength * 1000; animasyon4Delay = paglalakadOutLength * 1000;

// currentAnimationDelay = animation1Delay * 1000;

lightRed = totoo; Serial.println ("3"); buttonPressed = totoo; nakaraangMillis = kasalukuyangMillis; }

kung (str == "PULA") {

blockLight = false; lightRed = totoo; }

kung (str == "GREEN") {

blockLight = false; lightRed = false; }

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

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

kung (blockLight == false) {

kung (lightRed == totoo) {

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

Inirerekumendang: