Pada proyek kali ini akan menggunakan motor shield untuk mengatur 2 motor secara terpisah. Disini kita akan belajar mengatur kecepatan dan arah masing-masing motor. Lalu akan kita aplikasikan untuk mengatur gerak 2-wheel robot.
Komponen
Skema
Pada proyek kali ini tidak ada skema rumit, lebih ke plug and play. Pasangkan motor shield pada arduino. Dan hubungkan kabel dari DC motor dari robot base.
Perhatian, gunakan daya eksternal untuk motor shield dan motor (jangan diambil dari Arduino board).
Pada contoh proyek ini, digunakan official Arduino motor shield yang dirancang untuk mengendalikan 2 motor. Banyak shield lainnya, seperti dari Adafruit yang disertai library yang bangus (AFMotor.h). Jika Anda menggunakan produk shield lain, kode/sketch pada proyek ini harus diubah sesuai dengan library yang tersedia.
Sketch
#define QUARTER_SPEED 64
#define HALF_SPEED 128
#define FULL_SPEED 255
// Set the pins for speed and direction of each motor
int speed1 = 3;
int speed2 = 11;
int direction1 = 12;
int direction2 = 13;
void stopMotor() {
// turn both motors off
analogWrite(speed1, 0);
analogWrite(speed2, 0);
}
void setup(){
// set all the pins to outputs
pinMode(speed1, OUTPUT);
pinMode(speed2, OUTPUT);
pinMode(direction1, OUTPUT);
pinMode(direction2, OUTPUT);
}
void loop(){
// Both motors forward at 50% speed for 2 seconds
digitalWrite(direction1, HIGH);
digitalWrite(direction2, HIGH);
analogWrite(speed1, HALF_SPEED);
analogWrite(speed2, HALF_SPEED);
delay(2000);
stopMotor();
delay(1000);
// Left turn for 1 second
digitalWrite(direction1, LOW);
digitalWrite(direction2, HIGH);
analogWrite(speed1, HALF_SPEED);
analogWrite(speed2, HALF_SPEED);
delay(1000);
stopMotor();
delay(1000);
// Both motors forward at 50% speed for 2 seconds
digitalWrite(direction1, HIGH);
digitalWrite(direction2, HIGH);
analogWrite(speed1, HALF_SPEED);
analogWrite(speed2, HALF_SPEED);
delay(2000);
stopMotor();
delay(1000);
// rotate right at 25% speed
digitalWrite(direction1, HIGH);
digitalWrite(direction2, LOW);
analogWrite(speed1, QUARTER_SPEED);
analogWrite(speed2, QUARTER_SPEED);
delay(2000);
stopMotor();
delay(1000);
}
Penjelasan Kode
Komponen
- Motor Shield
- 2 x DC Motor atau 2 wheel robot base (lihat gambar berikut)
- Battery Pack
gambar 1 - two wheeled robot base
Skema
Pada proyek kali ini tidak ada skema rumit, lebih ke plug and play. Pasangkan motor shield pada arduino. Dan hubungkan kabel dari DC motor dari robot base.
Perhatian, gunakan daya eksternal untuk motor shield dan motor (jangan diambil dari Arduino board).
Pada contoh proyek ini, digunakan official Arduino motor shield yang dirancang untuk mengendalikan 2 motor. Banyak shield lainnya, seperti dari Adafruit yang disertai library yang bangus (AFMotor.h). Jika Anda menggunakan produk shield lain, kode/sketch pada proyek ini harus diubah sesuai dengan library yang tersedia.
Sketch
#define QUARTER_SPEED 64
#define HALF_SPEED 128
#define FULL_SPEED 255
// Set the pins for speed and direction of each motor
int speed1 = 3;
int speed2 = 11;
int direction1 = 12;
int direction2 = 13;
void stopMotor() {
// turn both motors off
analogWrite(speed1, 0);
analogWrite(speed2, 0);
}
void setup(){
// set all the pins to outputs
pinMode(speed1, OUTPUT);
pinMode(speed2, OUTPUT);
pinMode(direction1, OUTPUT);
pinMode(direction2, OUTPUT);
}
void loop(){
// Both motors forward at 50% speed for 2 seconds
digitalWrite(direction1, HIGH);
digitalWrite(direction2, HIGH);
analogWrite(speed1, HALF_SPEED);
analogWrite(speed2, HALF_SPEED);
delay(2000);
stopMotor();
delay(1000);
// Left turn for 1 second
digitalWrite(direction1, LOW);
digitalWrite(direction2, HIGH);
analogWrite(speed1, HALF_SPEED);
analogWrite(speed2, HALF_SPEED);
delay(1000);
stopMotor();
delay(1000);
// Both motors forward at 50% speed for 2 seconds
digitalWrite(direction1, HIGH);
digitalWrite(direction2, HIGH);
analogWrite(speed1, HALF_SPEED);
analogWrite(speed2, HALF_SPEED);
delay(2000);
stopMotor();
delay(1000);
// rotate right at 25% speed
digitalWrite(direction1, HIGH);
digitalWrite(direction2, LOW);
analogWrite(speed1, QUARTER_SPEED);
analogWrite(speed2, QUARTER_SPEED);
delay(2000);
stopMotor();
delay(1000);
}
Penjelasan Kode
Sketch diatas sudah cukup jelas dan tidak terlampau rumit. Semoga bermanfaat.
Related article
Artikel sebelumnya: Basic Stepper Control
Related article
Artikel sebelumnya: Basic Stepper Control
No comments:
Post a Comment