Barnvänliga PuppyDuino 0,31 (2 / 7 steg)
Steg 2: Låt oss wag vissa svans - Servo motorstyrning
Vad är en servo?
Servomotor standard hobby går inte runt och runt. Istället går det fram och tillbaka vilket är perfekt för styrning radiostyrda modellflygplan och viftande robotic hund svansar. Verksamheten slutet av ett servo är mer som en liten elektrisk arm som kan placeras snabbt och med viss precision genom ca 180 grader. Du kan behöva kontrollera specifikationen av din servo antingen på förpackningen eller ett datablad från tillverkaren att avgöra hur långt din roterar.
Tack vare Servo biblioteket i Arduino IDE vi behöver inte förstå hur detta fungerar internt, vi måste helt enkelt säga servo hur många grader att rotera och det lyder. Berätta din servo gå till 0 och det kommer att placera armen så långt medurs som det kan rotera. Om vi säger det 180 armen rör sig 180 grader moturs från noll. Om vi säger det positioner 135 it armen 135 grader moturs från noll. Alla mått är moturs från noll.
OK - låt oss experimentera!
Tejpa dina servomotor till ditt arbetsyta med splines redskap pekar uppåt. Dra en av lilla armarna över redskapet. Anslut den till Arduino som visas i diagrammet. Röd till 5V, svart eller brunt till marken och resterande tråd (vanligtvis vit eller Orange), till pin 9.
Ladda upp koden till din Arduino och titta på det gå. Prova att ändra siffrorna i programmet för att se vad som händer. GÖR inte överstiga den högsta ROTATION av din SERVO - 0 till 180 är oftast säkert.
tailTest1.ino
/*tailTest1.ino
ditt servo måste ansluta till
5V till röda tråd,
jordledning svart
PIN-9 till kontroll tråd (vit, gul eller orange)
*/
#include < Servo.h > / / detta import av Servo biblioteket
Servo servo; skapa Servo
void setup()
{
servo.attach(9); kontroll tråd fäster till pin 9
}
void loop()
{
bara några slumpmässiga flyttar Visa servo arbetar
servo.write(0);
Delay(1000);
servo.write(180);
Delay(1000);
servo.write(135);
Delay(1000);
servo.write(180);
Delay(1000);
servo.write(135);
Delay(1000);
servo.write(180);
Delay(1000);
servo.write(135);
Delay(1000);
servo.write(45);
Delay(1000);
servo.write(0);
Delay(1000);
}
Smidig flytta
Du skulle ha sett servo armen flytta tillbaka och tillbaka några gånger sedan tillbaka till noll position (om och om igen). Cool, men typ av en ryckig vifta även för en robot hund. Låt oss jämna att vifta ut lite genom att vrida 1 grad i taget med en liten 10 millisekund paus mellan drag.
tailTest2.ino
/*tailTest2.ino
ditt servo måste ansluta till
5V till röda tråd,
jordledning svart
PIN-9 för att styra tråd (eller PWM stift för att förstora)
*/
#include < Servo.h > //this import Servo biblioteket
Servo servo; skapa en Servo
int i; räknar med variabel
int höger = 135; rätta omfattningen av Wiklund
int vänster = 180; vänstra omfattningen av Wiklund
void setup()
{
servo.attach(9);
}
void loop()
{
sopa rätt till vänster en grad på på gång
för (jag = höger; jag < = vänster; i ++)
{
servo.write(i);
Delay(10);
}
Svep vänster till höger en grad på på gång
för (jag = vänster; jag > = höger; i--)
{
servo.write(i);
Delay(10);
}
}
BINGO! Nu har vi en smidig vifta som säger glad hund.
Lydnad skolan
OK, nu när PuppyDuino vet hur vifta henne svans låt oss träna henne vifta på kommando. Vi lägger valfri knapp kretsen visas i diagrammet och ladda upp skissen nedan. Svansen ska vifta när knappen trycks, och fortfarande när den inte är intryckt. (Om vi kan göra henne wag som svar på en knapptryckning som vi är en hop, hoppa och hoppa från att göra henne wag som svar på en petting sensor kort.)
tailTest3.ino
/*tailTest3.ino
ditt servo måste ansluta till
5V till röda tråd,
jordledning svart
stift 9 att styra tråd
servo svansen viftar bara när knappen är nedtryckt
*/
#include < Servo.h > //this import Servo biblioteket
Servo servo; skapa en Servo
int i; räknar med variabel
int höger = 135; rätta omfattningen av Wiklund
int vänster = 180; vänstra omfattningen av Wiklund
int knappen = 8. knappen input på stift 8
void setup()
{
servo.attach(9);
pinMode(button,INPUT_PULLUP); HÖG om inte jordad
}
void loop()
{
Kontrollera om knappen nedtryckt (om stift går lågt)
IF(digitalRead(Button) == låg)
{
sopa rätt till vänster en grad på på gång
för (jag = höger; jag < = vänster; i ++)
{
servo.write(i);
Delay(10);
}
Svep vänster till höger en grad på på gång
för (jag = vänster; jag > = höger; i--)
{
servo.write(i);
Delay(10);
}
}
Delay(300);
}
OK - låt oss ta bort den knappen kretsen. Vi är klar med den.