MODUL I
PENGANTAR ARDUINO
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
dan tombol reset. Hal tersebut adalah semua yang diperlukan untuk
dengan adaptor AC-DC atau baterai, anda sudah dapat bermain-main dengan
Arduino UNO anda tanpa khawatir akan melakukan sesuatu yang salah.
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
mudah.
Tegangan operasi 5V
DC)
SRAM 2 KB
EEPROM 1 KB
1. Pemrograman
Software (IDE) yang bisa anda dapatkan. Chip ATmega328 yang terdapat
pada Arduino Uno R3 telah diisi program awal yang sering disebut bootloader.
(IDE), dan anda sudah bisa mulai memrogram chip ATmega328. Lebih mudah
lagi, di dalam Arduino Software sudah diberikan banyak contoh program yang
bootloader dan melakukan pemrograman langsung via header ICSP (In Circuit
USB to Serial. Firmware ATmega16U2 di load oleh DFU bootloader, dan untuk
DFU programmer (Mac OSX dan Linux), atau menggunakan header ISP
yang dapat direset untuk melindungi port USB komputer/laptop anda dari
500mA ditarik pada port USB tersebut, sirkuit proteksi akan secara otomatis
telah kembali.
Board Arduino Uno dapat ditenagai dengan power yang diperoleh dari
koneksi kabel USB, atau via power supply eksternal. Pilihan power yang
External power supply dapat diperoleh dari adaptor AC-DC atau bahkan
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
Vin. Ini adalah pin yang digunakan jika anda ingin memberikan power
7V - 12V
Pin 5V. Ini adalah pin output dimana pada pin tersebut mengalir
3V3. Ini adalah pin output dimana pada pin tersebut disediakan
1. Memori
buah digital pin yang dapat digunakan sebagai input atau output, sengan
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
Serial, terdiri dari 2 pin : pin 0 (RX) dan pin 1 (TX) yang digunakan
External Interrups, yaitu pin 2 dan pin 3. Kedua pin tersebut dapat
attachInterrupt()
LED : Pin 13. Pada pin 13 terhubung built-in led yang dikendalikan oleh
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
adalah :
3. Komunikasi
UART TTL (5V) yang tersedia di pin 0 (RX) dan pin 1 (TX). Chip ATmega16U2
melalui USB dan akan tampil sebagai Virtual Port di komputer. Firmware 16U2
tambahan.
memudahkan data textual untuk dikirim menuju Arduino atau keluar dari
ditransmisikan melalui chip USB to Serial via kabel USB ke komputer. Untuk
library
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
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 II
void setup() { // membuat fungsi menggunakan void, kegunaanya adalah untuk membuat suatu fungsi berjalan
void loop() { // void ini digunakan untuk program yang akan dieksekusi
Latihan
Dari program di atas buatlah program di bawah ini:
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
drive dan holonomic drive. Pada Gambar 2.5 merupakan contoh mobile 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).
2. Trycle Drive
Trycyle drive merupakan sistem gerak dengan tiga buah roda. Dua buah roda
sebuah roda diberlakukan sebagai kemudi yang dapat berputar (setir kemudi),
depan dengan roda belakang dapat dilihat pada Gambar dibawah Contoh
sistem gerak ini pada kehidupan sehari-hari adalah alat transportasi becak
dan bajaj.
3. Syncronous Drive
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.
mobile robot.
PERTEMUAN 2
MODUL V
PEMROGRAMAN DASAR PERGERAKKAN ROBOT BERODA
Buat Program Di bawah ini:
#include <AFMotor.h>
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);
}
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() {
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
1. ekspresi,
2. statemen,
3. blok statemen
4. blok fungsi
Penggunaan If/Else
statement1;
if(expression)
statement;
Variable = nilai ,
Operator Arithmetic :
Perkalian *
Pembagian /
Modulo %
Penjumlahan +
Operator Logika
OR ||
Operator relasional
sama dengan ==
PERTEMUAN 3
MODUL VII
PEMROGRAMAN DASAR ROBOT PEMBACA GARIS MENGGUNAKAN
FUNGSI IF
Pemrograman LCD
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
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()
{
#include <AFMotor.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
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() {
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);
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();
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);
}
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);
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);
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();
}
void setup() {
motor1.setSpeed(255);
motor1.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?
#include <AFMotor.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
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);
}
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;
}
void tekan_tengah_atas()
{int data = 10;
int data2 = 90;
tekan_bawah_kanan();
tekan_bawah_kiri();
tekan_tengah_atas();
tekan_tengah_bawah();
lepas_grip();
tekan_grip();
}
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() {
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>
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 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;
void sensor_kanan()
{int data = 150;
int data2 = 130;
void sensor_kiri()
{int data = 100;
int data2 = 90;
kiri();
delay(1000);
}
if(analogRead(sensorPin3) <= data2) {
berhenti();
delay(10);
}};}
void loop() {
sensor_depan();
sensor_kanan();
sensor_kiri();
}
PERTEMUAN 4
MODUL XIII
EVALUASI