Stap 4: De code
Ik begon met het servo sweep voorbeeld en toegevoegd aan het.
Vegen
door BARRAGAN < http://barraganstudio.com>
Deze voorbeeldcode is in het publieke domein.
gewijzigd op 4/11 c. dubois
Gemaakt van een snoep-server vanaf een grote plastic ei
idee:
IR-sensor zal vertellen wanneer een hand bereikt voor het ei en zal
signaal servo te openen van het ei.
shift register wordt gebruikt voor het doen van een LED-achtervolging als het ei wordt geopend
//
updates
v3 - 4/24/11 routines om LEDS te jagen voortdurend toevoegen
#include < Servo.h >
afstandssensor
int sensePin = 0;
Servo
Servo myservo; maken van servo-object om te bepalen van een servo
maximaal acht servo-objecten kan worden gemaakt
int pos = 0; variabele op te slaan van de servo positie
74HC595 shift register
Pin verbonden met ST_CP van 74HC595
int latchPin = 8;
Pin verbonden met SH_CP van 74HC595
int clockPin = 12;
Pin verbonden met DS van 74HC595
int dataPin = 11;
andere variabelen
int ledToDisplay;
int posServo;
lange previousMillis = 0; laatste keer Chase werd bijgewerkt zal slaan
de follow-variabelen is een Long-waarde, omdat de tijd, in miliseconden, gemeten
snel zal uitgegroeid tot een groter aantal dan kan worden opgeslagen in een int.
lange interval = 1000; interval waartegen knipperen (milliseconden)
VOID Setup
{
set pennen uitgang zodat u de verschuiving bepalen kunt registreren
pinMode (latchPin, OUTPUT);
pinMode (clockPin, OUTPUT);
pinMode (dataPin, OUTPUT);
Serial.begin(9600);
myservo.attach(9); de servo op pin 9 hecht aan de servo-object
}
void loop
{
Lees de sensor
steeds dicht, thwn wilt openen van het ei en de leds te starten.
LEDs zullen blijven achtervolgen totdat ei sluit
int val = analogRead(sensePin);
Serial.println (val, DEC);
kaart van de val naar een servo positie - pos
int val = analogRead(0);
POS = kaart (val, 0, 1023, 0, 100);
Open ei en draai op de LEDs als nauwe
if(Val > 225)
{
// 2. openen van ei
posServo = 0;
voor (posServo = 0; posServo < 24; posServo += 1) / / gaat van 0 graden tot 65 graden
{
chase te houden
runChase();
servo verplaatsen
myservo.write(posServo); open top, 4 seconden wachten, sluiten boven en wacht 5 seconden
delay(25);
}
uitvoeren van een lus 3 seconden ingedrukt om te voorkomen dat met behulp van vertraging
voor (lange xx = 0; xx < = 200000; xx ++) {}
chase te houden
runChase();
}
Sluit het deksel
voor (posServo = 24; posServo > = 0; posServo-= 1) / / gaat van 0 graden tot 65 graden
{
chase te houden
runChase();
servo verplaatsen
myservo.write(posServo); dan kan weer lezen
delay(25);
}
}
anders
{
myservo.write(0); servo naar positie in de variabele 'pos' vertellen
delay(25);
}
}
mijn functies
VOID ledChase)
{
// 1. Chase leds
voor (int n = 1; n < 9; n++ ) {
ledToDisplay = pow(2,n);
Neem dus de lage latchPin
de LED's wijzigen niet terwijl u in bits verzendt:
Serial.println(n);
Serial.println(ledToDisplay);
delay(1500);
digitalWrite (latchPin, laag);
verschuiving van de bits:
shiftOut (dataPin, clockPin, MSBFIRST, ledToDisplay);
Neem de hendel pin hoog zodat de LEDs zullen oplichten:
digitalWrite (latchPin, hoge);
onderbreken voordat de volgende waarde:
delay(50);
}
nu terug in de andere richting jagen
voor (int n = 1; n < 9; n++ ) {
ledToDisplay = pow(2,n);
Neem dus de lage latchPin
de LED's wijzigen niet terwijl u in bits verzendt:
Serial.println(n);
Serial.println(ledToDisplay);
delay(1500);
digitalWrite (latchPin, laag);
verschuiving van de bits:
shiftOut (dataPin, clockPin, LSBFIRST, ledToDisplay);
Neem de hendel pin hoog zodat de LEDs zullen oplichten:
digitalWrite (latchPin, hoge);
onderbreken voordat de volgende waarde:
delay(50);
}
}
VOID runChase)
{
unsigned long currentMillis = millis();
Als (currentMillis - previousMillis > interval) {}
ledChase();
previousMillis = currentMillis;
}
}