STEAMPUNK STEAM GAUGE, drivs av ARDUINO (11 / 16 steg)
Steg 11: Elektronik del 3: logik flöde och kontrollera komponenter
SERVO KONTROLL
Här används ett lager kontinuerlig rotation servo, ansluten till Arduino i följande konfiguration.
** Obs: Kontroll tråd (vanligtvis gul eller brun) kan anslutas till någon Digital, i den här situationen som den är ansluten till Digital Pin 3.
Gränslägesbrytarna topp och botten är fast i den här konfigurationen.
Raden "#include < servo.h >" importerar servo biblioteket. Kontinuerlig rotation servon är anslutna till Arduino i samma konfiguration som standard servon, men koden för att kontrollera dem är något annorlunda. Standard servon styrs genom att leverera en absolut position (e.g. "position = 124"), men kontinuerlig rotation servon tolka värdena för position som hastighet och riktning. CR servo var kalibrerad för att tolka 95 som stopp, med 0 som full hastighet medurs och 180 så full fart moturs. I själva verket är något värde större än 10 från stopp i endera riktningen full hastighet (dvs. värden mindre än 80 och större än 100 generellt inte kommer att öka hastigheten på servo i endera riktningen).
I denna skiss genereras slumpmässiga värden för hastighet och riktning i intervallet 80-105. Detta sker i funktionen "newParameters" (efter den viktigaste loopen).
RANDOMISERA RÖRELSE
Förutom att generera en slumpmässig hastighet och riktning, kommer att koden också generera ett slumpmässigt intervall att köra på det
hastighet/riktning.
Områden för dessa slumpmässigt genererade värden är:
Hastighet/riktning: 80 – 105
Paus: 1000-5000ms
Körtid:.5 - 2,0 sekunder, effektivt
MED KODEN LOOPAR SOM EN TIMER
Arduino kod ("skisser") är baserade på kontinuerligt looping instruktioner (den "Ogiltig loop()"). I själva verket Arduino kommer att köras genom öglan nästan omedelbart, till detta, en 100 millisekunden "delay" kommandot lades i slutet av slingan koden. Detta kommer att effektivt begränsa koden till looping ca 10 gånger per sekund. "Timer" värdet på varje pass genom öglan, körtid kan spåras genom uppräkning. Med en ökningsvärdet 10 och en gräns på 50, kommer koden loop i ca en halv sekund. När max tidsvärde nås, hastigheten är inställd på "dead stop" och en paus timern startas. Paus är ett annat slumpmässigt genererat värde.
GRÄNSLÄGESBRYTARE
Gränslägesbrytarna är anslutna till digitala stift 1 & 2. När antingen gränslägesbrytaren är kontaktad, är hastighet/riktning omedelbart värdet "dead stop". Sedan beräknas en ny uppsättning hastighet/riktning, körning och pausa värden, men intervallet hastighet/riktningen är begränsad till rörelse i motsatt riktning.
Lysdioder
Lamporna var trådbunden upp utifrån denna konfiguration. Kabeldragning för lysdioder är död enkel, tricken är kontrollerande makt till dem i skissen baserat på en separat händelse, till exempel en timer eller en switch.
Lysdioderna är inbäddade i ratten ansiktet och utlöses av de värden som genereras för hastighet/position, pausa och körning.
Här koden beckasin kommer att slå på en LED om värdet av randpause > 2000, annars blir det bort.
om (randpause > 2000) {digitalWrite (led3, hög);}
annat {digitalWrite (led3, låg);}