Stap 17:
Code
#include
Servo Base;
Servo Joint1;
Servo Joint2;
Servo Grabber;
Const int analogInPin1 = a1 worden verkregen; Analoge invoer pin die de potentiometer is aangesloten op
Const int analogInPin2 = A2; Analoge invoer pin die de potentiometer is aangesloten op
Const int analogInPin3 = A3; Analoge invoer pin die de potentiometer is aangesloten op
Const int analogInPin4 = A4; Analoge invoer pin die de potentiometer is aangesloten op
int sensorValue1 = 0; waarde van de pot leest
int sensorValue2 = 0; waarde van de pot leest
int sensorValue3 = 0; waarde van de pot leest
int sensorValue4 = 0; waarde van de pot leest
VOID Setup {}
seriële communicatie 9600 bps te initialiseren:
Serial.begin(9600);
Base.attach(3);
Joint1.attach(4);
Joint2.attach(5);
Grabber.attach(6);
}
void loop {}
Lees de analoge waarde:
sensorValue1 = analogRead(analogInPin1);
sensorValue2 = analogRead(analogInPin2);
sensorValue3 = analogRead(analogInPin3);
sensorValue4 = analogRead(analogInPin4);
de resultaten naar de seriële monitor wilt afdrukken:
Serial.Print ("\nBase Joint:");
Serial.Print(sensorValue1);
Serial.Print ("Joint beneden =");
Serial.Print(sensorValue2);
Serial.Print ("bovenste Joint =");
Serial.Print(sensorValue3);
Serial.Print ("Grabber =");
Serial.Print(sensorValue4);
de resultaten worden toegewezen aan de parameter control servo
Base.write (kaart (sensorValue1, 150, 200, 500, 45));
Joint1.write (kaart (sensorValue2, 680, 300, 130, 50));
Joint2.write (kaart (sensorValue3, 800, 400, 30, 140));
Grabber.write (kaart (sensorValue4, 250, 320, 180, 80));
}
De bibliotheek control servo Servo.h is inbegrepen in onze code. Als onze code gaat alleen om eenvoudige functies, zal niet we gaan te diep in de basis van de taal.
Motie toewijzing mechanisme
Het mechanisme voor de toewijzing van beweging bestaat uit 3 stappen:
1. Lees de spanning over de weerstand van de analoge input pin. De lezing varieert van 0-1023, waarin 0-5v spanning proportioneel.
Code:
sensorValue1 = analogRead(analogInPin1);
sensorValue2 = analogRead(analogInPin2);
sensorValue3 = analogRead(analogInPin3);
sensorValue4 = analogRead(analogInPin4);
2. gebaseerd op de aanvankelijke richting van de servo, kaart de invoerwaarde die overeenkomt met de gewenste positie van de servo dienovereenkomstig.
3. Stuur de parameter position aan op de digitale uitgang pin om controle van de beweging van de servo.
Code:
Base.write (kaart (sensorValue1, 150, 200, 500, 45));
Joint1.write (kaart (sensorValue2, 680, 300, 130, 50));
Joint2.write (kaart (sensorValue3, 800, 400, 30, 140));
Grabber.write (kaart (sensorValue4, 250, 320, 180, 80));
De map() functie in de bovenstaande code wordt gebruikt om het lezen te wijzen aan de parameter van de hoek van de servo. XXX.write() functie wordt gebruikt om de toegewezen waarden verzenden de servo.
Kalibratie
Aangezien de positie-spanning-relatie kunnen ruwweg beschouwd als lineaire, een gemakkelijke manier om het instellen van de parameter mapping is te nemen van de analoge input lezingen op 2 verschillende posities (hier wij adviseren halverwege of eindpunten) en ze worden toegewezen aan de parameter van de servo-position.
Dienovereenkomstig, is onze eerste stap is om de controle arm de microcontroller door middel van een USB-kabel aansluiten, open het programma van de Arduino IDE, kopieer de code hierboven in het venster en uploaden naar de chip. Controleer of het juiste chip type en COM-poort is ingeschakeld.
Als alles goed gaat, kan de spanning van elke weerstand worden gelezen vanaf de seriële monitor. Zorg ervoor dat de seriële monitor is ingesteld op de juiste band tempo (9600 in ons geval).
Vervolgens plaatst u elk van de gezamenlijke op sommige bepaalde posities en lezen
de analoge input waarden van het serienummer controleren en wit hen neer. Vervolgens passen de servo arm om deze posities en nemen van positie parameters. Ten slotte, de input waarden toewijzen aan de servo-posities en verzenden deze waarden via digitale uitgang pinnen.
Spelen rond de toewijzing parameters krijgt u een beter resultaat van syncing beweging.
Om de juistheid ervan verder te verbeteren, kunnen we zelfs toevoegen meer posities als referentie en piecewise toewijzen.