Sisällysluettelo:

Älykäs interaktiivinen liikennevalo: 5 vaihetta (kuvilla)
Älykäs interaktiivinen liikennevalo: 5 vaihetta (kuvilla)

Video: Älykäs interaktiivinen liikennevalo: 5 vaihetta (kuvilla)

Video: Älykäs interaktiivinen liikennevalo: 5 vaihetta (kuvilla)
Video: Kartat ja paikkatieto tutuiksi - Paikkatiedon hyödyntäminen, käytannön harjoituksia (Antti Ahola) 2024, Marraskuu
Anonim
Älykäs interaktiivinen liikennevalo
Älykäs interaktiivinen liikennevalo

Oletko valmis rakentamaan maailman parhaan ja interaktiivisimman liikennevalon? Hyvä! Tässä opetusohjelmassa selitämme, kuinka voit rakentaa sen itse Arduinolla.

Tarvittavat komponentit:- Arduino (..duh)- LM317 Mosfet- 2x 60 cm Analogiset RGB-LED-nauhat (12 V)- PVC-putki (1 m x 125 mm)- Kaapelit (punainen ja musta)- Metallilevyt valokorkille- Akryyli valolle -kuvakkeet (tarkista flaticon.com.svg-kuvakkeet)- Spraycan-mustavalkoinen maali.- Sähköteippi- Kaikki tarvittavat juotoskomponentit- Näyttö, jossa on vaadittu suoja (ei käytössä opetusohjelmassa)

Vaihe 1: Vaihe 1: Tee valokorkit

Vaihe 1: Tee valokorkit
Vaihe 1: Tee valokorkit

Suunnittelu on todella sinun. Olemme tehneet 15x15 cm: n korkin valojen pitämiseksi. Leikkasimme metallilevyt oikean kokoisiksi ja käytimme metallitaivutinta (ei, ei Avataria) taivuttamaan korkit oikeaan muotoon. Taustalevyt valmistettiin eri komponentista.

Vaihe 2: Vaihe 2: Valmistele PVC -napa

Vaihe 2: Valmistele PVC -napa
Vaihe 2: Valmistele PVC -napa

Leikkaa 2 reikää PVC-pylvääseen valokorkkien asentamiseksi. Käytä sitten mustaa maaliruiskua maalaamaan koko asia mustaksi. Halutessasi voit lisätä valkoisia raitoja sauvan pohjaan (yleinen Alankomaissa).

Vaihe 3: Vaihe 3: RGB -LED -nauhojen kokoaminen ja akryylilevyjen hiekkapuhallus

Vaihe 3: RGB -LED -nauhojen kokoaminen ja akryylilevyjen hiekkapuhallus
Vaihe 3: RGB -LED -nauhojen kokoaminen ja akryylilevyjen hiekkapuhallus
Vaihe 3: RGB -LED -nauhojen kokoaminen ja akryylilevyjen hiekkapuhallus
Vaihe 3: RGB -LED -nauhojen kokoaminen ja akryylilevyjen hiekkapuhallus

Seuraavaksi sinun on koottava RGB-LED-nauhat valosuojuksen sisään. Aseta ne tiukasti korkin ympärille ja aseta ne mahdollisimman lähelle etuosaa.

Seuraavaksi sinun täytyy hiekkapuhaltaa valittu symboli akryylilevylle. Hanki teippi ja peitä koko akryylilevy. Leikkaa sitten haluamasi muoto/kuvio. Tämän jälkeen voit hiekkapuhaltaa levyn saadaksesi himmeän lasimaisen vaikutelman.

Vaihe 4: Vaihe 4: Liitä RGB -LED -nauhat Arduinoon

Vaihe 4: Liitä RGB -LED -nauhat Arduinoon
Vaihe 4: Liitä RGB -LED -nauhat Arduinoon

Nyt tulee hankala osa: RGB -LED -nauhojen liittäminen Arduinoon. Kun liität nastoja, varmista, että asetat 12v nauhan 12v: n päälle. Jokaisen värin, niin punaisen tai vihreän, väliin sinun on asetettava mosfet. Liitä led -nauhan tiedot mosfetin keskitappiin ja vasen nasta Arduinoosi. Oikean tapin on palattava Arduinon maahan.

Vaihe 5: Vaihe 5: Kirjoita Arduino -koodi

Vaihe 5: Kirjoita Arduino -koodi
Vaihe 5: Kirjoita Arduino -koodi

Tätä Arduino -koodia ohjataan bluetoothilla, koska emme käyttäneet sisäistä näyttöä. Joten koodia ohjataan bluetooth -viesteillä silmukka () -toiminnossa.

#määrittele r 6 #määrittele g 11 #sisällytä

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

#määritä vihainenPituus 4

#määrittele putoaminenLength 3 #define happyLength 4 #define onPhonePituus 13 #define talkingPituus 5 #define kävelyPituus 4 #define kävelyOutLength 4 #define wavingLength 6

bool -painikePainettu;

int currentMillis; int previousMillis;

int animation1Delay;

int animation2Delay; int animation3Delay; int animation4Delay;

bool animation1Done = false;

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

bool blockLight = epätosi;

bool lightRed = totta;

int currentAnimationDelay;

void setup () {

// laita asennuskoodi tähän, jotta se suoritetaan kerran: pinMode (r, OUTPUT); pinMode (g, LÄHTÖ);

Sarja.alku (9600);

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

animaatio1viive = kävelypituus * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = totta; }

void loop () {

// viive (20);

// laita pääkoodisi tänne toistettavaksi: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); previousMillis = currentMillis; animation1Done = true; }} else if (animation2Done == false ja animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = currentMillis; animation2Done = true; }} else if (animation3Done == false ja animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Sarja.println ("ääni: vihreä"); previousMillis = currentMillis; animation3Done = true; lightRed = epätosi; }} else if (animation4Done == false ja animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = true; Serial.println ("FLSH"); }}}

jos (Serial.available ()) {

Merkkijono str = Serial.readString (); jos (str == "CMD: BUTTON_PRESSED") {

animation1Done = false;

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

animaatio1viive = kävelypituus * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

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

jos (str == "PUNAINEN") {

blockLight = epätosi; lightRed = totta; }

jos (str == "VIHREÄ") {

blockLight = epätosi; lightRed = epätosi; }

jos (str == "VALO: VIHREÄ: POIS") {

blockLight = tosi; analogWrite (g, 255); } jos (str == "LIGHT: GREEN: ON") {blockLight = true; analogWrite (g, 0); } // Sarja.println (str); }

jos (blockLight == false) {

jos (lightRed == true) {

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

Suositeltava: