Mendengar kata "ROBOT" seolah kita membayangkan kata Robot identik dengan Robot Transformer yang ada didunia perfilman fiksi ilmiah Amerika. Asimo buatan Jepang, Robot Humanoid yang bisa berjalan, berlari, bahkan menendang bola atau Robot Kirobo? Robot Humanoid pertama yang bisa melakukan percakapan diluar angkasa. Hebat bukan...?
Tahukah kamu, bahwa kata Robot itu berasal dari bahasa Cheko "Robota" yang bearti pekerja, budak, atau kuli. Istilah "Robot" kemudian mulai terkenal dan digunakan untuk menggantikan istilah yang saat itu adalah "automation" (ROBOTICS Education Centre)
Adapun yang dimaksud dengan robot menggunakan bahasa sendiri adalah sesuatu yang bisa mempermudah kinerja manusia disebut "robot". Simpel bukan? jadi jangan salah mengasumsikan pengertian robot seperti tertera diatas.
Sedikit berbagi pengalaman, diperkuliahan semester 2 seorang Dosen memberikan tugas dengan kata kunci "Microcontroller". Saat itu tidak tahu harus buat apa. Materi perkuliahan mengenai Microcontroller sudah diajarkan, Mulai dari keluarga MCS51, AVR, PIC, ATmega, Rusberry py dll. Tapi, waktu itu dasar elektronika diajarkan baru yang dasar. Lantas, bagaimana mengkonversikan antara hardware dengan software?
Adalah seorang senior sekaligus ketua Team Robotik yang sudah 4 kali memimpin pada Kontes Robot Se Asia Tenggara, beliaulah yang diminta terjun memberikan masukan dan ide.
Pada akhirnya tercetuslah ide sederhana membuat Robot Line Follower, robot yang bergerak mengikuti garis secara otomatis berbasis Microcontroller Arduino. Komponen dasar Robot Line Follower ini sama seperti manusia, mata/sensor untuk melihat, kaki/roda untuk berjalan, otak/microcontroller untuk berfikir.
Tidak usah berlama lama bermain dengan kata kata, langsung saja kita bermain dengan Bahasa Mesin atau sering disebut Bahasa C. Kenapa tidak boleh bermain? Ya... karena membuat program Robot Line Follower dengan konsep yang sebenarnya sederhana itu tidak main main. Disini kiat membuat Robot Line Follower hanya listing program saja, komponen dasar elektronikanya menyusul tahun depan. aha... "yang terpenting itu hardwarenya, Mas, softwarenya mengikuti"... alih alih saya mengatakan, "ya sesuai judul dooong..." semoga paham dan saya akhirnya gagal paham...
langsung sajalah ya..
Source code
// Arduino Language Reference
// http://arduino.cc/en/Reference/HomePage
#define motor1Dir 7
#define motor2Dir 8
#define motor1PWM 9
#define motor2PWM 10
#define motor1Enable 11
#define motor2Enable 12
#include
void setMotorVel(int dirPin, int pwmPin, int velocity){
if (velocity >= 255) velocity = 255;
if (velocity <= -255) velocity = -255;
if (velocity == 0)
{
digitalWrite(dirPin, HIGH);
digitalWrite(pwmPin, HIGH);
}
else if(velocity <0 255="" analogwrite="" digitalwrite="" dirpin="" else="" high="" if="" pwmpin="" reverse="" velocity="">0){ // Forward
digitalWrite(dirPin,LOW);
analogWrite(pwmPin, velocity);
}
}
void setLeftMotorSpeed(int velocity)
{
setMotorVel(motor1Dir, motor1PWM, -velocity);
}
void setRightMotorSpeed(int velocity){
setMotorVel(motor2Dir, motor2PWM, -velocity);
}
void initMotorDriver()
{
pinMode(motor1Dir, OUTPUT);
pinMode(motor2Dir, OUTPUT);
pinMode(motor1Enable, OUTPUT);
pinMode(motor2Enable, OUTPUT);
digitalWrite(motor1Enable,HIGH);
digitalWrite(motor2Enable,HIGH);
setLeftMotorSpeed(0); // make sure the motors are stopped
setRightMotorSpeed(0);
}
#include
int testSensor(int sensor){
char msg[30];
//grab adc value
int val = analogRead(sensor);
sprintf(msg, "Reading Sensor %d : %d \n", sensor, val);
Serial.print(msg);
return val;
}
void goForward()
{
setLeftMotorSpeed(255);
setRightMotorSpeed(255);
}
void goRight()
{
setLeftMotorSpeed(255);
setRightMotorSpeed(-255);
}
void goLeft()
{
setLeftMotorSpeed(-255);
setRightMotorSpeed(255);
}
void setup(){
Serial.begin(115200); //Set the buad rate for the serial com.
// prints title with ending line break
Serial.println("Line Sensor boar Sensor test");
initMotorDriver();
}
void loop(){
char c;
int adcVal;
c = Serial.read();
switch(c){
case '0':
testSensor(0);
break;
case '1':
testSensor(1);
break;
case '2':
testSensor(2);
break;
case '3':
testSensor(3);
break;
case '4':
testSensor(4);
break;
case '5':
testSensor(5);
break;
case 'f' :
setLeftMotorSpeed(254);
setRightMotorSpeed(254);
break;
case 'r':
setLeftMotorSpeed(-254);
setRightMotorSpeed(-254);
break;
case 's':
setLeftMotorSpeed(0);
setRightMotorSpeed(0);
break;
}
}
0>
comment 0 komentar
more_vert