Kazalo:

Pametni interaktivni semafor: 5 korakov (s slikami)
Pametni interaktivni semafor: 5 korakov (s slikami)

Video: Pametni interaktivni semafor: 5 korakov (s slikami)

Video: Pametni interaktivni semafor: 5 korakov (s slikami)
Video: OPASNE KRIVINE 03 - DR VLADIMIR JEVTIĆ - Šta uče MOTOCIKLISTI u auto-školi⁉ 2024, November
Anonim
Pametni interaktivni semafor
Pametni interaktivni semafor

Ste pripravljeni na izgradnjo najboljšega in najbolj interaktivnega semaforja na svetu? Dobro! V tej vadnici vam bomo razložili, kako lahko sami zgradite Arduino.

Potrebne komponente:- Arduino (..duh)- LM317 Mosfet- 2x 60 cm analogni RGB LED trakovi (12V)- PVC cev (1m x 125 mm)- kabli (rdeči in črni)- kovinske plošče za svetlobne kape- akril za svetlobo -ikoni (poiščite ikone.svg na flaticon.com)- črno-bela barva Spraycan.- električni trak- vse potrebne komponente za spajkanje- zaslon z zahtevanim ščitnikom (v vadnici se ne uporablja)

1. korak: 1. korak: Naredite kapice za svetlobo

1. korak: Naredite kapice za svetlobo
1. korak: Naredite kapice za svetlobo

Oblikovanje je res odvisno od vas. Naredili smo pokrovček 15x15 cm, ki drži luči. Kovinske plošče smo razrezali na pravilno velikost in uporabili kovinski upogib (ne, ne iz Avatarja), da smo pokrovčke upognili v prave oblike. Zadnje plošče so bile izdelane iz različnih komponent.

2. korak: 2. korak: Priprava PVC stebra

2. korak: Priprava PVC stebra
2. korak: Priprava PVC stebra

V PVC stebru izrežite 2 luknji, da se prilegata svetlobnim pokrovom. Nato s črno barvo razpršite, da celotno stvar pobarvate v črno. Če želite, lahko na dno stebra dodate bele črte (običajno na Nizozemskem).

3. korak: 3. korak: Sestavljanje LED trakov RGB in peskanje akrilnih plošč

Korak 3: Sestavljanje LED trakov RGB in peskanje akrilnih plošč
Korak 3: Sestavljanje LED trakov RGB in peskanje akrilnih plošč
3. korak: Sestavljanje LED trakov RGB in peskanje akrilnih plošč
3. korak: Sestavljanje LED trakov RGB in peskanje akrilnih plošč

Nato morate sestaviti RGB LED trakove znotraj pokrova luči. Tesno jih namestite okoli pokrovčka in jih postavite čim bližje spredaj.

Nato morate na akrilni plošči peskati izbrani simbol za. Vzemite nekaj traku in pokrijte celotno akrilno ploščo. Nato izrežite želeno obliko/figuro. Po tem lahko ploščo peskate, da dobite učinek, podoben matiranemu steklu.

Korak 4: Korak 4: Priključite LED trakove RGB na Arduino

Korak: Priključite LED trakove RGB na Arduino
Korak: Priključite LED trakove RGB na Arduino

Zdaj prihaja težaven del: povezovanje LED trakov RGB z Arduinom. Ko priključujete zatiče, se prepričajte, da ste 12v postavili na 12v vašega traku. Med vsako barvo, tako rdečo ali zeleno, morate postaviti MOSFET. Priključite podatke LED traku na srednji zatič MOSFET -a, levi pa na Arduino. Desni zatič se mora vrniti na tla Arduina.

5. korak: 5. korak: Napišite kodo Arduino

5. korak: Napišite kodo Arduino
5. korak: Napišite kodo Arduino

To kodo Arduino nadzira bluetooth, ker nismo uporabljali notranjega zaslona. Tako se koda nadzira prek bluetooth sporočil v funkciji loop ().

#define r 6 #define g 11 #include

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

#define angryLength 4

#define fallLength 3 #define happyLength 4 #define onPhoneLength 13 #define talkLength 5 #define walkingLength 4 #define walkingOutLength 4 #define wavingDolžina 6

bool gumbPritisnjen;

int currentMillis; int previousMillis;

int animation1Delay;

int animacija2Delay; int animacija3Delay; int animacija4Delay;

bool animation1Done = false;

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

bool blockLight = false;

bool lightRed = res;

int currentAnimationDelay;

void setup () {

// tukaj vstavite nastavitveno kodo, ki jo želite zagnati enkrat: pinMode (r, OUTPUT); pinMode (g, OUTPUT);

Serial.begin (9600);

mySerial.begin (38400); Serial.setTimeout (25); buttonPressed = false; currentMillis = 0; prejšnjiMillis = 0;

animation1Delay = walkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = res; }

void loop () {

// zakasnitev (20);

// vnesite svojo glavno kodo sem, da se zažene večkrat: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animacija1Delay) {Serial.println ("0"); previousMillis = trenutniMillis; animacija1Done = res; }} else if (animation2Done == false in animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = trenutniMillis; animacija2Done = res; }} else if (animation3Done == false in animation2Done == true) {if (currentMillis - previousMillis> animation3Delay) {Serial.println ("2"); //Serial.println("sound:green "); previousMillis = trenutniMillis; animacija3Done = res; lightRed = false; }} else if (animation4Done == false in animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animacija4Done = res; Serial.println ("FLSH"); }}}

if (Serial.available ()) {

Niz str = Serial.readString (); if (str == "CMD: BUTTON_PRESSED") {

animation1Done = false;

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

animation1Delay = walkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = res; Serial.println ("3"); buttonPressed = res; previousMillis = trenutniMillis; }

if (str == "RDEČA") {

blockLight = false; lightRed = res; }

if (str == "ZELENO") {

blockLight = false; lightRed = false; }

if (str == "LUČ: ZELENO: IZKLOPLJENO") {

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

if (blockLight == false) {

if (lightRed == true) {

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

Priporočena: