Contoh pertama mengontrol posisi motor servo RC (hobi) dengan Arduino dan potensiometer Anda. Contoh kedua menyapu (sweep) poros motor servo RC bolak-balik 180 derajat.
Hardware yang Diperlukan
- Arduino Board
- Servo Motor
- 10k ohm potentiometer
- hook-up wires
Rangkaian
Motor servo memiliki tiga kabel: daya, arde, dan sinyal. Kabel daya biasanya berwarna merah, dan harus dihubungkan ke pin 5V di papan Arduino. Kabel arde biasanya berwarna hitam atau cokelat dan harus dihubungkan ke pin arde di papan Arduino. Pin sinyal biasanya berwarna kuning atau oranye dan harus dihubungkan ke pin PWM di papan Arduino. Dalam contoh ini, itu adalah pin nomor 9.
Rangkaian Knob
Untuk contoh Knob, sambungkan potensiometer sehingga dua pin terluarnya terhubung ke daya (+5V) dan arde, dan pin tengahnya terhubung ke A0, di papan Arduino. Kemudian, sambungkan motor servo ke +5V, GND dan pin 9.
Rangkaian Sweep
Untuk contoh Sweep, hubungkan motor servo ke +5V, GND dan pin 9.
Knob
Mengontrol posisi servo menggunakan potensiometer (resistor variabel).
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
Sweep
Menyapu (sweep) poros motor servo RC bolak-balik sepanjang 180 derajat.
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
Implementasi