Stap 10: Elektronica - deel 2: Arduino code
De Arduino schets genereert willekeurige beweging door het hebben van de servo roteren voor verschillende lengtes van tijd. De schets is nooit eindigt; het zal lopen tot macht is sluit af aan de Arduino.
#include < servo .h > Servo myservo; maken van servo-object om te bepalen van een servo void setup) pinMode (led1, OUTPUT); PIN levert macht op LED 1 pinMode (topButton, INPUT); Luister naar signaal van knop Als (timer > 90)
int led1 = 4; toewijzen leidde tot pin 4
int led2 = 5; toewijzen leidde tot pin 5
int led3 = 6; toewijzen leidde tot pin 6
int pos = 95; beginsnelheid en richting zodra Arduino
int timer = 0;
int pauze = 100; eerste pauze interval, in milliseconden
int stilstaan = 100;
int randpause = 100;
int randspeed = 100;
int bbuttonState = 0;
int tbuttonState = 0;
int Hallo;
int lo;
Const int bottomButton = 2;
Const int topButton = 1;
{
myservo. koppelen (3); toewijzen van servo control draad naar pin 3
pinMode (led2, OUTPUT); PIN levert power LED 2
pinMode (led3, OUTPUT); PIN levert power LED 3
pinMode (bottomButton, INPUT); Luister naar signaal van knop
}
void loop)
{/ / hoofdlus starten
myservo. schrijven (pos); servo snelheid/richting instellen op de waarde van de variabele pos
tbuttonState = digitalRead (topButton); Lees de stand van de bovenste knop
bbuttonState = digitalRead (bottomButton); Lees de stand van de onderste knop
Als (bbuttonState == HIGH) / / als de bovenste knop ingedrukt
{newParameters (85, 93);} Bereken een snelheid in de andere richting
Als (tbuttonState == HIGH) / / als de onderkant van de onderste ingedrukt
{newParameters (96, 103);} Bereken een snelheid in de andere richting
timer += 10; interval timer waarde per 10
Als (timer > = stilstaan) //if uitvoeren tijdslimiet is bereikt,
{
myservo. schrijven (95); Stop servo
newParameters (80, 105); nieuwe parameters berekenen
vertraging (randpause); pauze voor een willekeurige tijd
}
vertraging (100); pauze voor 100 milliseconden
Als (pos < 97)
{digitalWrite (led2, hoge);} macht op led2
anders
{digitalWrite (led2, laag);} stroom uit led2
Als (randpause > 2000)
{digitalWrite (led3, hoge);}
else {digitalWrite (led3, laag);}
{digitalWrite (led1, hoge);}
else {digitalWrite (led1, laag);}
} / / einde van de hoofdlus
VOID newParameters (int Hallo, int lo) / / functie voor het berekenen van de nieuwe snelheid/richting, tijd en pauze
{
POS = willekeurige (hi, lo); genereren nieuwe snelheid/richting, binnen hi en lo grenzen
randpause = willekeurige (1000, 5000); genereren van willekeurige pauze tussen 1 en 5 seconden
onderbreken = 100;
timer = 0; timer op nul instellen
StopTime = willekeurige (50, 200); genereren van willekeurige tijd uitvoeren van servo
}