Arduino animatörerna-gör din awesome kostymer mer awesome! (9 / 15 steg)
Steg 9: Kontrollera servon
Exempel 5 - kontrollera ett servo med analog ingång
Dessa två exempel visar hur lätt det är att kontrollera servon med hjälp av en analog ingång. Du kan använda någon analog ingång enhet du vill-jag använder en 10 k Ohm potentiometer för exempel kopplingsschema. När du slår potten (och ändra dess värde) flyttas servo proportionellt.
Andra kodexemplet förlänger helt enkelt det första exemplet för att styra sex servon från sex ingångar. Denna typ av kontroll är verkligen praktiskt om du vill styra flera servon med böj sensorer kopplade till en handske. Detta skulle fungera riktigt bra för att kontrollera en animatronic mask.
/*
* Exempel 5
* Servo kontroll
* Detta exempel använder en servon och analog ingång för att flytta servo enligt indatavärdet sensor
* Honus 2010
*/
#include "Servo.h" / / include servo biblioteket
Servo servo1; skapar en instans av objektet servo att styra en servo
int analogPin = 0; den analoga stift som sensorn är på
int analogValue = 0; det värde som returneras från analog sensor
int servoPin = 4; Kontroll stift för servomotor
void setup() {
servo1.attach(servoPin); tillmäter objektet servo servo på pin 9
}
void loop()
{
analogValue = analogRead(analogPin); Läs den analog ingången (värde mellan 0 och 1023)
analogValue = karta (analogValue, 0, 1023, 0, 179); Mappa det analoga värdet (0 - 1023) till vinkeln på servo (0 - 179)
servo1.write(analogValue); skriva nya mappade analoga värdet för att ange position på servo
Delay(15); väntar på servo att komma dit
}
Exempel 5a - kontrollera 6 servon med flera ingångar
/*
* Exempel 5a
* Servo Control6
* I det här exemplet använder 6 servon och analoga ingångar för att flytta servon sensor input värden
* Honus 2010
*/
#include / / include servo biblioteket
Servo servoMotor1; skapar en instans av objektet servo att styra en servo
Servo servoMotor2;
Servo servoMotor3;
Servo servoMotor4;
Servo servoMotor5;
Servo servoMotor6;
int analogPin1 = 0; den analoga stift som sensorn är på
int analogPin2 = 1;
int analogPin3 = 2;
int analogPin4 = 3;
int analogPin5 = 4;
int analogPin6 = 5;
int analogValue1 = 0; det värde som returneras från analog sensor
int analogValue2 = 0;
int analogValue3 = 0;
int analogValue4 = 0;
int analogValue5 = 0;
int analogValue6 = 0;
int servoPin1 = 4; Kontroll stift för servomotor
int servoPin2 = 5;
int servoPin3 = 6;
int servoPin4 = 7.
int servoPin5 = 8;
int servoPin6 = 9;
void setup() {
servoMotor1.attach(servoPin1); tillmäter objektet servo servo på stift 4
servoMotor2.attach(servoPin2); tillmäter objektet servo servo på stift 5
servoMotor3.attach(servoPin3); tillmäter objektet servo servo på stift 6
servoMotor4.attach(servoPin4); tillmäter objektet servo servo på stift 7
servoMotor5.attach(servoPin5); tillmäter objektet servo servo på stift 8
servoMotor6.attach(servoPin6); tillmäter objektet servo servo på pin 9
}
void loop()
{
analogValue1 = analogRead(analogPin1); Läs den analog ingången (värde mellan 0 och 1023)
analogValue1 = karta (analogValue1, 0, 1023, 0, 179); Mappa det analoga värdet (0 - 1023) till vinkeln på servo (0 - 179)
servoMotor1.write(analogValue1); skriva nya mappade analoga värdet för att ange position på servo
analogValue2 = analogRead(analogPin2);
analogValue2 = karta (analogValue2, 0, 1023, 0, 179);
servoMotor2.write(analogValue2);
analogValue3 = analogRead(analogPin3);
analogValue3 = karta (analogValue3, 0, 1023, 0, 179);
servoMotor3.write(analogValue3);
analogValue4 = analogRead(analogPin4);
analogValue4 = karta (analogValue4, 0, 1023, 0, 179);
servoMotor4.write(analogValue4);
analogValue5 = analogRead(analogPin5);
analogValue5 = karta (analogValue5, 0, 1023, 0, 179);
servoMotor5.write(analogValue5);
analogValue6 = analogRead(analogPin6);
analogValue6 = karta (analogValue6, 0, 1023, 0, 179);
servoMotor6.write(analogValue6);
Delay(15); väntar på servo att komma dit
}