INHOUDSOPGAWE:
Video: Slim interaktiewe verkeerslig: 5 stappe (met foto's)
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
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
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
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
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
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
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); }}}