Dalam Tutorial ini, anda akan pelajari bagaimana mengawal Servo dengan menggunakan library Servo.h .
Servo.h Library
Servo seperti SG90 dan servo-servo yang serupa, menggunakan input PWM-Berkala 2000ms untuk mengawal mereka. PWM-Berkala adalah berlainan dari PWM dari Pin PWM Arduino. Perbezaan paling ketara adalah dari segi frequency signal PWM mereka.
PWM-Berkala mempunyai frequency yang rendah iaitu pada 50Hz. Bagi kawalan servo, servo hanya mengenali signal High selama 1000ms sebagai signal paling rendah, 1500ms sebagai signal kedudukantengah, dan signal 2000ms sebagai signal maksium.
- 1000ms = pusingan 0 darjah
- 1500ms = pusingan 90 darjah
- 2000ms = pusingan 180 darjah
Dengan menggunakan Servo.h Library, kawalan masa-berkala di atas dikawal oleh software, dan algorythm kawalan telah dipermudahkan. Paling menarik, servo dapat di kawal pada hampir semua Pin Digital dan juga pada hampir semua Pin Analog Arduino dengan menggunakan Servo.h Library.
Untuk mengetahui lebih lanjut mengenai signal PWM, PPM dan PWM-Berkala kami syorkan anda ikuti artikel berikut:
- PWM, PPM & PWM-Berkala
PERKARA ASAS SEBELUM MULAKAN TUTORIAL
Bagi menggunakan Servo.h Library, cara-caranya adalah seperti berikut:
(gunakan rajah di atas sebagai panduan)
- Include-kan Servo.h Library dalam DEFINING AREA
#include <Servo.h>
- Berikan nama pada Servo anda dalam DEFINING AREA
#include <Servo.h> Servo servoSaya1;
- Declare Pin, dalam Void Serup()
void setup(){ servoSaya1.attach(3); //gunakan algorythm .attach //dan letakkan nombor pin sambungan }
- Berikan satu kedudukan awal pada servo dalam Void Setup()
supaya servo tidak meracauvoid setup(){ servoSaya1.attach(3); servoSaya1.write(90); //gunakan algorythm write untuk arahkan servo //90 adalah bermakan 90 darjah //iaitu kedudukan tengah bagi semua servo }
- Kawal servo dengan nilai range 0~180 dengan menggunakan
algorythm .write
void loop(){ servoSaya1.write(180); }
Teruskan dengan Tutorial ini, untuk memahami cara mengawal servo.
Dalam tutorial ini, komponen-komponen berikut perlu disediakan:
- Arduino Uno (atau yang lain) (1 unit)
- Servo SG90 atau servo lain (1 unit)
- Potentiometer 10k ohm (1 unit)
- Jumper cable
- Breadboard (1 unit)
LANGKAH #1: SAMBUNGAN LITAR
Sambungkan litar anda seperti gambarajah berikut:
LANGKAH #2: CODING/SKETCH
Copy sketch di bawah dan pastekan dalam Arduino IDE anda.
//Tutorial #10 : Kawalan Servo //Code disediakan oleh MatGyver.my #include <Servo.h> //masukkan library Servo.h //library sudah pre-install dalam IDE Servo servoSaya1; //berikan nama pada servo //disini kami namakanservo servoSaya1 int dataSensor; int dataBaru; //declare variable untuk simpan data input Sensor void setup() { // masukkan code setup di sini, Void Setup berjalan sekali sahaja pinMode(A0, INPUT); //declare pin A0 sebagai INPUT untuk potentiometer servoSaya1.attach(3); //settingkan servo pada pin 3 servoSaya1.write(90); //berikan kedudukan awal servo pada 90 darjah //iaitu ditengah, supaya servo tidak meracau delay(100); //letak sedikit delay untuk program setup }//penutup Void Setup void loop() { // masukkan code utama di sini, untuk program yang berulang dataSensor = analogRead(A0); dataBaru = map(dataSensor, 0, 1023, 0, 180); //map dan convert dataSensor dari range 0~1023 //kepada dataBaru range 0~180 //servo library hanya boleh mengawal servo dengan 0~180 shj servoSaya1.write(dataBaru); //gunakan ".write" untuk kawal servo mengikut potentiometer delay(15); //berikan sedikit delay supaya loop tidak terlalu laju //untuk servo mampu mengikut arahan } //penutup Void Loop
Atau, anda boleh download file sketch .ino untuk tutorial ini di URL berikut:
Setelah sketch di-upload, anda dapat kawal kedudukan putaran servo dengan putaran Potentiometer.
PERHATIAN! : Servo SG90 adalah antara beberapa servo dalam pasaran yang mempunyai pergerakan dari 0 darjah sehingga 180 darjah. Ia juga dikenali sebagai servo 180 degree. Bagi kebanyakan Servo yang branded seperti FUTABA, HITEC dan lain-lain, pergerakan mereka mempunyai had limitasi dari 40 darjah ke maksimum 160 darjah sahaja. Kawalan lebih dari range ini boleh merosakkan servo-servo branded.
Anda juga boleh mengawal servo dengan menggunakan PS2 Analog Joystick Module dan coding yang sama di atas. Rajah diagramnya adalah seperti berikut:
Tutorial BONUS – AUTO-Servo
Dalam tutorial bonus ini, anda akan pelajari bagaimana menggerakkan servo secara auto dari program. Tutorial ini lebih kurang seperti tutorial Auto-Malap/Terang LED yang menggunakan for() Loop.
LANGKAH #1 : SAMBUNGAN LITAR
Sambungkan litar anda seperti gambarajah berikut:
LANGKAH #2 : CODING/SKETCH
Copy sketch di bawah dan pastekan dalam Arduino IDE anda.
//Tutorial #10 : Kawalan Servo BONUS- AUTO //Code disediakan oleh MatGyver.my #include <Servo.h> //masukkan library Servo.h //library sudah pre-install dalam IDE Servo servoSaya1; //berikan nama pada servo //disini kami namakanservo servoSaya1 void setup() { // masukkan code setup di sini, Void Setup berjalan sekali sahaja servoSaya1.attach(3); //settingkan servo pada pin 3 servoSaya1.write(90); //berikan kedudukan awal servo pada 90 darjah //iaitu ditengah, supaya servo tidak meracau delay(100); //letak sedikit delay untuk program setup }//penutup Void Setup void loop() { // masukkan code utama di sini, untuk program yang berulang //nilai x akan memberikan value untuk kawalan servo //dalam for loop PERTAMA, nilai x bermula dengan 0 //kemudian akan bertambah 1 untuk setiap loop berikutnya //melalui coding x++ //loop akan berakhir setelah x mencapai nilai 180 for(int x = 0; x < 180; x++){ //for loop PERTAMA servoSaya1.write(x); //x akan mengawal Output PWM Servo delay(15);//berikan delay 15ms paling laju } //loop PERTAMA akan berakhir apabila x mencapai 180 //dalam for loop KEDUA, nilai x bermula dengan 180 //kemudian akan berkurang 1 untuk setiap loop berikutnya //melalui coding x-- //loop akan berakhir setelah x mencapai nilai 0 for(int x = 180; x > 0; x--){ //for loop KEDUA servoSaya1.write(x); //x akan mengawal Output PWM Servo delay(15);//berikan delay 15ms paling laju } } //penutup Void Loop
Atau, anda boleh download file sketch .ino untuk tutorial ini di URL berikut:
Dengan coding di atas, servo akan berputar CW dan ke CCW dengan automatic. Tingkatkan kelajuan putaran dengan menggantikan x++ kepada x = x +10, serta x– kepada x = x – 10.
Teruskan dengan Tutorial #11 melalui URL di bawah:
- Tutorial #11
Senarai Tutorial asas Arduino MatGyver.my :
- Langkah Pertama dengan Arduino
- Tutorial #1: Digital Output Arduino dengan LED
- Tutorial #2: Traffic Light!
- Tutorial #3: Digital Input dengan Push-Button
- Tutorial #4: Digital Input Advance
- Tutorial #5: Digital Input & Operasi Matematik
- Tutorial #6: Analog Input dengan Potentiometer
- Tutorial #7: Fungsi Mapping dan Analog Input
- Tutorial #8: Terang/Malap LED & PWM Output
- Tutorial #9: AUTO Terang/Malap LED & for() Loop
- Tutorial #10: Kawalan Servo dengan Servo.h Library
- Tutorial #11:
3 thoughts on “Tutorial #10: Kawalan SERVO dengan Servo.h Library”