0% menganggap dokumen ini bermanfaat (0 suara)
21 tayangan28 halaman

Pemrograman Dasar Robot dengan Arduino

Diunggah oleh

danu jaya saputro
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
21 tayangan28 halaman

Pemrograman Dasar Robot dengan Arduino

Diunggah oleh

danu jaya saputro
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Dasar Pemrograman Robot

dengan Arduino
Oleh:
Dr. Ahmad Ataka
Kelas Online Jago Robotika
16 Agustus 2020

©Jago Robotika 1
Level Dasar
• Apa itu Robot?
• Apa itu Arduino?
• Bagaimana memprogram Arduino?
• Input dan Output Digital
• Tipe data
• Loop while
• Input Analog dan Analog-to-Digital Converter
• Output Analog

©Jago Robotika 2
Apa itu Robot?
Robot Manusia
Controller Otak
Sensor Indra
Aktuator Otot
©Jago Robotika 3
Apa itu Robot?

ROBOT

Sensor Controller Aktuator

Lingkungan Aksi

©Jago Robotika 4
Apa itu Arduino?

• Bisa digunakan sebagai


controller
• Mudah digunakan
• Murah
• Open source
• Dilengkapi berbagai komponen
pelengkap seperti sensor dan
actuator
• Terdiri dari berbagai jenis
disesuaikan dengan
kebutuhan.

©Jago Robotika 5
Software Arduino IDE

• Bisa didownload secara gratis


• Bisa diinstall di berbagai operating
system
• Tersedia juga versi web / online

©Jago Robotika 6
Praktik program LED
void setup() {
// put your setup code here, to run once:
pinMode(13, OUTPUT);

void loop() {
// put your main code here, to run
repeatedly:
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}

©Jago Robotika 7
Penjelasan program LED
void setup() { Dikerjakan sekali di awal
// put your setup code here, to run once:
pinMode(13, OUTPUT); Set sebagai pin 13
sebagai OUTPUT
}

void loop() { Dikerjakan berulang-


// put your main code here, to run ulang
repeatedly:
digitalWrite(13, HIGH); Sinyal HIGH ke pin 13
delay(500); Delay dalam milidetik
digitalWrite(13, LOW); Sinyal LOW ke pin 13
delay(500);
}

Coba ubah nilai pada fungsi delay() dan amati perubahannya!


©Jago Robotika 8
DIGITAL:

• HIGH/tinggi, 5 volt
Input dan • LOW/rendah, 0 volt

Output Kapan menggunakan DIGITAL?


Digital
• Mengendalikan nyala LED (sebagai
OUTPUT)
• Mendeteksi tombol (sebagai INPUT)

©Jago Robotika 9
Komponen dan Program #define LED_MERAH 2
#define LED_KUNING 3
#define LED_HIJAU 4
#define BUTTON_MERAH 5
#define BUTTON_KUNING 6
#define BUTTON_HIJAU 7

void setup() {
// put your setup code here, to run once:
pinMode(LED_MERAH, OUTPUT);
pinMode(BUTTON_MERAH, INPUT);
}

void loop() {
// put your main code here, to run repeatedly:
int button;
button = digitalRead(BUTTON_MERAH);
if(button == HIGH)
{
digitalWrite(LED_MERAH, HIGH);
}
else
{
digitalWrite(LED_MERAH, LOW);
}
}

Apa penjelasan di balik rangkaian LED dan tombol ini?

©Jago Robotika 10
Penjelasan Komponen dan Program
#define LED_MERAH 2
#define LED_KUNING 3
• Rangkaian LED: #define
#define
LED_HIJAU 4
BUTTON_MERAH 5
Definisi Pin
#define BUTTON_KUNING 6
#define BUTTON_HIJAU 7
GND Digital Ouput
void setup() {
// put your setup code here, to run once:
pinMode(LED_MERAH, OUTPUT); Set pin Button Merah
pinMode(BUTTON_MERAH, INPUT);
sebagai INPUT
}

void loop() {
• Rangkaian Tombol: // put your main code here, to run repeatedly:
int button; Definisi Variabel button
button = digitalRead(BUTTON_MERAH); Pembacaan nilai Pin Button
if(button == HIGH)
GND {
Merah
digitalWrite(LED_MERAH, HIGH); Dijalankan saat button HIGH
5V }
else
Digital Input {
digitalWrite(LED_MERAH, LOW); Dijalankan saat button LOW
}
}
Bisakah kamu menambah program di atas agar kedua tombol yang lain
bisa digunakan untuk menyalakan LED kuning dan LED hijau? ©Jago Robotika 11
If else
if(kondisi1) if(kondisi1 && kondisi2)
{ {
Perintah1; Perintah1;
} }
else if(kondisi2)
{ if(kondisi1 || kondisi2)
Perintah2; {
} Perintah1;
else }
{
Perintah3;
}

©Jago Robotika 12
Tipe Data
Tipe Data Digunakan untuk Range

char Karakter atau bilangan -128 sampai 127


bulat
unsigned char Karakter atau bilangan 0 sampai 255
bulat
int Bilangan bulat -32768 sampai 32767

unsigned int Bilangan bulat 0 sampai 65535

float Bilangan desimal -3.4 x 1038 sampai 3.4 x


1038

©Jago Robotika 13
Program Loop while
#define LED_MERAH 2
#define LED_KUNING 3
#define LED_HIJAU 4
#define BUTTON_MERAH 5
#define BUTTON_KUNING 6
#define BUTTON_HIJAU 7

void setup() {
// put your setup code here, to run once:
pinMode(LED_MERAH, OUTPUT);
pinMode(BUTTON_MERAH, INPUT);
}

void loop() {
// put your main code here, to run repeatedly:
int button;
button = digitalRead(BUTTON_MERAH);
while(button == HIGH)
{
button = digitalRead(BUTTON_MERAH);
digitalWrite(LED_MERAH, HIGH);
}
digitalWrite(LED_MERAH, LOW);
}

©Jago Robotika 14
Penjelasan Program
#define LED_MERAH 2
#define LED_KUNING 3
#define LED_HIJAU 4
#define BUTTON_MERAH 5
#define BUTTON_KUNING 6
#define BUTTON_HIJAU 7

void setup() {
// put your setup code here, to run once:
pinMode(LED_MERAH, OUTPUT);
pinMode(BUTTON_MERAH, INPUT);
}

void loop() {
// put your main code here, to run repeatedly:
int button;
button = digitalRead(BUTTON_MERAH);
while(button == HIGH)
{
button = digitalRead(BUTTON_MERAH); Terus dijalankan saat button HIGH
digitalWrite(LED_MERAH, HIGH);
}
digitalWrite(LED_MERAH, LOW);
}

©Jago Robotika 15
Input Analog & ADC
• DIGITAL hanya mempunyai 2 kemungkinan nilai
• ANALOG nilainya bisa berapa pun
• Contoh: sensor potensiometer yang digunakan sebagai kenop di
berbagai peralatan elektronik
• Arduino adalah sistem DIGITAL. Bagaimana bisa membaca sensor
analog?  ADC (Analog to Digital Converter)
0 5

0 1023

©Jago Robotika 16
Komponen dan Program Potensio
#define LED_MERAH 2
#define LED_KUNING 3
#define LED_HIJAU 4
#define BUTTON_MERAH 5
#define BUTTON_KUNING 6
#define BUTTON_HIJAU 7
#define POTENSIO A0

void setup() {
// put your setup code here, to run once:
pinMode(LED_MERAH, OUTPUT);
pinMode(BUTTON_MERAH, INPUT);
[Link](9600);
}

void loop() {
// put your main code here, to run repeatedly:
int button;
int potentio;
int wait;
button = digitalRead(BUTTON_MERAH);
potentio = analogRead(POTENSIO);
[Link](potentio);
if(button == HIGH)
{
digitalWrite(LED_MERAH, HIGH);
wait = 5000/1024*potentio;
delay(wait);
}
else
{
digitalWrite(LED_MERAH, LOW);
}
©Jago Robotika } 17
Penjelasan komponen dan program
#define LED_MERAH 2
#define LED_KUNING 3
#define LED_HIJAU 4
#define BUTTON_MERAH 5
• Komponen Potensiometer #define
#define
BUTTON_KUNING 6
BUTTON_HIJAU 7
#define POTENSIO A0

void setup() {
GND 5V // put your setup code here, to run once:
Analog Input pinMode(LED_MERAH, OUTPUT);
pinMode(BUTTON_MERAH, INPUT);
[Link](9600);
}

void loop() {
// put your main code here, to run repeatedly:
int button;
int potentio;
int wait;
button = digitalRead(BUTTON_MERAH);
potentio = analogRead(POTENSIO);
Pembacaan nilai analog (0-1023)
[Link](potentio);
if(button == HIGH)
Mengirim nilai potentio ke serial
{
digitalWrite(LED_MERAH, HIGH);
wait = 5000/1024*potentio;
delay(wait);
Konversi potentio (0-1023)
} ke nilai delay (0-5000)
else
{
digitalWrite(LED_MERAH, LOW);
}
} ©Jago Robotika 18
Serial Monitor

©Jago Robotika 19
Tantangan

• Modifikasi code program sebelumnya


untuk mengakses nilai axis pada sensor
Joystick (VRX dan VRY)! Clue: gunakan
perintah analogRead() sebagaimana
kamu membaca nilai potensiometer!
• Ubah code program pembacaan tombol
push button untuk mengakses nilai
tombol pada joystick (SW)! Clue: Set pin
8 Arduino sebagai INPUT_PULLUP dan
gunakan perintah digitalRead() untuk
membaca nilai tombol!

©Jago Robotika 20
• Input Pull up: ketika kondisi normal (tombol
Input Pull up tidak ditekan), nilai pin otomatis HIGH
vs Input? • Input: ketika kondisi normal (tombol tidak
ditekan), nilai pin mengambang

©Jago Robotika 21
• Output digital yang hanya mempunyai nilai
Output LOW (0) atau HIGH (5 volt).
Analog • Output analog bisa memiliki nilai berapa pun
antara 0 sampai 5 volt.

©Jago Robotika 22
Komponen dan Program Servo Motor
#include <Servo.h>
Servo myServo;
#define PushPin 8
#define ServoPin 9

void setup() {
[Link](ServoPin);
pinMode(PushPin,INPUT_PULLUP);
}
void loop() {
int Button = 0;

Button = digitalRead(PushPin);
if(Button == 0)
{
[Link](90);
}
else
{
[Link](0);
}
}

©Jago Robotika 23
Penjelasan Program
#include <Servo.h> Library, berisi perintah untuk menggunakan servo
Servo myServo; Deklarasi variable myServo
#define PushPin 8
#define ServoPin 9

void setup() {
[Link](ServoPin); Definisikan ke pin mana servo terhubung
pinMode(PushPin,INPUT_PULLUP);
}
void loop() {
int Button = 0;

Button = digitalRead(PushPin);
if(Button == 0)
{
[Link](90); Pindahkan servo ke sudut 90
}
else
{
[Link](0); Pindahkan servo ke sudut 0
}
}

©Jago Robotika 24
Tantangan
• Tempelkan sedotan pada motor servo sebagai lengan dari robotmu
• Awalnya, lengan robot berada di posisi tegak (vertical)
• Ketika tombol Joystick ditekan, lengan robot akan bergerak mengikuti sumbu x Joystick (Pin VRX)
• Ketika tombol Joystick kembali ditekan, lengan robot akan diam di posisi terkini. Lengan akan kembali bergerak
jika tombol Joystick ditekan kembali.
• Ketika ada pada mode gerak, jangkauan Gerakan sudut lengan robot akan mengikuti posisi kenop
potensiometer:
• Ketika kenop potensio berada pada posisi kiri maksimal, jangkauan lengan robot 180 derajat, artinya
lengan bisa bergerak dari sudut 0 sampai 180 derajat.
• Ketika kenop potensio diputar ke kanan, jangkauan lengan robot akan berkurang (misal: jangkauannya 90
derajat dari sudut 45 sampai 135 derajat).
• Hingga akhirnya, ketika kenop berada pada posisi kanan maksimal, jangkauan lengan robot tidak bergerak
karena jangkaun gerakannya 0 dan robot statis di sudut 90 derajat.
• Ketika jangkauan lengan robot cukup luas (misal antara 60 derajat sampai 90 derajat), lampu LED merah
menyala. Ketika jangkauannya berkurang (antara 30 sampai 60 derajat), lampu LED kuning menyala. Ketika
jangkauannya berkurang lagi (antara 0 sampai 30 derajat), lampu LED hijau menyala.

©Jago Robotika 25
©Jago Robotika 26
Ada pertanyaan?

©Jago Robotika 27
Sampai jumpa di Kelas Online
Arduino Level Menengah

Anda mungkin juga menyukai