INHOUDSOPGAWE:

Slim interaktiewe verkeerslig: 5 stappe (met foto's)
Slim interaktiewe verkeerslig: 5 stappe (met foto's)

Video: Slim interaktiewe verkeerslig: 5 stappe (met foto's)

Video: Slim interaktiewe verkeerslig: 5 stappe (met foto's)
Video: Maak een 360 graden foto (iPhone) | Programmeer een interactief verhaal | Missie 5 2024, November
Anonim
Slim interaktiewe verkeerslig
Slim interaktiewe verkeerslig

Klaar om die beste en mees interaktiewe verkeerslig ter wêreld te bou? Goed! In hierdie handleiding verduidelik ons hoe u self een kan bou met Arduino.

Vereiste komponente:- Arduino (..duh)- LM317 Mosfet- 2x 60cm analoog RGB LED-strokies (12V)- PVC-buis (1m x 125mm)- Kabels (rooi en swart)- Metaalplate vir ligdoppe- Akriel vir die lig -ikone (kyk flaticon.com vir.svg-ikone)- Spuitkan swart-en-wit verf.- Elektriese band- Alle vereiste soldeerkomponente- Vertoning met vereiste skild (word nie in die tutoriaal gebruik nie)

Stap 1: Stap 1: Maak die Light-caps

Stap 1: Maak die Light-caps
Stap 1: Maak die Light-caps

Die ontwerp is regtig aan jou. Ons het 'n doppie van 15 x 15 cm gemaak om die ligte vas te hou. Ons het die metaalplate in die regte grootte gesny en 'n metaalbender (nee, nie van Avatar nie) gebruik om die doppies in die regte vorm te buig. Die agterplate is gemaak van 'n ander komponent.

Stap 2: Stap 2: Berei die PVC -paal voor

Stap 2: Maak die PVC -paal gereed
Stap 2: Maak die PVC -paal gereed

Sny 2 gate in die PVC-paal om by die ligdoppe te pas. Gebruik dan 'n swart verfspuit om die hele ding swart te verf. As u wil, kan u wit strepe aan die onderkant van die paal voeg (algemeen in Nederland).

Stap 3: Stap 3: Monteer die RGB LED -strokies en skuur die akrielplate

Stap 3: Monteer die RGB LED -strokies en skuur die akrielplate
Stap 3: Monteer die RGB LED -strokies en skuur die akrielplate
Stap 3: Monteer die RGB LED -strokies en skuur die akrielplate
Stap 3: Monteer die RGB LED -strokies en skuur die akrielplate

Vervolgens moet u die RGB LED-stroke in die lampdop monteer. Sit dit styf om die pet en plaas dit so na as moontlik aan die voorkant.

Vervolgens moet u die geselekteerde simbool op die akrielplaat sandblaas. Kry plakband en bedek die hele akrielplaat. Knip dan die vorm/figuur uit wat u wil hê. Hierna kan u die bord sandblaas om 'n matglasagtige effek te kry.

Stap 4: Stap 4: Koppel die RGB LED Strips aan die Arduino

Stap 4: Koppel die RGB LED Strips aan die Arduino
Stap 4: Koppel die RGB LED Strips aan die Arduino

Nou kom die moeilike deel: die aansluiting van die RGB LED Strips op die Arduino. As u die penne verbind, moet u die 12v op die 12v van u strook plaas. Tussen elke kleur, so rooi of groen, moet jy 'n mosfet sit. Koppel die gegewens van die geleide strook aan die middelste pen van die mosfet en die linker pen aan u Arduino. Die regterpen moet teruggaan na die grond van die Arduino.

Stap 5: Stap 5: Skryf die Arduino -kode

Stap 5: Skryf die Arduino -kode neer
Stap 5: Skryf die Arduino -kode neer

Hierdie Arduino -kode word deur bluetooth beheer, omdat ons nie 'n interne skerm gebruik het nie. Die kode word dus beheer via bluetooth -boodskappe in die loop () -funksie.

#definieer r 6 #definieer g 11 #include

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

#definieer kwaadLengte 4

#definieer valLengte 3 #definieer gelukkigLengte 4 #definieer opTelefoonLengte 13 #definieer praatLengte 5 #definieer loopLengte 4 #definieer loopUitLengte 4 #definieer waaiLengte 6

bool knoppieGedruk;

int currentMillis; int vorigeMillis;

int animasie1Delay;

int animation2Delay; int animasie3Delay; int animasie4Delay;

bool animation1Done = vals;

bool animation2Done = vals; bool animation3Done = vals; bool animation4Done = vals; bool animasie5Done = vals;

bool blockLight = vals;

bool lightRed = waar;

int currentAnimationDelay;

ongeldige opstelling () {

// plaas u opstellingskode hier om een keer te hardloop: pinMode (r, OUTPUT); pinMode (g, UITGANG);

Serial.begin (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = vals; currentMillis = 0; vorigeMillis = 0;

animasie1Vertraging = loopLengte * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = waar; }

leemte -lus () {

// vertraging (20);

// sit u hoofkode hier om herhaaldelik uit te voer: ongetekende lang stroomMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animation1Delay) {Serial.println ("0"); vorigeMillis = currentMillis; animation1Done = waar; }} anders as (animation2Done == false en animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); vorigeMillis = currentMillis; animation2Done = waar; }} anders as (animation3Done == false en animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("klank:groen "); vorigeMillis = currentMillis; animation3Done = waar; lightRed = vals; }} anders as (animation4Done == false en animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = waar; Serial.println ("FLSH"); }}}

as (Serial.available ()) {

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

animation1Done = vals;

animation2Done = vals; animation3Done = vals; animation4Done = vals; animation5Done = vals;

animasie1Delay = walkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = waar; Serial.println ("3"); buttonPressed = waar; vorigeMillis = currentMillis; }

as (str == "ROOI") {

blockLight = vals; lightRed = waar; }

if (str == "GROEN") {

blockLight = vals; lightRed = vals; }

if (str == "LIG: GROEN: UIT") {

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

as (blockLight == false) {

as (lightRed == waar) {

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

Aanbeveel: