Binnen de schets is er een initialisatie code te omvatten van de servo-bibliotheek, Declareer variabelen, definiëren welke pinnen zijn in gebruik etc., en functies die worden genoemd binnen de servoCheck() voor het uitvoeren van de code die automatisch de servo's.
De volgende #include regel is de biggy. Het brengt in de slimme servo-code:
#include / / bevat standaard arduino servo klasse (de bibliotheek)
De volgende regel is het definiëren van een vertraging (5 milliseconden) zodat de servo is niet al te vaak worden aangepast. Met geen vertraging, de servo's zijn voortdurend wordt aangepast en dit kan leiden tot burn-out. Als de vertraging te lang, is echter de servo's worden schokkerig en traag reageren.
int delay_val = 5; de servo increment lag (vertraging tussen het toepassen van waarden) toegewezen voor beide servo 's
De servo-control is gebaseerd op analoge ingangssignalen in de vorm van variabele input spanningen, die de Arduino omgezet in digitale waarden (met andere woorden nummers!) en vervolgens de onderstaande code wordt gebruikt om te manipuleren van deze nummers en maken digitale uitgangen om te verplaatsen van de servo's bij de ingangen zijn gevarieerd. De code in de servo.h bibliotheek doet al het grunt werk. De code die u moet schrijven is echt heel eenvoudig gegevenswaarden sturen naar functies uit de bibliotheek te maken het allemaal gebeuren.
De input spanningen werden gemaakt met behulp van eenvoudige variabele weerstanden (potentiometers), één voor elke servo. Potentiometers (potten) zijn gemakkelijk te recycleren van oude elektrische kit, zoals oude radio's. De waarde van de weerstand is niet bijzonder belangrijk. Ze zijn meestal 0-10 k ohm. De levering van de twee Polen zijn aangesloten op de grond (aarde) en 5V respectievelijk voor elke pot, en de output signaal is aangesloten op een analoge pin van de Arduino.
Zie stap 10 voor het schakeldiagram. Het is heel eenvoudig.
Dit stukje verklaart de eerste servo...
SERVO 1
Servo myservo; maken van servo-object om te bepalen van een servo
Const int potPin1 = 0; verklaart welke analoge pin wordt gebruikt om de analoge variabele spanning uitgang van potentiometer 1 (besturingselementen servo 1)
int valPot1; variabele te lezen van de waarde van de analoge pin voor servo 1
EINDE SERVO 1
Dit stukje verklaart de tweede servo...
SERVO 2
Servo myservo2; tweede servo-object om te bepalen van een tweede servo maken
Const int potPin2 = 1; verklaart welke analoge pin wordt gebruikt om de analoge variabele spanning uitgang van potentiometer 2 (besturingselementen servo 2)
int valPot2; variabele te lezen van de waarde van de analoge pin voor servo 2
EINDE SERVO 2
SERVO 'S
VOID Setup {}
Zodra de servo's (myservo, myservo2) zijn verklaard, zijn de Arduino pin aansluitingen gedefinieerd:
koppelen van servo 's
myservo.attach(5); hecht de servo op pin 5 aan de servo-object
myservo2.attach(9); de tweede servo hecht aan pin 9 op tweede servo-object
}
Zodra de servo's zijn gedefinieerd, de 'servoCheck()' functie is gedefinieerd. Dit heet in de standaardfunctie van de Arduino 'Lus ()' om herhaaldelijk controleren voor ingangen en zetten deze uitgangen die controle van de servo's en vertalen dit verkeer eyeball.
ongeldig servoCheck() {}
Servo-besturingselementen
Servo 1---
valPot1 = analogRead(potPin1); leest de waarde van de potentiometer (waarde tussen 0 en 1023)
De variabele valPot1 neemt het ingangssignaal van een van de potentiomaters. De opdracht analogRead() wordt gebruikt voor dit. Het vertelt de Arduino te converteren van de ruwe analoge Ingangsspanning (binnen het bereik 0 tot en met 5 volt) naar een digitale waarde tussen 0 en 1023.
De servo-code moet input waarden tussen 0 en 179. Het zal deze waarden gebruiken om haar positie te stellen. een input van 0 posities het klosje servo-90 graden en 179 zal instellen op 90 graden. De nummerreeksen (0 - 1023 en 0-179) moeten worden geschaald. Dit wordt gedaan met behulp van de Arduino kaart () functie. Dit neemt de digitale waarden (0 tot 1023) geleverd door de analogRead() functie en hen wordt aangepast aan een getal tussen 0 een 179.
valPot1 = kaart (valPot1, 50, 1000, 0, 179); schaal om het te gebruiken met de servo (waarde tussen 0 en 180)
myservo.write(valPot1); stelt u de positie van de servo volgens de geschaalde waarde
delay(delay_val);
---servo 1 einde
Dit is hetzelfde voor de tweede servo
// servo 2 ------------------------
valPot2 = analogRead(potPin2); leest de waarde van de potentiometer (waarde tussen 0 en 1023)
digitalWrite (ledPinJoystick, hoge);
valPot2 = kaart (valPot2, 50, 1000, 179, 0); schaal om het te gebruiken met de servo (waarde tussen 0 en 180)
myservo2.write(valPot2); stelt u de positie van de servo volgens de geschaalde waarde
delay(delay_val);
---servo 2 einde
einde van de servo besturingselementen * /
}
En dat is alles wat die het is