Anda di halaman 1dari 50

PERTEMUAN 1

MODUL I
PENGANTAR ARDUINO

Blok Rangkaian Modul Arduino.

Gambar Rangkaian Arduino

Arduino Uno R3 adalah papan pengembangan (development board)

mikrokontroler yang berbasis chip ATmega328P. Disebut sebagai papan

pengembangan karena board ini memang berfungsi sebagai arena prototyping

sirkuit mikrokontroller. Dengan menggunakan papan pengembangan, anda

akan lebih mudah merangkai rangkaian elektronika mikrokontroller dibanding

jika anda memulai merakit ATMega328 dari awal di breadboard.

Arduino Uno memiliki 14 digital pin input / output (atau biasa ditulis I/O,

dimana 6 pin diantaranya dapat digunakan sebagai output PWM), 6 pin input

MODUL PEMBELAJARAN ROBOT EDUKASI Page 1


analog, menggunakan crystal 16 MHz, koneksi USB, jack listrik, header ICSP

dan tombol reset. Hal tersebut adalah semua yang diperlukan untuk

mendukung sebuah rangkaian mikrokontroler. Cukup dengan

menghubungkannya ke komputer dengan kabel USB atau diberi power

dengan adaptor AC-DC atau baterai, anda sudah dapat bermain-main dengan

Arduino UNO anda tanpa khawatir akan melakukan sesuatu yang salah.

Kemungkinan paling buruk hanyalah kerusakan pada chip ATMega328, yang

bisa anda ganti sendiri dengan mudah dan dengan harga yang relatif murah.

Kata " Uno " berasal dari bahasa Italia yang berarti "satu", dan dipilih

untuk menandai peluncuran Software Arduino (IDE) versi 1.0. Arduino. Sejak

awal peluncuran hingga sekarang, Uno telah berkembang menjadi versi Revisi

3 atau biasa ditulis REV 3 atau R3. Software Arduino IDE, yang bisa diinstall

di Windows maupun Mac dan Linux, berfungsi sebagai software yang

membantu anda memasukkan (upload) program ke chip ATMega328 dengan

mudah.

Tabel Spesifikasi Arduino

Chip mikrokontroller ATmega328P

Tegangan operasi 5V

Tegangan input (yang

direkomendasikan, via jack 7V - 12V

DC)

Tegangan input (limit, via


6V - 20V
jack DC)

MODUL PEMBELAJARAN ROBOT EDUKASI Page 2


14 buah, 6 diantaranya
Digital I/O pin
menyediakan PWM

Analog Input pin 6 buah

Arus DC per pin I/O 20 Ma

Arus DC pin 3.3V 50 Ma

32 KB, 0.5 KB telah


Memori Flash
digunakan untuk bootloader

SRAM 2 KB

EEPROM 1 KB

Clock speed 16 Mhz

Dimensi 68.6 mm x 53.4 mm

Berat 200 gram

1. Pemrograman

Pemrograman board Arduino dilakukan dengan menggunakan Arduino

Software (IDE) yang bisa anda dapatkan. Chip ATmega328 yang terdapat

pada Arduino Uno R3 telah diisi program awal yang sering disebut bootloader.

Bootloader tersebut yang bertugas untuk memudahkan anda melakukan

pemrograman lebih sederhana menggunakan Arduino Software, tanpa harus

menggunakan tambahan hardware lain. Cukup hubungkan Arduino dengan

kabel USB ke PC atau Mac/Linux anda, jalankan software Arduino Software

(IDE), dan anda sudah bisa mulai memrogram chip ATmega328. Lebih mudah

lagi, di dalam Arduino Software sudah diberikan banyak contoh program yang

MODUL PEMBELAJARAN ROBOT EDUKASI Page 3


memanjakan anda dalam belajar mikrokontroller Untuk pengguna

mikrokontroller yang sudah lebih mahir, anda dapat tidak menggunakan

bootloader dan melakukan pemrograman langsung via header ICSP (In Circuit

Serial Programming) dengan menggunakan Arduino ISP Arduino Uno R3 telah

dilengkapi dengan chip ATmega16U2 yang telah diprogram sebagai konverter

USB to Serial. Firmware ATmega16U2 di load oleh DFU bootloader, dan untuk

merubahnya anda dapat menggunakan software Atmel Flip (Windows) atau

DFU programmer (Mac OSX dan Linux), atau menggunakan header ISP

dengan menggunakan hardware external programmer.

Development board Arduino Uno R3 telah dilengkapi dengan polyfuse

yang dapat direset untuk melindungi port USB komputer/laptop anda dari

korsleting atau arus berlebih. Meskipun kebanyakan komputer telah memiliki

perlindungan port tersebut didalamnya namun sikring pelindung pada Arduino

Uno memberikan lapisan perlindungan tambahan yang membuat anda bisa

dengan tenang menghubungkan Arduino ke komputer anda. Jika lebih dari

500mA ditarik pada port USB tersebut, sirkuit proteksi akan secara otomatis

memutuskan hubungan, dan akan menyambung kembali ketika batasan aman

telah kembali.

Board Arduino Uno dapat ditenagai dengan power yang diperoleh dari

koneksi kabel USB, atau via power supply eksternal. Pilihan power yang

digunakan akan dilakukan secara otomatis

External power supply dapat diperoleh dari adaptor AC-DC atau bahkan

baterai, melalui jack DC yang tersedia, atau menghubungkan langsung GND

MODUL PEMBELAJARAN ROBOT EDUKASI Page 4


dan pin Vin yang ada di board. Board dapat beroperasi dengan power dari

external power supply yang memiliki tegangan antara 6V hingga 20V. Namun

ada beberapa hal yang harus anda perhatikan dalam rentang tegangan ini.

Jika diberi tegangan kurang dari 7V, pin 5V tidak akan memberikan nilai murni

5V, yang mungkin akan membuat rangkaian bekerja dengan tidak sempurna.

Jika diberi tegangan lebih dari 12V, regulator tegangan bisa over heat yang

pada akhirnya bisa merusak pcb. Dengan demikian, tegangan yang di

rekomendasikan adalah 7V hingga 12V

Beberapa pin power pada Arduino Uno :

 GND. Ini adalah ground atau negatif.

 Vin. Ini adalah pin yang digunakan jika anda ingin memberikan power

langsung ke board Arduino dengan rentang tegangan yang disarankan

7V - 12V

 Pin 5V. Ini adalah pin output dimana pada pin tersebut mengalir

tegangan 5V yang telah melalui regulator

 3V3. Ini adalah pin output dimana pada pin tersebut disediakan

tegangan 3.3V yang telah melalui regulator

 IOREF. Ini adalah pin yang menyediakan referensi tegangan

mikrokontroller. Biasanya digunakan pada board shield untuk

memperoleh tegangan yang sesuai, apakah 5V atau 3.3V

1. Memori

Chip ATmega328 pada Arduino Uno R3 memiliki memori 32 KB,

dengan 0.5 KB dari memori tersebut telah digunakan untuk bootloader.

MODUL PEMBELAJARAN ROBOT EDUKASI Page 5


Jumlah SRAM 2 KB, dan EEPROM 1 KB, yang dapat di baca-tulis dengan

menggunakan EEPROM library saat melakukan pemrograman.

2. Input dan Output (I/O)

Seperti yang telah disebutkan sebelumnya, Arduino Uno memiliki 14

buah digital pin yang dapat digunakan sebagai input atau output, sengan

menggunakan fungsi pinMode(), digitalWrite(), dan digital(Read). Pin-pin

tersebut bekerja pada tegangan 5V, dan setiap pin dapat menyediakan atau

menerima arus 20mA, dan memiliki tahanan pull-up sekitar 20-50k ohm

(secara default dalam posisi disconnect). Nilai maximum adalah 40mA, yang

sebisa mungkin dihindari untuk menghindari kerusakan chip mikrokontroller

Beberapa pin memiliki fungsi khusus :

 Serial, terdiri dari 2 pin : pin 0 (RX) dan pin 1 (TX) yang digunakan

untuk menerima (RX) dan mengirim (TX) data serial.

 External Interrups, yaitu pin 2 dan pin 3. Kedua pin tersebut dapat

digunakan untuk mengaktifkan interrups. Gunakan fungsi

attachInterrupt()

 PWM: Pin 3, 5, 6, 9, 10, dan 11 menyediakan output PWM 8-bit dengan

menggunakan fungsi analogWrite()

 SPI : Pin 10 (SS), 11 (MOSI), 12 (MISO), dan 13 (SCK) mendukung

komunikasi SPI dengan menggunakan SPI Library

 LED : Pin 13. Pada pin 13 terhubung built-in led yang dikendalikan oleh

digital pin no 13.

MODUL PEMBELAJARAN ROBOT EDUKASI Page 6


 TWI : Pin A4 (SDA) dan pin A5 (SCL) yang mendukung komunikasi

TWI dengan menggunakan Wire Library

Arduino Uno memiliki 6 buah input analog, yang diberi tanda dengan

A0, A1, A2, A3, A4, A5. Masing-masing pin analog tersebut memiliki resolusi

10 bits (jadi bisa memiliki 1024 nilai). Secara default, pin-pin tersebut diukur

dari ground ke 5V, namun bisa juga menggunakan pin AREF dengan

menggunakan fungsi analogReference(). Beberapa in lainnya pada board ini

adalah :

 AREF. Sebagai referensi tegangan untuk input analog.

 Reset. Hubungkan ke LOW untuk melakukan reset terhadap

mikrokontroller. Sama dengan penggunaan tombol reset yang tersedia.

3. Komunikasi

Arduino Uno R3 memiliki beberapa fasilitas untuk berkomunikasi

dengan komputer, berkomunikasi dengan Arduino lainnya, atau dengan

mikrokontroller lain nya. Chip Atmega328 menyediakan komunikasi serial

UART TTL (5V) yang tersedia di pin 0 (RX) dan pin 1 (TX). Chip ATmega16U2

yang terdapat pada board berfungsi menterjemahkan bentuk komunikasi ini

melalui USB dan akan tampil sebagai Virtual Port di komputer. Firmware 16U2

menggunakan driver USB standar sehingga tidak membutuhkan driver

tambahan.

Pada Arduino Software (IDE) terdapat monitor serial yang

memudahkan data textual untuk dikirim menuju Arduino atau keluar dari

MODUL PEMBELAJARAN ROBOT EDUKASI Page 7


Arduino. Led TX dan RX akan menyala berkedip-kedip ketika ada data yang

ditransmisikan melalui chip USB to Serial via kabel USB ke komputer. Untuk

menggunakan komunikasi serial dari digital pin, gunakan SoftwareSerial

library

Chip ATmega328 juga mendukung komunikasi I2C (TWI) dan SPI. Di

dalam Arduino Software (IDE) sudah termasuk Wire Library untuk

memudahkan anda menggunakan bus I2C. Untuk menggunakan komunikasi

SPI, gunakan SPI library.

4. Reset Otomatis (software)

Biasanya, ketika anda melakukan pemrograman mikrokontroller, anda

harus menekan tombol reset sesaat sebelum melakukan upload program.

Pada Arduino Uno, hal ini tidak lagi merepotkan anda. Arduino Uno telah

dilengkapi dengan auto reset yang dikendalikan oleh software pada komputer

yang terkoneksi. Salah satu jalur flow control (DTR) dari ATmega16U pada

Arduino Uno R3 terhubung dengan jalur reset pada ATmega328 melalui

sebuah kapasitor 100nF. Ketika jalur tersebut diberi nilai LOW, mikrokontroller

akan di reset. Dengan demikian proses upload akan jauh lebih mudah dan

anda tidak harus menekan tombol reset pada saat yang tepat seperti

biasanya.

MODUL PEMBELAJARAN ROBOT EDUKASI Page 8


PERTEMUAN 1

MODUL II

PEMROGRAMAN DASAR PERGERAKKAN MOTOR DC

Gambar rangkaian pemasangan motor dc

#include <AFMotor.h> // menulis fungsi motor di library arduino

AF_DCMotor motor1(1); // menginisialisasikan penggunaan motor 1


AF_DCMotor motor2(2); // menginisialisasikan penggunaan motor 1

void setup() { // membuat fungsi menggunakan void, kegunaanya adalah untuk membuat suatu fungsi berjalan

motor1.setSpeed(200); // mengatur kecepatan motor 1 dengan maksimal 200


motor1.run(RELEASE); // menjalankan motor 1
motor2.setSpeed(200); // mengatur kecepatan motor 2 dengan maksimal 200
motor2.run(RELEASE); // menjalankan motor 2
}

void kanan() { // membuat fungsi motor bergerak ke rotasi arah kanan


motor1.run(FORWARD); // membuat fungsi motor 1 bergerak ke rotasi arah kanan
motor2.run(FORWARD); // membuat fungsi motor 2 bergerak ke rotasi arah kanan
motor1.setSpeed(200); // mengatur kecepatan motor 1 dengan 200
motor2.setSpeed(200); // mengatur kecepatan motor 2 dengan 200
}

void kiri() { // membuat fungsi motor bergerak ke rotasi arah kanan


motor1.run(BACKWARD); // membuat fungsi motor 1 bergerak ke rotasi arah kanan

MODUL PEMBELAJARAN ROBOT EDUKASI Page 9


motor2.run(BACKWARD); // membuat fungsi motor 2 bergerak ke rotasi arah kanan
motor1.setSpeed(200); // mengatur kecepatan motor 1 dengan 200
motor2.setSpeed(200); // mengatur kecepatan motor 2 dengan 200
}

void loop() { // void ini digunakan untuk program yang akan dieksekusi

kanan(); // menjalankan fungsi motor berjalan ke kanan


delay(3000); // waktu untuk seberapa lama motor bergerak ke kanan selama 3 detik,
3000=3 detik
kiri(); // menjalankan fungsi motor berjalan ke kanan
delay(3000); // waktu untuk seberapa lama motor bergerak ke kanan selama 3 detik,
3000=3 detik
}

Latihan
Dari program di atas buatlah program di bawah ini:

1. Buat program motor 1 bergerak ke kanan, motor 2 ke arah kiri, dengan


kecepatan 200, dengan waktu selama 3 detik.

2. Buat program motor 1 bergerak ke kiri, motor 2 ke arah kanan, dengan


kecepatan 200, dengan waktu selama 3 detik.

3. Buatlah program motor dengan kecepatan 100, dengan arah


pergerakkan motor sesuai kehendak kalian.

MODUL PEMBELAJARAN ROBOT EDUKASI Page 10


PERTEMUAN 1
MODUL III
MERAKIT ROBOT BERODA

Analisa dan buat robot mobil di bawah ini :

MODUL PEMBELAJARAN ROBOT EDUKASI Page 11


MODUL PEMBELAJARAN ROBOT EDUKASI Page 12
MODUL PEMBELAJARAN ROBOT EDUKASI Page 13
MODUL PEMBELAJARAN ROBOT EDUKASI Page 14
MODUL PEMBELAJARAN ROBOT EDUKASI Page 15
PERTEMUAN 2
MODUL IV
PENJELASAN DASAR PERGERAKKAN ROBOT BERODA

Robot berdasarkan mobilitasnya terbagi dua kelompok. Kelompok yang

pertama merupakan robot yang dioperasikan pada lingkungan yang tetap

dengan pergerakan yang cendrung tetap dan tertentu (stationary robot). Pada

kelompok yang kedua, robot dapat bergerak secara otonomi, memiliki navigasi

dan pergerakannya tidak tetap, tergantung dari medan jelajah (dikenal dengan

mobile robot). Robot beroda (wheel robot) dapat dibagi menurut sistem

penggeraknya, yaitu sistem gerak differential drive, tricyle drive, syncronous

drive dan holonomic drive. Pada Gambar 2.5 merupakan contoh mobile robot

yang bergerak menggunakan roda (wheel robot).

MODUL PEMBELAJARAN ROBOT EDUKASI Page 16


Gambar Mobile robot yang bergerak menggunakan roda (wheel robot)

1. Differential Drive

Sistem gerak differential drive terdiri dari dua buah roda yang terpasang pada

kiri dan kanan robot, sistem ini memungkinkan robot berputar di tempat

dengan cara memutar motor dengan arah berlawanan dapat dilihat pada

Gambar dibawah Contoh sistem gerak ini pada kehidupan sehari-hari adalah

pada gardan belakang mobil dan mainan mobil radio kontrol (RC).

Gambar Sistem gerak differential drive

2. Trycle Drive

Trycyle drive merupakan sistem gerak dengan tiga buah roda. Dua buah roda

dengan satu poros dihubungkan pada sebuah motor penggerak, sedangkan

sebuah roda diberlakukan sebagai kemudi yang dapat berputar (setir kemudi),

MODUL PEMBELAJARAN ROBOT EDUKASI Page 17


ketika berbelok akan didapatkan radius sepanjang titik pertemuan antara roda

depan dengan roda belakang dapat dilihat pada Gambar dibawah Contoh

sistem gerak ini pada kehidupan sehari-hari adalah alat transportasi becak

dan bajaj.

Gambar Sistem gerak Trycyle drive

3. Syncronous Drive

Syncronous Drive adalah sistem yang menggunakan semua roda yang

terdapat pada robot untuk dapat bergerak. Pada saat robot berjalan pada

permukaan yang tidak rata, maka roda yang terpengaruh pada permukaan

yang tidak rata akan didukung oleh roda yang tidak terpengaruh, sehingga

robot bergerak dengan arah yang tetap dapat dilihat pada Gambar dibawah.

Contoh sistem gerak ini pada kehidupan sehari-hari adalah pada trolly pasar

swalayan.

Gambar Sistem gerak Syncronous drive

MODUL PEMBELAJARAN ROBOT EDUKASI Page 18


4. Holonomic Drive

Holonomic drive adalah sistem gerak yang memungkinkan robot bergerak ke

segala arah (dengan penggunaan roda omni-directional), pada gambar

dibawah konfigurasi ini memungkinkan gerakan rotasi dan translasi pada

mobile robot.

Gambar Roda sistem gerak Holonimic drive

PERTEMUAN 2
MODUL V
PEMROGRAMAN DASAR PERGERAKKAN ROBOT BERODA
Buat Program Di bawah ini:
#include <AFMotor.h>

// M1, M2, M3, M4


AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

void setup() {
motor1.setSpeed(200);
motor1.run(RELEASE);
motor2.setSpeed(200);
motor2.run(RELEASE);
motor3.setSpeed(200);
motor3.run(RELEASE);
motor4.setSpeed(200);
motor4.run(RELEASE);
}

MODUL PEMBELAJARAN ROBOT EDUKASI Page 19


void maju() {
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void mundur() {
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void kanan() {
motor1.run(FORWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void kiri() {
motor1.run(BACKWARD);
motor2.run(FORWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

int i;

void loop() {

MODUL PEMBELAJARAN ROBOT EDUKASI Page 20


maju();

Latihan :

1. Buatlah program agar robot edukasi maju 2 detik mundur 2 detik dan
kemudian berhenti.
2. Buatlah program agar robot edukasi maju dan berbelok ke kanan.
3. Buat program agar robot edukasi dan berbelok ke kanan.
4. Buatlah program agar robot dapat berjalan maju dan mundur.
5. Buatlah program agar robot dapat berbelok maju ke kanan dan kiri.

PERTEMUAN 2
MODUL VI
PENJELASAN PENGGUNAAN FUNGSI IF

Dasar C Arduino

Semua bahasa perograman terdiri dari

1. ekspresi,
2. statemen,
3. blok statemen
4. blok fungsi

Ekspresi adalah kombinasi operand dan operator contoh 2+3 , X >


Y dst… 2,3,X dan Y adalah operand sedangkan + dan > adalah operator .
Statemen adalah instruksi lengkap dalam bahasa C diakhiri dgn tanda ; (titik
koma) contoh : A= 2+3; Statemen dan ekspresi C arduino indentik dengan
ANSI-C , Struktur Program C Arduino minimal terdiri dari dua fungsi yaitu
setup() dan loop().

MODUL PEMBELAJARAN ROBOT EDUKASI Page 21


Fungsi setup() dijalankan pertama kali setiap board arduino
dihidupkan sedangkan fungsi loop() dijalankan terus menerus selama board
arduino hidup. Pada program standar C ANSI fungsi yg pertama dijalankan
adalah fungsi main() pada C arduino adalah fungsi setup().

berikut ini struktur minimal C Arduino :

Penggunaan If/Else

if (expression) //jika ekspresi bernilai true laksanakan blok statemen


dibawahnya

statement1;

MODUL PEMBELAJARAN ROBOT EDUKASI Page 22


statement2;

atau jika satement hanya 1 baris

if(expression)

statement;

OPERATOR DAN EXPRESSI

Operator Penugasan ( “=” )

Setelah variabel telah dideklarasikan, operasi dapat dilakukan pada variable


menggunakan operator penugasan (=). Sebuah nilai yang diberikan untuk
variabel dapat berupa sebuah konstanta, variabel, atau ekspresi. Sebuah
ekspresi dalam bahasa C adalah kombinasi dari operan (pengidentifikasi) dan
operator. operaor penugasan antara lain sebagai berikut:

Variable = nilai ,

contoh nilai_max = 10;

Operator Arithmetic :

Perkalian *

Pembagian /

Modulo %

Penjumlahan +

Pengurangan atau Negasi –

Operator Logika

MODUL PEMBELAJARAN ROBOT EDUKASI Page 23


AND &&

OR ||

Operator relasional

sama dengan ==

tdk sama dengan !=

lebih kecil <

lebih kecil atau sama dengan <=

lebih besar >

lebih besar atau sama dengan >=

PERTEMUAN 3
MODUL VII
PEMROGRAMAN DASAR ROBOT PEMBACA GARIS MENGGUNAKAN
FUNGSI IF

Pemrograman LCD

MODUL PEMBELAJARAN ROBOT EDUKASI Page 24


Buat Program Di bawah ini:
/*
I2C address 0x27
RS P0
RW P1
E P2
D4 P4
D5 P5
D6 P6
D7 - P7
Backlight - P3
Bl Polarity POSITIVE
*/

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // See above -


same as DF Robot

void setup()
{
lcd.begin (16, 2);
lcd.setBacklight(HIGH);
lcd.setCursor(0, 0);
lcd.print("BARADISTAdIMAS");
lcd.setCursor(0, 1);
lcd.print("I2C to LCD-1605");
}

void loop()
{

MODUL PEMBELAJARAN ROBOT EDUKASI Page 25


Program Penggabungan pergerakkan motor dengan lcd.

#include <AFMotor.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//M1, M2, M3, M4


AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // See above -


same as DF Robot

void setup() {
motor1.setSpeed(255);
motor1.run(RELEASE);
motor2.setSpeed(255);
motor2.run(RELEASE);
motor3.setSpeed(255);
motor3.run(RELEASE);
motor4.setSpeed(255);
motor4.run(RELEASE);

lcd.begin (16, 2);


lcd.setBacklight(HIGH);
lcd.setCursor(0, 0);
lcd.print("BARADISTA DIMAS ");
lcd.setCursor(0, 1);
lcd.print("S2 PTK UNJ 2014");
}

void mundur() {
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void maju() {
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);

MODUL PEMBELAJARAN ROBOT EDUKASI Page 26


motor4.run(BACKWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void kanan() {
motor1.run(FORWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void kiri() {
motor1.run(BACKWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(BACKWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void tolak_garis(){
{ int threshold = 20;
if(analogRead(sensorPin) > threshold) {
maju();
}
else
{ mundur();
delay(2000);
kanan();
delay(2000);}
}}
int i;

void loop() {
kiri();

MODUL PEMBELAJARAN ROBOT EDUKASI Page 27


Pemprograman Kalibrasi Sensor Robot :

int data;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.print("Baca Analog Input 1");
}

void loop() {
// put your main code here, to run repeatedly:
data = analogRead(1);
Serial.print("Nilai ADC=");
Serial.println(data);
delay(1000);
}

Pemprograman Robot Pengikut Garis.


#include <AFMotor.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//M1, M2, M3, M4


AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // See above -


same as DF Robot

int sensorPin = A3; // select the input pin for the potentiometer
int sensorPin2 = A4;
int sensorPin3 = A5;
int sensorValue = 0; // variable to store the value coming from the sensor

void setup() {
motor1.setSpeed(255);
motor1.run(RELEASE);
motor2.setSpeed(255);
motor2.run(RELEASE);
motor3.setSpeed(255);
motor3.run(RELEASE);

MODUL PEMBELAJARAN ROBOT EDUKASI Page 28


motor4.setSpeed(255);
motor4.run(RELEASE);

lcd.begin (16, 2);


lcd.setBacklight(HIGH);
lcd.setCursor(0, 0);
lcd.print("Robot Pengikut ");
lcd.setCursor(0, 1);
lcd.print("Garis");
}
void mundur() {
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void maju() {
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void berhenti() {
motor1.setSpeed(0);
motor2.setSpeed(0);
motor3.setSpeed(0);
motor4.setSpeed(0);
}

void kanan() {
motor1.run(FORWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);

MODUL PEMBELAJARAN ROBOT EDUKASI Page 29


motor4.setSpeed(200);
}

void kiri() {
motor1.run(BACKWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(BACKWARD);
motor1.setSpeed(200);
motor2.setSpeed(200);
motor3.setSpeed(200);
motor4.setSpeed(200);
}
void baca_garis()
{
int data = 140;
if(analogRead(sensorPin) > data) {
kanan();
}
else
{ kiri();
delay(500);
maju();
delay(500);}}

{
int data= 50;
if(analogRead(sensorPin2) <= data) {
baca_garis();
}};

void loop() {
baca_garis();
}

MODUL PEMBELAJARAN ROBOT EDUKASI Page 30


PERTEMUAN 3
MODUL VIII
MERAKIT ROBOT TANGAN

Analisa dan buat robot tangan di bawah ini :

MODUL PEMBELAJARAN ROBOT EDUKASI Page 31


MODUL PEMBELAJARAN ROBOT EDUKASI Page 32
MODUL PEMBELAJARAN ROBOT EDUKASI Page 33
MODUL PEMBELAJARAN ROBOT EDUKASI Page 34
MODUL PEMBELAJARAN ROBOT EDUKASI Page 35
MODUL PEMBELAJARAN ROBOT EDUKASI Page 36
PERTEMUAN 3
MODUL XI
PEMROGRAMAN DASAR PERGERAKKAN ROBOT TANGAN
Pemprgraman robot tangan, menggerakkan bagian bawah robot (rotasi) :
#include <AFMotor.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//M1, M2, M3, M4


AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // See above -


same as DF Robot

void setup() {
motor1.setSpeed(255);
motor1.run(RELEASE);

MODUL PEMBELAJARAN ROBOT EDUKASI Page 37


motor2.setSpeed(255);
motor2.run(RELEASE);
motor3.setSpeed(255);
motor3.run(RELEASE);
motor4.setSpeed(255);
motor4.run(RELEASE);
}

void bawah_kiri() {
motor4.run(BACKWARD);
motor4.setSpeed(200);
}

void bawah_kanan() {
motor4.run(FORWARD);
motor4.setSpeed(200);
}
void loop() {
bawah_kiri(){
delay(1000);
bawah_kanan();
delay(1000);
}

Latihan:
1. Buat program robot menaikan dan menurunkan lengan robot?

2. Buat program robot menjepit dan melepaskan tangan robot?

3. Buat program gabungan dari rotasi robot ke kanan 2 detik lalu


lengan robot naik selama 2 detik setelah itu jepitan robot selama
2 detik?

4. Buat program gabungan dari rotasi robot ke kiri 2 detik lalu


lengan robot turun selama 2 detik setelah itu jepitan robot
melepaskan selama 2 detik?

5. Kalibrasi sensor sentuh pada robot tangan?

MODUL PEMBELAJARAN ROBOT EDUKASI Page 38


PERTEMUAN 4
MODUL X
PEMROGRAMAN DASAR PENGENDALIAN ROBOT TANGAN
MENGGUNAKAN FUNGSI IF

Pemprograman Robot tangan:

#include <AFMotor.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//M1, M2, M3, M4


AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // See above -


same as DF Robot

int sensorPin = A5;


int sensorPin2 = A4;
int sensorPin3 = A3;
int sensorPin4 = A2;
int sensorPin5 = A1;
int sensorPin6 = A0;
int sensorValue = 0; // variable to store the value coming from the sensor

void setup() {
motor1.setSpeed(255);
motor1.run(RELEASE);
motor2.setSpeed(255);
motor2.run(RELEASE);
motor3.setSpeed(255);
motor3.run(RELEASE);
motor4.setSpeed(255);
motor4.run(RELEASE);}

void bawah_kiri() {
motor4.run(BACKWARD);
motor4.setSpeed(200);
}

MODUL PEMBELAJARAN ROBOT EDUKASI Page 39


void bawah_kanan() {
motor4.run(FORWARD);
motor4.setSpeed(200);
}

void tengah_naik() {
motor1.run(BACKWARD);
motor1.setSpeed(200);
}

void tengah_turun() {
motor1.run(FORWARD);
motor1.setSpeed(150);
}

void grip_tekan() {
motor2.run(FORWARD);
motor2.setSpeed(200);
}
void grip_lepas() {
motor2.run(BACKWARD);
motor2.setSpeed(200);
}
void berhenti_bawah() {
motor4.setSpeed(0);
}
void berhenti_tengah() {
motor1.setSpeed(0);
}
void berhenti_grip() {
motor2.setSpeed(0);
}
void tekan_bawah_kanan()
{int data = 10;
int data2 = 90;

{ if(analogRead(sensorPin) <= data) {


bawah_kanan();
delay(300);
}
if(analogRead(sensorPin) >= data2) {
berhenti_bawah();
delay(10);
}};
}
void tekan_bawah_kiri()
{int data = 25;
int data2 = 90;
{ if(analogRead(sensorPin2) <= data) {

MODUL PEMBELAJARAN ROBOT EDUKASI Page 40


bawah_kiri();
delay(300);
}
if(analogRead(sensorPin2) >= data2) {
berhenti_bawah();
delay(10);
}};
}
void tekan_tengah_bawah()
{int data = 10;
int data2 = 90;

{ if(analogRead(sensorPin6) <= data) {


tengah_turun();
delay(300);
}
if(analogRead(sensorPin6) >= data2) {
berhenti_tengah();
delay(10);
}};

}
void tekan_tengah_atas()
{int data = 10;
int data2 = 90;

{ if(analogRead(sensorPin5) <= data) {


tengah_naik();
delay(300);
}
if(analogRead(sensorPin5) >= data2) {
berhenti_tengah();
delay(10);
}};
}
void tekan_grip()
{int data = 10;
int data2 = 90;

{ if(analogRead(sensorPin3) <= data) {


grip_tekan();
delay(300);
}
if(analogRead(sensorPin3) >= data2) {
berhenti_grip();
delay(10);
}};

MODUL PEMBELAJARAN ROBOT EDUKASI Page 41


void lepas_grip()
{int data = 10;
int data2 = 90;

{ if(analogRead(sensorPin4) <= data) {


grip_lepas();
delay(300);
}
if(analogRead(sensorPin4) >= data2) {
berhenti_grip();
delay(10);
}};
}
void loop() {

tekan_bawah_kanan();
tekan_bawah_kiri();
tekan_tengah_atas();
tekan_tengah_bawah();
lepas_grip();
tekan_grip();
}

MODUL PEMBELAJARAN ROBOT EDUKASI Page 42


PERTEMUAN 4
MODUL XI
MERAKIT ROBOT BERKAKI
Dari empat gambar robot dibawah ini rangkailah mekanik dengan benar
:

MODUL PEMBELAJARAN ROBOT EDUKASI Page 43


MODUL PEMBELAJARAN ROBOT EDUKASI Page 44
PERTEMUAN 4
MODUL XII
PEMROGRAMAN DASAR PERGERAKKAN ROBOT BERKAKI
#include <AFMotor.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//M1, M2, M3, M4


AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // See above -


same as DF Robot

int sensorPin = A2;


int sensorPin2 = A1;
int sensorPin3 = A0;

MODUL PEMBELAJARAN ROBOT EDUKASI Page 45


void setup() {
motor1.setSpeed(255);
motor1.run(RELEASE);
motor2.setSpeed(255);
motor2.run(RELEASE);
motor3.setSpeed(255);
motor3.run(RELEASE);
motor4.setSpeed(255);
motor4.run(RELEASE);
}

void mundur() {
motor3.run(FORWARD);
motor4.run(FORWARD);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void maju() {
motor3.run(BACKWARD);
motor4.run(BACKWARD);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void kiri() {
motor3.run(BACKWARD);
motor4.run(FORWARD);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void kanan() {
motor3.run(FORWARD);
motor4.run(BACKWARD);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void berhenti() {
motor3.setSpeed(0);
motor4.setSpeed(0);
}

void loop() {

MODUL PEMBELAJARAN ROBOT EDUKASI Page 46


kanan();
delay(3000);
kiri();
delay(3000);
maju();
delay(3000);
}

PERTEMUAN 4
MODUL XIII
PEMROGRAMAN DASAR PENGENDALIAN ROBOT BERKAKI
MENGGUNAKAN FUNGSI IF
Program penggunaan IF pada robot berkaki :
#include <AFMotor.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//M1, M2, M3, M4


AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // See above -


same as DF Robot

int sensorPin = A2;


int sensorPin2 = A1;
int sensorPin3 = A0;

void setup() {
motor1.setSpeed(255);
motor1.run(RELEASE);
motor2.setSpeed(255);
motor2.run(RELEASE);
motor3.setSpeed(255);
motor3.run(RELEASE);
motor4.setSpeed(255);
motor4.run(RELEASE);
}

MODUL PEMBELAJARAN ROBOT EDUKASI Page 47


void mundur() {
motor3.run(FORWARD);
motor4.run(FORWARD);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void maju() {
motor3.run(BACKWARD);
motor4.run(BACKWARD);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void kiri() {
motor3.run(BACKWARD);
motor4.run(FORWARD);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void kanan() {
motor3.run(FORWARD);
motor4.run(BACKWARD);
motor3.setSpeed(200);
motor4.setSpeed(200);
}

void berhenti() {
motor3.setSpeed(0);
motor4.setSpeed(0);
}

void sensor_depan()
{int data = 230;
int data2 = 250;

{ if(analogRead(sensorPin) >= data) {


maju();
delay(1000);
}
if(analogRead(sensorPin) <= data2) {
berhenti();
delay(10);

MODUL PEMBELAJARAN ROBOT EDUKASI Page 48


}};}

void sensor_kanan()
{int data = 150;
int data2 = 130;

{ if(analogRead(sensorPin3) >= data) {


kanan();
delay(1000);
}
if(analogRead(sensorPin3) <= data2) {
berhenti();
delay(10);
}};}

void sensor_kiri()
{int data = 100;
int data2 = 90;

{ if(analogRead(sensorPin3) >= data) {

kiri();
delay(1000);
}
if(analogRead(sensorPin3) <= data2) {
berhenti();
delay(10);
}};}

void loop() {
sensor_depan();
sensor_kanan();
sensor_kiri();
}

PERTEMUAN 4
MODUL XIII
EVALUASI

MODUL PEMBELAJARAN ROBOT EDUKASI Page 49


MODUL PEMBELAJARAN ROBOT EDUKASI Page 50

Anda mungkin juga menyukai