PuttDuino putt-putt hål med arduino (6 / 11 steg)
Steg 6: bifoga och konfigurera servon
Jag hade på hand 3 servon från ett icke-igång fjärrkontrollen projekt år sedan så jag trodde detta skulle vara en perfekt tid att använda dem.
De är futaba servo - alla tre är det slag som gå bara så långt i en riktning sedan stoppa.
Hade en 4-vägs huvud på det de andra två har ringar bifogas.
Bilder kommer förhoppningsvis ge bra detalj om vad jag ska beskriva.
Jag hade på hand lite vit plast om 1/4" tjock och 16" lång som jag skär 2 remsor från ca 3/4" bred.
Dessa jag borrade genom kanter hål för de lilla maskinen skruvar att passa genom. Jag tror jag hittat dessa små skruvar med några Gränslägesbrytare som jag köpte från en överskott butik.
Jag borrade hål genom servo huvudet monteras på samma gång så att hålen skulle rada upp. Då var det en fråga om montering servon i plywood.
För att montera servon i plywood, jag skar rektanglar i trä och skruvas servon med några små skruvar. Jag tror de är skruvarna från strömbrytare. det slag som montera växlar och försäljningsställen i deras kopplingsdosor.
Jag lade servon placerade isär så att torkarna skulle nästan röra alla andra men inte riktigt. Sedan när servon var i, satte jag bollen hålen på plats.
Jag försökte placera hålen så att servo "torka" skulle ösa bollen i hålet.
Under hålen är ABS 2-tum plast rör direkt bollarna ut sidorna.
Här är hur jag konfigurerat servon.
1. klockning servon
Servon kan acceptera flera som en viss tur.
Jag använde den inbyggda i servo bibliotek för arduino http://www.arduino.cc/en/Reference/Servo
Så för att stämpla dem, jag kopplade dem till arduino och Ställ dem att gå till 0.
sedan satte jag armarna på så att de var pekar över hela linjen.
När servon får makt, verkar de flytta sig till-90 eller något sådant. Jag kunde inte lista ut varför de gör detta men jag ville vara säker på att de inte bränna sig upp eftersom -90 gör dem driva sina armar mot väggen - jag lade dem i styrelsen i fel vinkel. Du bör klocka servon innan du monterar dem. Jag gjorde tvärtom...
2. kör servon
Med hjälp av servo biblioteket, jag ville göra torkarna beter sig något slumpmässigt, så jag generera en slumpmässig grad av rörlighet, ett slumptal att besluta vilka torkar att flytta, och en slumpmässig fördröjning att pausa mellan våtservetter.
Under paus cykel har jag koden kontrollera alla ingående sensorer så att om en boll går i en av de två sensored hålen, maskinen kommer att reagera - detta är ett manuell försök till ett avbrott.
så här är koden använder jag att köra torkarna. (detta är ett utdrag från den övergripande kod)
#include
lång rndSrvoPos; variabel att lagra servo position
lång rndPause; Random paus tid
lång whichServo; Välj vilken servo att flytta
Servo wiper1; första servo torkar objekt
Servo wiper2; andra servo torkar objektet
void setup()
{
wiper1.attach(14); tillmäter objektet servo servo på stift 14
wiper2.attach(15); tillmäter objektet servo servo på stift 14
blinka 3 gånger att ange start
Blink3x();
}
void loop()
{
sopa servon ett slumpmässigt belopp upp till 80 grader
pausa en slumpmässig tidsperiod från mellan 10 och 250 ms
rndSrvoPos = random(0,22);
rndPause = random(250,500);
whichServo = random(100);
MoveServo(whichServo,0,rndPause);
MoveServo(whichServo,80,rndPause);
}
void MoveServo (int servoNum, lång pos, int paus)
{
om (servoNum > = 50)
{
wiper1.write(POS);
} annat {
wiper2.write(POS);
}
för (jag = 0; jag {
ReadandReport();
om (analogRead(impSensorPin) < 90) {StartMotor();}
ReadNailPin();
fördröjning (1).
}
}
void Blink3x()
{
Power On Self Test cykel
wiper1.write(80);
wiper2.write(80);
}