STEAMPUNK STEAM GAUGE, drivs av ARDUINO (10 / 16 steg)
Steg 10: Elektronik - del 2: Arduino kod
Arduino skiss genererar slumpmässiga rörelsen genom att ha servo rotera för olika längder av tid. Skissen är aldrig slut; Det kommer att köras tills makt är avstängd till Arduino.
#include < servo .h > Servo myservo; skapa objekt för att styra en servo servo Ogiltiga inställningar) pinMode (led1, produktionen); PIN levererar power LED 1 pinMode (topButton, ingång); lyssna på signal från knappen Ogiltig loop) om (pos < 97) om (randpause > 2000) {digitalWrite (led3, hög);} om (timer > 90) {digitalWrite (led1, hög);} } / / end huvudloop
int led1 = 4; tilldela ledde till stift 4
int led2 = 5; tilldela ledde till stift 5
int led3 = 6; tilldela ledde till stift 6
int pos = 95. initial hastighet och riktning när Arduino startar
int timer = 0;
int paus = 100; inledande paus intervall i millisekunder
int stoptime = 100;
int randpause = 100;
int randspeed = 100;
int bbuttonState = 0;
int tbuttonState = 0;
int Hej;
int lo;
CONST int bottomButton = 2;
CONST int topButton = 1;
{
myservo. bifoga (3); tilldela servo kontroll tråd till stift 3
pinMode (led2, produktionen); PIN levererar ström till LED 2
pinMode (led3, produktionen); PIN levererar power LED 3
pinMode (bottomButton, ingång); lyssna på signal från knappen
}
{/ / start huvudloop
myservo. skriva (pos); ställa in servo hastighet/riktning till pos variabelns värde
tbuttonState = digitalRead (topButton); Läs statligt av den översta knappen
bbuttonState = digitalRead (bottomButton); Läs statligt av den nedersta knappen
om (bbuttonState == hög) / / om översta knappen intryckt
{newParameters (85, 93);} beräkna en hastighet i andra riktningen
om (tbuttonState == hög) / / om du trycker på botten buttom
{newParameters (96, 103);} beräkna en hastighet i andra riktningen
timer += 10. ökningsvärdet timer av 10
om (timer > = stoptime) //if kör tidsgränsen har uppnåtts,
{
myservo. skriva (95); stoppa servo
newParameters (80, 105); beräkna nya parametrar
fördröjning (randpause); paus för en slumpmässig tid
}
fördröjning (100); paus för 100 millisekunder
{digitalWrite (led2, hög);} ström på led2
annat
{digitalWrite (led2, låg);} Stäng av led2
annat {digitalWrite (led3, låg);}
annat {digitalWrite (led1, låg);}
void newParameters (int Hej, int lo) / / funktion för att beräkna ny hastighet/riktning, tid och paus
{
POS = random (Hej, lo); generera ny hastighet/riktning, inom hi och lo gränser
randpause = random (1000, 5000); Generera slumpmässiga paus mellan 1 och 5 sekunder
Pausa = 100;
timer = 0; ställa in timer till noll
StopTime = random (50, 200); Generera slumpmässiga tid att köra servo
}