Sadržaj:

Pametni interaktivni semafor: 5 koraka (sa slikama)
Pametni interaktivni semafor: 5 koraka (sa slikama)

Video: Pametni interaktivni semafor: 5 koraka (sa slikama)

Video: Pametni interaktivni semafor: 5 koraka (sa slikama)
Video: Pažljivko crtani film epizoda 1 2024, Studeni
Anonim
Pametni interaktivni semafor
Pametni interaktivni semafor

Spremni za izradu najboljeg i najinteraktivnijeg semafora na svijetu? Dobro! U ovom ćemo vodiču objasniti kako ga možete sami izgraditi pomoću Arduina.

Potrebne komponente:- Arduino (..duh)- LM317 Mosfet- 2x 60 cm analogne RGB LED trake (12V)- PVC cijev (1m x 125 mm)- Kabeli (crveni i crni)- Metalne ploče za svjetlosne kape- Akril za svjetlo -ikone (provjerite flaticon.com za.svg ikone)- Spraycan crno-bijela boja.- Električna traka- Sve potrebne komponente za lemljenje- Zaslon sa potrebnim štitom (ne koristi se u vodiču)

Korak 1: Korak 1: Napravite kapice za svjetlo

Korak 1: Napravite svjetlosne kapice
Korak 1: Napravite svjetlosne kapice

Dizajn doista ovisi o vama. Napravili smo kapu dimenzija 15x15 cm koja drži svjetla. Izrezali smo metalne ploče na ispravnu veličinu i upotrijebili metalni savijač (ne, ne iz Avatara) da savijemo kape u pravim oblicima. Stražnje ploče izrađene su od različite komponente.

Korak 2: Korak 2: Priprema PVC stupa

Korak 2: Priprema PVC stupa
Korak 2: Priprema PVC stupa

Izrežite 2 rupe na PVC stupu kako biste prilagodili poklopce svjetla. Zatim upotrijebite sprej sa crnom bojom da cijelu boju ofarbate u crno. Ako želite, možete dodati bijele pruge na dnu stupa (uobičajeno u Nizozemskoj).

Korak 3: Korak 3: Sklapanje RGB LED traka i pjeskarenje akrilnih ploča

Korak 3: Sklapanje RGB LED traka i pjeskarenje akrilnih ploča
Korak 3: Sklapanje RGB LED traka i pjeskarenje akrilnih ploča
Korak 3: Sklapanje RGB LED traka i pjeskarenje akrilnih ploča
Korak 3: Sklapanje RGB LED traka i pjeskarenje akrilnih ploča

Zatim ćete morati sastaviti RGB LED trake unutar poklopca svjetla. Čvrsto ih pričvrstite oko čepa i postavite ih što bliže sprijeda.

Zatim ćete morati pjeskariti odabrani simbol za na akrilnoj ploči. Uzmite traku i prekrijte cijelu akrilnu ploču. Zatim izrežite željeni oblik/figuru. Nakon toga ploču možete pjeskariti kako biste dobili učinak poput matiranog stakla.

Korak 4: Korak 4: Spojite RGB LED trake na Arduino

Korak 4: Spojite RGB LED trake na Arduino
Korak 4: Spojite RGB LED trake na Arduino

Sada dolazi lukavi dio: povezivanje RGB LED traka s Arduinom. Kad spajate pinove, provjerite jeste li stavili 12v na 12v vaše trake. Između svake boje, tako crvene ili zelene, morate staviti MOSFET. Spojite podatke LED trake na srednji pin MOSFET -a, a lijevi na vaš Arduino. Desni pin mora se vratiti na tlo Arduina.

Korak 5: Korak 5: Napišite Arduino kod

Korak 5: Napišite Arduino kod
Korak 5: Napišite Arduino kod

Ovim Arduino kodom upravlja Bluetooth, jer nismo koristili unutarnji zaslon. Dakle, kod se kontrolira putem bluetooth poruka u 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 wavingLength 6

bool gumbPritisnut;

int currentMillis; int previousMillis;

int animacija1Delay;

int animation2Delay; int animacija3Delay; int animacija4Delay;

bool animation1Done = false;

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

bool blockLight = false;

bool lightRed = true;

int currentAnimationDelay;

void setup () {

// ovdje postavite svoj kôd za postavljanje, da biste ga jednom pokrenuli: pinMode (r, OUTPUT); pinMode (g, OUTPUT);

Serial.begin (9600);

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

animation1Delay = walkingLength * 1000;

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

// currentAnimationDelay = animation1Delay * 1000;

lightRed = istina; }

void loop () {{100} {101}

// odgoda (20);

// ovdje unesite svoj glavni kôd, za ponavljanje izvođenja: unsigned long currentMillis = millis (); if (buttonPressed == true) {if (animation1Done == false) {if (currentMillis - previousMillis> animacija1Delay) {Serial.println ("0"); previousMillis = trenutniMillis; animacija1Učinjeno = istina; }} else if (animation2Done == false i animation1Done == true) {if (currentMillis - previousMillis> animation2Delay) {Serial.println ("1"); previousMillis = trenutniMillis; animacija2Učinjeno = istina; }} else if (animation3Done == false i animation2Done == true) {if (currentMillis - previousMillis> animacija3Delay) {Serial.println ("2"); //Serial.println("sound:green "); previousMillis = trenutniMillis; animacija3Učinjeno = istina; lightRed = false; }} else if (animation4Done == false i animation3Done == true) {if (currentMillis - previousMillis> animation4Delay) {previousMillis = currentMillis; animation4Done = istina; Serial.println ("FLSH"); }}}

if (Serial.available ()) {

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

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 = istina; Serial.println ("3"); buttonPressed = true; previousMillis = trenutniMillis; }

if (str == "CRVENO") {

blockLight = false; lightRed = istina; }

if (str == "ZELENO") {

blockLight = false; lightRed = false; }

if (str == "SVJETLO: ZELENO: ISKLJUČENO") {

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

if (blockLight == false) {

if (lightRed == true) {

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

Preporučeni: