Stap 8: De code
Om het schrijven van code voor arduino, moet je de arduino IDE (download het hier)Mij ben using de voorstelling 1.0.5, maar zorg ervoor om te Selecteer de juiste COM-poort (windows) en type uit binnen de IDE aan boord, en gebruik vervolgens de onderstaande code en klap uploaden.
Opmerking: De waarden die ik in de code instellen van de maximale uitwijking van de servo's gebruikt worden gemaakt precies voor dit vak in aanmerking nemen van de servo's positionering, as en hoeken. Ik heb dit proces. Zo moet u ontwerpen van uw eigen waarden volgens uw vak en servo plaatsing.
Ter referentie plaatsvinden onder de min/max-waarden die ik voor elke servo gebruikte zoals u dat ze zien zult in de code:
De deur:
80 verbergen, open 155 volledig
De hand:
0 verbergen, 129 duwen op switch
Hier is de code (beter te downloaden van het bestand gekoppeld aan deze stap in plaats van kopiëren/plakken uit de onderstaande lijst):
#include < Servo.h > int switch_pin = 2; set schakelaar op pin 2 motor variabelen int pos = 0; VOID Setup void loop } Bibliotheek van bewegingen elementaire beweging
Servo doorServo;
Servo handServo;
int motorThrottle = 11;
int motorDirection = 13;
int motorrem = 8;
int selectedMove = 0; verplaatsen van selector
int Testmove = 0; test modus: ingesteld op het nummer voor het testen van slechts één geselecteerde beweging verplaatsen
(ingesteld op nul te lopen normaal dwz: roundrobbin op amm beweegt)
{
Serial.begin(9600);
pinMode (switch_pin, INPUT);
doorServo.attach(9); deur servo ingesteld op Pin 9 pwm
handServo.attach(10); hand servo ingesteld op Pin 10 pwm
doorServo.write(80); set deur verstopt positie
handServo.write(0); set hand standpunt verstopt
Kanaal B, Setup (omdat kanaal A is voorbehouden door de deur en hand servo's en kan niet ber gebruikt op hetzelfde moment)
pinMode (motorDirection, OUTPUT); Ingewijden Motor kanaal B pin
pinMode (motorrem, OUTPUT); Ingewijden rem kanaal B pin
}
{
Als (Testmove! = 0) {}
selectedMove = Testmove;
}
Als de schakelaar ingeschakeld is, dan deur en hand uit te schakelen het verplaatsen...
if(digitalRead(switch_pin) == HIGH)
{
Als (selectedMove > 10) {selectedMove = 0;} //when alle bewegingen worden gespeeld, herhaal de bewegingen vanaf begin
Hieronder staan alle "bewegingen" Ik heb tot nu toe ontworpen, elk is een functie die is geschreven onder in de code, execuse de namen, abit vreemd? Ja zoals sommigen zijn geschreven in arabic
Als (selectedMove == 0) {switchoff();}
else if (selectedMove == 1) {switchoff();}
else if (selectedMove == 2) {switchoffbitaraddod();}
else if (selectedMove == 3) {crazydoor();}
else if (selectedMove == 4) {crazyslow();}
else if (selectedMove == 5) {m7anika7anika();}
else if (selectedMove == 6) {m3alla2();}
else if (selectedMove == 7) {switchoff();}
else if (selectedMove == 8) {matrix();}
else if (selectedMove == 9) {sneak();}
else if (selectedMove == 10) {zee7();}
Als (Testmove == 0) {}
selectedMove ++; Swith naar volgende stap, zo niet in testmodus
}
}
VOID switchoff()
{
Bewegende deur
voor (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
Bewegende hand
voor (pos = 0; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}
verbergen van de hand
voor (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
delay(15);
}
}
verplaatsen van 3: open en wacht, dan verplaatsen van hand en wacht, dan schakelen van en verbergen
VOID switchoffbitaraddod()
{
Bewegende deur
voor (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(800);
Bewegende hand
voor (pos = 0; pos < 100; pos = 4)
{
handServo.write(pos);
delay(15);
}
delay(1000);
voor (pos = 100; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}
verbergen van de hand
voor (pos = 129; pos > = 0; pos-= 5)
{
handServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
delay(15);
}
}
verplaatsen van 4: open deur dan sluit het vele malen, wachten, dan snel reoprn een nd-schakelaar uit en verbergen.
VOID crazydoor()
{
Bewegende deur
voor (pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 125; pos > = 80; pos-= 5)
{
doorServo.write(pos);
delay(15);
}
Bewegende deur
voor (pos = 80; pos < 110; pos = 3)
{
doorServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 110; pos > = 80; pos-= 15)
{
doorServo.write(pos);
delay(15);
}
delay(700);
Bewegende deur
voor (pos = 80; pos < 125; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(700);
verbergen van deur
voor (pos = 125; pos > = 80; pos-= 5)
{
doorServo.write(pos);
delay(15);
}
---voor de switch van---/ /
Bewegende deur
voor (pos = 80; pos < 155; pos = 8)
{
doorServo.write(pos);
delay(15);
}
Bewegende hand
voor (pos = 0; pos < 129; pos = 3)
{
handServo.write(pos);
delay(15);
}
verbergen van de hand
voor (pos = 129; pos > = 0; pos-= 3)
{
handServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 155; pos > = 80; pos-= 15)
{
doorServo.write(pos);
delay(15);
}
}
verplaatsen van 5: open deur, verplaats hand heel langzaam vooruit en terug naar verbergen heel langzaam, dan snel de deur dicht
VOID crazyslow()
{
Bewegende deur
voor (pos = 80; pos < 155; pos = 1)
{
doorServo.write(pos);
delay(30);
}
Bewegende hand
voor (pos = 0; pos < 129; pos = 1)
{
handServo.write(pos);
delay(30);
}
verbergen van de hand
voor (pos = 129; pos > = 0; pos-= 1)
{
handServo.write(pos);
delay(30);
}
verbergen van deur
voor (pos = 155; pos > = 125; pos-= 1)
{
doorServo.write(pos);
delay(30);
}
delay(100);
voor (pos = 125; pos > = 80; pos-= 4)
{
doorServo.write(pos);
delay(15);
}
}
6 verplaatsen:
ongeldig m7anika7anika() {}
Bewegende deur
voor (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
Bewegende hand
voor (pos = 0; pos < 70; pos = 1)
{
handServo.write(pos);
delay(15);
}
delay(800);
verbergen van deur
voor (pos = 155; pos > 130; = pos-= 3)
{
doorServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 130 pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 155; pos > 130; = pos-= 3)
{
doorServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 130 pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
handServo.write(40);
delay(1000);
Bewegende hand
voor (pos = 40 pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}
verbergen van de hand
voor (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
delay(15);
}
voor (pos = 120; pos > = 80; pos-= 1)
{
doorServo.write(pos);
delay(15);
}
}
ongeldig m3alla2() {}
Bewegende deur
voor (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
Bewegende hand
voor (pos = 0; pos < 127; pos = 4)
{
handServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 155; pos > 130; = pos-= 3)
{
doorServo.write(pos);
delay(15);
}
delay(2000);
voor (pos = 130 pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
voor (pos = 155; pos > = 140; pos-= 3)
{
doorServo.write(pos);
delay(15);
}
voor (pos = 140 pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(500);
verbergen van de hand
voor (pos = 127; pos > = 0; pos-= 4)
{
handServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
delay(15);
}
}
VOID matrix()
{
Bewegende deur
voor (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
Bewegende hand
voor (pos = 0; pos < 80; pos = 4)
{
handServo.write(pos);
delay(15);
}
voor (pos = 80; pos < 129; pos = 1)
{
handServo.write(pos);
delay(30);
}
delay(300);
voor (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
delay(10);
}
verbergen van deur
voor (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
delay(15);
}
}
VOID sneak()
{
Bewegende deur
voor (pos = 80; pos < 130; pos = 1)
{
doorServo.write(pos);
delay(30);
}
delay(2000);
Bewegende hand
voor (pos = 0; pos < 40 pos = 1)
{
handServo.write(pos);
delay(30);
}
delay(500);
voor (pos = 130 pos < 155; pos = 4)
{
doorServo.write(pos);
delay(15);
}
delay(100);
voor (pos = 40 pos < 90; pos = 4)
{
handServo.write(pos);
delay(15);
}
delay(500);
verbergen van de hand
voor (pos = 90; pos > = 70; pos-= 4)
{
handServo.write(pos);
delay(15);
}
delay(100);
voor (pos = 70 pos < 90; pos = 4)
{
handServo.write(pos);
delay(15);
}
delay(100);
voor (pos = 90; pos > = 70; pos-= 4)
{
handServo.write(pos);
delay(15);
}
delay(100);
voor (pos = 70 pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}
voor (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
delay(15);
}
}
VOID zee7()
{
Bewegende deur
voor (pos = 80; pos < 155; pos = 3)
{
doorServo.write(pos);
delay(15);
}
delay(2000);
@ halve snelheid naar links doorsturen
digitalWrite (motorDirection, laag); Bepaalt de richting van kanaal B
digitalWrite (motorrem, laag); Losraken van de rem voor kanaal B
analogWrite (motorThrottle, 100); Draait de motor op Channel B op volle snelheid
delay(300);
digitalWrite (motorrem, hoge); Eengage de rem voor kanaal B
delay(2000);
achterwaartse @ halve snelheid naar rechts
digitalWrite (motorDirection, hoge); Stelt LINKSAF richting van kanaal B
digitalWrite (motorrem, laag); Losraken van de rem voor kanaal B
analogWrite (motorThrottle, 100); Draait de motor op Channel B op halve snelheid
delay(300);
digitalWrite (motorrem, hoge); Eengage de rem voor kanaal B
delay(1000);
Bewegende hand
voor (pos = 0; pos < 129; pos = 4)
{
handServo.write(pos);
delay(15);
}
verbergen van de hand
voor (pos = 129; pos > = 0; pos-= 4)
{
handServo.write(pos);
delay(15);
}
verbergen van deur
voor (pos = 155; pos > = 80; pos-= 3)
{
doorServo.write(pos);
delay(15);
}
}