Stap 6: toevoegen en configureren van de servo 's
Ik had op hand 3 servo's van een afstandsbediening niet gestarte project jaar geleden dus ik dacht dat dit zou de perfecte tijd om ze te gebruiken.
Futaba servo's zijn - alle drie zijn het soort dat gaan alleen zo ver in één richting dan stoppen.
Men had de 4-weg kop daarop hebben de andere twee cirkels gekoppeld.
Hopelijk biedt de foto's goed detail over wat ik over te beschrijven.
Ik had bij de hand wat witte plastic over 1/4" dik en 16" lange die ik 2 stroken van ongeveer 3/4" breed gesneden.
Deze die ik geboord door de gaten van de randen voor de kleine schroeven van de machine door. Ik denk dat ik vond deze kleine schroeven met enkele eindschakelaars ik van een overschot winkel kocht.
Ik geboord de gaten door middel van de servo hoofd mounts op hetzelfde moment, zodat de gaten zou line-up. Toen was het een kwestie van de montage van de servo's in de multiplex.
Monteren van de servo's in de multiplex, ik snij rechthoeken in het hout en geschroefd de servo's met enkele kleine schroeven. Ik denk dat ze schroeven van lichtschakelaars. het soort dat monteren van schakelaars en stopcontacten in hun Verdeeldozen.
Ik zet de servo's die zodanig zijn verdeeld uit elkaar dat de ruitenwissers bijna elk aanraken zou andere maar niet helemaal. Dan zodra de servo's waren, leg ik de bal gaten in plaats.
Ik heb geprobeerd om de positie van de gaten, zodat de servo "ruitenwissers" zou schep de bal in het gat.
Onder de gaten is ABS 2-inch plastic leidingen aan direct de ballen uit de zijkanten.
Hier is hoe ik de servo's hebt geconfigureerd.
1. klokt de servo 's
De servo's kunnen een aantal aanvaarden als een zekere mate van beurt.
Ik gebruikte de ingebouwde in servo bibliotheek voor de arduino http://www.arduino.cc/en/Reference/Servo
Dus om de klok hen, ik ze aangesloten op de arduino, en zet ze om naar 0 te gaan.
dan zet ik de wapens op zodat ze over de hele linie waren goed.
Wanneer de servo's macht ontvangt, lijken ze te bewegen zich-90 of sommige dergelijke. Ik kon niet bedenken waarom ze dit doen, maar ik wilde om er zeker van te zijn dat ze niet brandde zich omhoog omdat-90 maakt ze hun wapens tegen de muur duwen - Ik leg ze in de board van de verkeerde hoek. U moet de servo's klok vóór montage hen. Ik deed het tegenovergestelde...
2. stormloop naar de servo 's
Met behulp van de servo-bibliotheek, ik wilde te maken de ruitenwissers gedragen zich enigszins willekeurig, dus ik genereren een willekeurige mate van verkeer, een willekeurig getal om te beslissen welke wisser te verplaatsen, en een willekeurige vertraging te pauzeren tussen afveegt.
Tijdens de pauze-cyclus heb ik de code controleren alle input sensoren zodat als een bal in één van de twee sensored gaatjes gaat, de machine reageren zal-dit een handmatige poging tot een interrupt is.
Dus hier de code is ik ben momenteel met behulp van uitvoeren van de ruitenwissers. (dit is een uittreksel uit de algemene code)
#include
lange rndSrvoPos; variabele op te slaan van de servo positie
lange rndPause; willekeurige pauze tijd
lange whichServo; Kies welke servo te verplaatsen
Servo wiper1; eerste servo wisser-object
Servo wiper2; tweede servo wisser-object
VOID Setup
{
wiper1.attach(14); de servo op pin 14 hecht aan de servo-object
wiper2.attach(15); de servo op pin 14 hecht aan de servo-object
knipperen 3 keer aan opstarten
Blink3x();
}
void loop
{
de servo's een willekeurige vegen oplopen tot 80 graden
onderbreken van een willekeurige tijdsduur tussen 10 en 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, lange pos, int pauze)
{
Als (servoNum > = 50)
{
wiper1.write(POS);
} else {}
wiper2.write(POS);
}
voor (ik = 0; ik {}
ReadandReport();
Als (analogRead(impSensorPin) < 90) {StartMotor();}
ReadNailPin();
vertraging (1);
}
}
VOID Blink3x()
{
Cyclus van de Power On Self Test
wiper1.write(80);
wiper2.write(80);
}