Ebook Arduino Jilid 1 PDF
Ebook Arduino Jilid 1 PDF
https://www.cronyos.com/ebookgratis
BELAJAR ARDUINO
FROM ZERO TO HERO
Jilid 1
ِ ِبسْ ِم ه
ِ َّللا الره حْ م
َن ال هرحِيم
Semoga buku ini bermanfaat untuk pembaca yang budiman semua. Penulis
hanyalah manusia biasa yang tidak luput dari kekurangan dan kesalahan,
oleh sebab itu penulis juga menunggu komentar, kritik dan saran yang
membangun untuk perbaikan buku ini dari waktu ke waktu
Umar bin khatab berkata : “semoga Allah merahmati orang yang telah
menunjukan aib-aib kami di hadapan kami.”
Kami memohon kepada Allah semoga Allah menjadikan amalan ini semata –
mata ikhlas karena mengharap ridhonya. Aamiin
Eromoko, Wonogiri
April 2020
Penulis
Microcontroller .................................................................................. 1
Apa itu Arduino ................................................................................. 1
Arduino Uno...................................................................................... 2
Arduino Mega .................................................................................... 3
Arduino Nano .................................................................................... 4
Arduino Pro Mini ................................................................................ 5
Dimana Saya dapat membeli Arduino ................................................... 6
Apa itu Software Arduino IDE .............................................................. 7
Cara install Driver Arduino .................................................................. 7
Menulis Program ............................................................................... 15
Microcontroller ATmega328P
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 14
PWM Digital I/O Pins 6
Analog Input Pins 6
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (ATmega328P) of which 0.5 KB
used by bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Clock Speed 16 MHz
LED_BUILTIN 13
Length 68.6 mm
Width 53.4 mm
Weight 25 g
Microcontroller ATmega2560
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 54
Analog Input Pins 16
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 256 KB of which 8 KB used by bootloader
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz
LED_BUILTIN 13
Length 101.52 mm
Width 53.3 mm
Weight 37 g
Microcontroller ATmega328
Operating Voltage 5V
Flash Memory 32 KB of which 2 KB used by bootloader
SRAM 2 KB
Clock Speed 16 MHz
Analog IN Pins 8
EEPROM 1 KB
DC Current per I/O Pins 40 mA (I/O Pins)
Input Voltage 7-12 V
Digital I/O Pins 22 (6 of which are PWM)
PWM Output 6
Power Consumption 19 mA
PCB Size 18 x 45 mm
Weight 7g
Microcontroller ATmega328
3.35 -12 V (3.3V model) or 5 - 12 V (5V
Board Power Supply
model)
Circuit Operating Voltage 3.3V or 5V (tergantung model)
Digital I/O Pins 14
PWM Pins 6
UART 1
SPI 1
I2C 1
Analog Input Pins 6
External Interrupts 2
DC Current per I/O Pin 40 mA
Flash Memory 32KB of which 2 KB used by bootloader
SRAM 2 KB *
EEPROM 1 KB *
8 MHz (3.3V versions) or 16 MHz (5V
Clock Speed
versions)
Dipasaran ada beberapa pilihan arduino, sebagai contoh untuk arduino uno,
ada yang menjual dengan chip programmer atmega16u2 dan CH340,
biasanya untuk board arduino yang menggunakan chip programmer ch340
harganya lebih murah
Selain itu jika kita membeli yang versi CH340 maka saat instalasi software
arduino IDE kita perlu menginstall secara terpisah driver CH340 itu sendiri.
4. Selesai
6. lalu kilik Next, dan Windowspun akan mencari dan menginstal driver
yang berada pada Folder tersebut.
“Ada dua nikmat (dari Allah Ta’ala) yang kurang diperhatikan oleh
banyak manusia (yaitu) kesehatan dan waktu luang
Berikut ini adalah antar muka software arduino IDE berserta perintah –
perintahnya yang nantinya akan digunakan untuk memprogram arduino
2. Edit
1) Undo / Redo
Kembali (undo) / maju (redo) satu langkah atau lebih saat menulis
program
2) Cut
Hapus teks yang dipilih dari editor dan meletakkannya di clipboard.
3) Copy
Menggandakan teks yang dipilih di editor dan letakkan di clipboard.
4) Copy for Forum
Menyalin Sketch ke clipboard dalam bentuk yang sesuai untuk
posting ke forum Arduino, lengkap dengan pewarnaan Sketch
5) Salin sebagai HTML
Menyalin Sketchke clipboard sebagai HTML (cocok untuk disematkan
di halaman web)
6) Paste
Menempelkan konten di clipboard ke posisi kursor di editor
3. Sketsa
1) Verify / Compile
Memeriksa kesalahan yang ada pada sketch
2) Upload
Mengkompilasi dan mengunggah file biner ke Arduino
3) Upload using Programmer
Mengkompilasi dan mengunggah file biner ke IC mikrokontroller
menggunakan external programmer seperti USBASP / FT232 atau
yang lain
4) Export compiled Binery
Menyimpan file .hex yang dapat disimpan sebagai arsip atau
diunggah ke Board Arduino menggunakan alat lain.
5) Show Skecth Folder
Membuka Lokasi Folder sketch yang dibuka.
6) Include Library
Menambahkan Library ke dalam Skecth. Selain itu, dari item menu
ini dapat diakses Library Manager dan mengimpor Library baru dari
file .zip.
7) Add File..
Menambahkan file Sketch. File baru akan ditampilkan di tab. File
dapat dihapus dari Sketch menggunakan menu tab yang dapat
diakses dengan mengklik ikon segitiga
4. Tools
1) Auto Format
Memformat kode pada Sketch dengan baik, Seperti menambahkan
Tab secara otomatis pada karakter didalam kurung kurawal agar
lebih menjorok kedepan.
2) Archive Sketch
Mengarsipkan salinan Sketch saat ini dalam format “.zip”. Arsip akan
ditempatkan di direktori yang sama dengan Sletch saat ini.
5. Help
Menemukan akses mudah ke sejumlah dokumen pembantu yang ada
didalam software Arduino IDE seperti akses ke Getting Started,
Reference, dan dokumen lain yang dapat diakses secara offline tanpa
koneksi internet
6. Compile / Verify
Memeriksa Program dari adanya kesalahan / error
7. Upload
Mengcompile program dan mengunggahnya ke Board Arduino
8. New
Membuat Skecth baru
9. Open
Membuka File Sketch
10. Save
Menyimpan File Sketch
Langkah
1. Buka Software Arduino IDE
2. Buat File Baru (File > New)
3. Copy dan Paste coding berikut ke text editor
void setup()
{
// put your setup code here, to run once:
}
void loop()
{
// put your main code here, to run repeatedly:
}
Penjelasan
Pada Latihan ini kita belajar tentang cara meng-compile sketch Arduino.
Langkah
1. Buka Software Arduino IDE
Void setup()
{
// taruh kode disini untuk dijalankan satu kali
}
void loop() {
// taruh kode di sini untuk dijalankan terus menerus
}
Penjelasan
Pada latihan kali ini kita belajar bahwa pada pemrograman arduino ini ada
istilah yang namanya “case sensitive”, dimana saat kita salah menuliskan
program baik itu salah besar kecilnya huruf seperti yang seharusnya “void”
salah menulis “Void” seperti kasus diatas, kurang titik koma, kurang titik
atau bahkan kelebihan spasi maka akan mengakibatkan kode / program
yang kita tulis tidak bisa di compile.
Langkah
1. Hubungkan Arduino ke Port USB Laptop
2. Pilih Board (Tools > Board) “Arduino / Genuino Uno”
void setup()
{
// put your setup code here, to run once:
}
void loop()
{
// put your main code here, to run repeatedly:
}
Penjelasan
Pada latihan kali ini kita belajar cara meng-upload program ke board arduino
Bahan
1. Arduino Uno Board
void setup() {
// taruh kode disini untuk dijalankan sekali
}
void loop() {
//taruh kode disini untuk dijalankan berulang
}
Penjelasan
Pada latihan kali ini kita belajar tentang cara memberikan komentar pada
program arduino, komentar ini berguna untuk memberi catatan pada
program yang kita buat. pada penulisan program arduino ada dua cara,
yaitu dengan cara memberikan 2 “//”garis miring didepan komentar seperti
contoh program diatas atau dengan memberikan tanda “/*” didepan
komentar dan tanda “*/”dibelakang komentar, apa bedanya? Bedanya
adalah penggunaan “//” terbatas hanya untuk 1 baris dan “/* - */” bisa lebih
dari satu baris, contoh penulisanya untuk yang lebih dari satu baris adalah
sebagai berikut:
void setup() {
/* taruh kode disini
Atau disini
Atau disini
untuk dijalankan sekali */
}
void loop() {
/* Atau taruh kode disini
Atau disini
Atau disini
untuk dijalankan berulang */
}
Bahan
1. Arduino Uno Board
void setup() {
Serial.begin(9600); //baudrate
Serial.println("joss");
}
void loop() {
Serial.println("gass");
delay(1000);
}
Selain belajar tentang cara mengirim data serial, Pada program diatas ada
beberapa pelajaran yang dapat kita ambil
1. Ketika membuka serial monitor maka akan tampil karakter “joss” sekali
dan karakter “gass” berulangkali, karakter “joss” tampil akibat dari
adanya baris kode
Serial.println("joss");
Serial.println("gass");
void setup() {
void loop() {
2. Saat karakter “gass” tampil, ada jeda selama beberapa saat sebelum
tampil karakter “gass” berikutnya, jeda tersebut akibat dari adanya baris
program
delay(1000);
delayMicroseconds(1000000);
void setup() {
Serial.begin(9600);
Serial.print("joss");
}
void loop() {
Serial.print("gass");
delay(1000);
}
void setup() {
Serial.begin(300);
Serial.print("joss");
}
void loop() {
Serial.print("gass");
}
Dengan ini
void setup() {
Serial.begin(2000000);
Serial.print("joss");
}
void loop() {
Serial.print("gass");
}
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. LED
5. Resistor 330Ω
Langkah
1. Buat rangkaian seperti gambar dibawah ini (posisi arduino off)
Penjelasan
Pada latihan kali ini ada beberapa pelajaran yang dapat diambil, yaitu :
1. Kita belajar untuk menyalakan LED menggunakan pin 5V dan GND dari
Aduino
2. Kita belajar menggunakan breadboard, di dalam breadboard sendiri ada
metal konduktor yang berfungsi untuk menghubungkan tiap lubang
dengan jalur seperti gambar di bawah ini:
Jadi pada rangkaian diatas arus yang menglir pada rangkaian LED adalah
15mA (Aman untuk LED)
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. LED
5. Resistor 330Ω
void setup() {
}
void loop() {
}
5. Lihat yang terjadi pada LED, LED mati? Benar ! karena tidak ada
program yang sedang bekerja di Arduino
6. Selanjutnya Upload Program berikut ini
/*
Program menyalakan LED menggunakan program
*/
void setup() {
//memfungsikan pin digital 13 sebagai output
pinMode(13, OUTPUT);
}
void loop() {
// memberikan sinyal HIGH pada pin D13
digitalWrite(13, HIGH);
Penjelasan
Pada latihan kali ini kita belajar tentang cara menyalakan sebuah LED
menggunakan program di Arduino, pada latihan kali ini kita belajar
menyalakan LED dengan perintah digital, apa itu perintah digital?
Perintah digital dalam latihan ini adalah perintah yang dimana hanya ada 2
kondisi yaitu LOW dan HIGH atau 0 dan 1, LOW berarti pin yang kita
perintah bertegangan 0 volt dan HIGH yang berarti pin yang kita perintah
bertengangan 5 Volt, perintah digital pada pemrograman arduino dapat
dijalankan dengan menuliskan baris program digitalW
digitalWrite(pin,logika). Sebagai contoh untuk mematikan LED pada pin
digital 13 silahkan upload program berikut (masih dengan rangkaian yang
sama)
/*
Program menyalakan LED menggunakan program
*/
void setup() {
//memfungsikan pin digital 13 sebagai output
pinMode(13, OUTPUT);
}
void loop() {
// memberikan sinyal / logika LOW pada pin D13
digitalWrite(13, LOW);
}
/*
Program menyalakan LED menggunakan program
*/
void setup() {
//memfungsikan pin digital 13 sebagai output
pinMode(13, OUTPUT);
}
void loop() {
// memberikan sinyal / logika LOW pada pin D13
Perintah digitalWrite() dapat kita jalankan di semua pin I/O (input output)
pada board arduino, termasuk juga pada pin Analog, untuk membuktikannya
kalian bisa mencoba program berikut
/*
Program menyalakan LED menggunakan program
*/
void setup() {
//memfungsikan pin Analog 0 sebagai output
pinMode(A0, OUTPUT);
}
void loop() {
// memberikan sinyal / logika HIGH pada pin A0
digitalWrite(A0, 1);
}
Pada beberapa percobaan diatas, ketika kita ingin mengganti pin yang ingin
digunakan maka kita harus mengganti pin yang digunakan pada beberapa
baris code, bayangkan jika nantinya program kita sangat panjang, tentu
tidak efisisien jika kita harus mencari dan mengganti satu persatu, untuk itu
kita perlu memberikan nama untuk setiap pinnya sehingga kita dapat
dengan mudah menghafal pin yang kita gunakan dan mudah ketika nantinya
ingin merubah pin yang akan digunakan, untuk memberikan nama pada
sebuah pin kita bisa menggunakan baris code #define [spasi] nama pin
[spasi] nomor pin. Untuk lebih jelasnya silahkan coba program berikut
menggunakan wiring seperti latihan sebelumnya
/*
Memberikan nama pada pin
*/
#define pinLampu A0 //mendefinisikan pin A0 dengan nama pinLampu
void setup() {
//memfungsikan pin Analog 0 sebagai output
pinMode(pinLampu, OUTPUT);
}
void loop() {
// memberikan sinyal / logika HIGH pada pin A0
digitalWrite(pinLampu, HIGH);
}
.... َّللاُ فِى ظِ لِّ ِه َي ْو َم الَ ظِ هل إِاله ظِ لُّ ُه … َو َشابٌّ َن َشأ َ فِى عِ َبادَ ِة َر ِّب ِه
َسب َْع ٌة يُظِ لُّ ُه ُم ه
“Ada tujuh golongan manusia yang akan dinaungi oleh Allah dalam
naungan (Arsy-Nya) pada hari yang tidak ada naungan (sama sekali)
kecuali naungan-Nya: …Dan seorang pemuda yang tumbuh dalam
ibadah (ketaatan) kepada Allah …”
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. LED
5. Resistor 330Ω
Langkah
1. Buat rangkaian seperti gambar dibawah ini
/*
Program LED berkedip
*/
#define LED 13
void setup() {
//memfungsikan pin digital 13 sebagai output
pinMode(LED, OUTPUT);
}
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. Push Button
5. Resistor 330Ω
Langkah
1. Buatlah rangkaian seperti gambar dibawah ini
/*
Program membaca sinyal digital dari Push Button
*/
void loop() {
// menampilkan hasil pembacaan digital dari pin 2
Serial.println(digitalRead(PB));
delay(1);
}
Penjelasan
Pada latihan ini kita belajar untuk membaca nilai digital dari pin 2 arduino
dan menampilkannya di serial monitor, ada beberapa pelajaran yang dapat
kita ambil pada latihan ini, salah satunya adalah penggunaan pull up
resistor, pada rangkaian diatas kita menggunakan resistor yang berfungsi
sebagai resistor pull up, resistor pull up berfungsi agar arduino tidak bingung
ketika membaca nilai dari pin 2, karena ketika tidak memakai resistor pull
up maka saat push button tidak ditekan maka pin 2 tidak terhubung ke GND
dan juga tidak terhubung ke 5V, sehingga akan terjadi floating
(mengambang)
Oleh sebab itu digunakanlah resistor pull up agar ketika push button tidak
ditekan maka pin 2 akan terhubung dengan 5V melalui resistor sehingga pin
2 akan bernilai HIGH dan ketika push button ditekan maka pin 2 akan
terhubung ke GND secara langsung (tanpa hambatan) dan pin 2 akan
bernilai LOW, selain rangkaian yang menggunakan resistor pull up ada juga
rangkaian yang menggunakan pull down, rangkaian yang menggunakan
resistor pull down adalah seperti gambar berikut
/*
Program membaca sinyal digital dari Push Button
*/
#define PB 2
void setup() {
// mengatur baudrate
Serial.begin(9600);
// mendefinikasi pin 2 sebagai input dan mengaktifkan internal pull up resistor
pinMode(PB, INPUT_PULLUP);
}
void loop() {
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. Push Button
5. LED
6. Resistor 330Ω
Langkah
1. Buatlah rangkaian seperti gambar dibawah ini
/*
Kontrol LED dengan push button
*/
//mendefinisikan pin 3 bernama LED
#define LED 3
//mendefinisikan pin 4 bernama pb
#define pb 4
void setup() {
// set pin LED sebagai pin Output
pinMode(LED,OUTPUT);
// set pin pb sebagai input dengan Pull Up resistor
pinMode(pb, INPUT_PULLUP);
void loop() {
if (digitalRead(pb) == LOW) //jika pin pb LOW (push button ditekan)
{ // maka
digitalWrite(LED,HIGH); // nyalakan LED
}
3. Tekan push button, maka LED akan hidup dan jika push button dilepas
maka LED akan mati
Penjelasan
Pada latihan kali ini kita coba menggabungkan beberapa progam yang sudah
pelajari sebelumnya, pada latihan ini juga ada pelajaran baru yaitu
penggunaan “IF Statement Conditions” dan Operator matematika.
Apa itu IF Statement Conditions? Adalah sebuah logika pemrograman “JIKA
– MAKA”, seperti pada program diatas kita menginginkan logika
Adapun pada program diatas hanya terdapat 1 kondisi, namun logika JIKA –
MAKA ini dapat kita tambah kondisinya menjadi beberapa kondisi dengan
penulisan logika IF ELSE, ELSE IF, ELSE dengan contoh penulisan sebagai
berikut:
IF ELSE
/*
Kontrol LED dengan push button
*/
void loop() {
//jika pin pb LOW (push button ditekan
if (digitalRead(pb == LOW))
{ // maka
digitalWrite(LED,HIGH); // nyalakan LED
}
// jika kondisi if tidak terpenuhi
else
{ // maka
digitalWrite(LED,LOW); //matikan LED
}
}
Operator Arti
== Sama dengan
!= Tidak sama dengan
> Lebih dari
< Kurang dari
>= Lebih dari
<= Kurang dari
&& Dan
|| Atau
% Sisa hasil pembagian,
Contoh :
5%5 = 0
5%4 = 1
5%3 =2
5%2 = 1
5%1 = 0
+ Tambah
- Kurang
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. 2 Push Button
5. LED
6. Resistor 330Ω
Langkah
1. Buatlah rangkaian seperti gambar dibawah ini
Hubungkan pin digital 3 dengan pin resitor yang terhubung dengan pin
positif LED, hubungkan pin digital 4 dan 5 dengan salah satu pin push
button dan hubungkan pin push button yang lain dengan ground pin
arduino
2. Upload program berikut ke papan arduino
/*
Kontrol LED dengan push button
void loop() {
//jika pin pb1 dan pb2 LOW (semua push button ditekan)
if (digitalRead(pb1 == LOW) && digitalRead(pb2 == LOW))
{ // maka
digitalWrite(LED,HIGH); // nyalakan LED
}
// jika kondisi if tidak terpenuhi
else
{ // maka
digitalWrite(LED,LOW); //matikan LED
}
}
5. Jika rangkaian dan program benar, Saat salah satu push button ditekan
maka led tidak akan hidup, baru setelah kedua push button ditekan
maka led akan hidup
Penjelasan
Pada latihan ini ada pelajaran yang bisa diambil yaitu penggunaan logika &&
(and), dimana logika and ini digunakan sebagai prasyarat dari if condition.
Masih dengan rangkaian yang sama, pada latihan ini coba upload program
berikut
/*
Kontrol LED dengan push button
*/
void loop() {
//jika pin pb1 atau pb2 LOW (semua push button ditekan)
if (digitalRead(pb1 == LOW) || digitalRead(pb2 == LOW))
{ // maka
digitalWrite(LED,HIGH); // nyalakan LED
}
// jika kondisi if tidak terpenuhi
else
{ // maka
digitalWrite(LED,LOW); //matikan LED
}
}
Tekan salah satu push button dan lihat nyala LED, pada program diatas
terdapat logika or (atau) pada if condition dengan logika “JIKA push button
1 LOW (ditekan) atau push button 2 LOW (ditekan), MAKA nyalakan LED”
Bahan
1. Arduino Uno
2. Breadboard
Langkah
1. Buatlah rangkaian seperti gambar berikut ini
/*
Program Nyala LED dengan PWM
*/
#define LED 3
void setup() {
// mendefinikasi pin 2 sebagai output
pinMode(LED, OUTPUT);
}
void loop() {
// memberikan sinyal PWM pin 3
analogWrite(LED, 255);
}
3. Upload program berikut ini dan lihat seberapa terang nyala LED
void setup() {
// mendefinikasi pin 2 sebagai output
pinMode(3, OUTPUT);
}
void loop() {
// memberikan sinyal PWM pin 3
analogWrite(LED, 160);
}
4. Upload program berikut ini dan lihat seberapa terang nyala LED
/*
Program Nyala LED dengan PWM
*/
#define LED 3
void setup() {
// mendefinikasi pin 2 sebagai output
pinMode(LED, OUTPUT);
}
void loop() {
// memberikan sinyal PWM pin 3
analogWrite(LED, 80);
}
5. Upload program berikut ini dan lihat seberapa terang nyala LED
/*
Program Nyala LED dengan PWM
*/
#define LED 3
void setup() {
void loop() {
// memberikan sinyal PWM pin 3
analogWrite(LED, 0);
}
Penjelasan
Pada latihan ini kita coba belajar mengendalikan nyala terang sebuh LED
menggunakan perintah analogWrite();, pada percobaan sebelumnya sudah
kita pelajari tentang perintah digitalWrite();, yang berarti mengendalikan pin
pada arduino secara digital. Pada perintah digital hanya terdapat 2 kondisi,
kalau tidak HIGH (1) yaitu LOW (0). HIGH atau 1 berarti pin mengerluarkan
tegangan 5 volt dan LOW atau 0 berarti pin arduino mengeluarkan tegangan
0 volt.
Pada perintah analogWrite() kita tidak hanya memiliki 2 kondisi LOW dan
HIGH, namun kita bisa mengatur keluaran tegangan pada pin arduino
seolah-olah bervariasi dari 0 – 5volt, mengapa seolah – olah? Karena
sebenarnya tegangan yang dikeluarkan oleh pin arduino adalah 5 volt.
kenapa LED bisa nyala terang / redup? Karena ada pengaturan frekuensi
pada tegangan tersebut, untuk mempermudah pemahaman silahkan cermati
analogi berikut
1. ketika ada 100 sinyal dalam 1 detik, dan 100 sinyal tersebut berupa
perintah digitalWrite(x,HIGH), apa yang akan terjadi dengan nyala
lampu? Tentu nyala lampu akan terang (5Volt)
2. ketika ada 100 sinyal dalam 1 detik, dan 100 sinyal tersebut terbagi
menjadi perintah digitalWrite(x,HIGH) dan digitalWrite(x,LOW), apa
yang terjadi dengan nyala lampu? Tentu nyala lampu menjadi redup,
seolah olah mendapatkan tengan 2.5volt
3. ketika ada 100 sinyal dalam 1 detik, dan 100 sinyal tersebut terbagi
menjadi perintah digitalWrite(x,HIGH), digitalWrite(x,LOW), dan
digitalWrite(x,LOW), apa yang terjadi dengan nyala lampu? Tentu nyala
lampu menjadi redup dari pada analogi nomor 2, seolah olah
mendapatkan tengan 1.6volt
Itulah yang disebut PWM (pulse with modulation), pada analogi nomor 1
nilai logika HIGH / 1 pada PWM adalah 100% dari jumlah total sinyal PWM,
artinya tegangan seolah – olah 5volt x 100% = 5volt
pada analogi nomor 3 nilai logika HIGH / 1 pada PWM adalah 1/3 dari
jumlah total sinyal PWM, artinya tegangan seolah – olah 5volt x 1/3 =
1.6volt
Jika pada analogi diatas arduino dapat memberi sinyal 100x setap satu
detik, namun sesungguhnya arduino dapat memberikan sinyal sebanyak
980x (Arduino Uno pin 5 & 6) atau untuk lebih jelasnya dapat dilihat pada
tabel berikut
Pada papan arduino kita dapat menggunakan perintah PWM pada pin yang
mempunyai simbol (~), contoh pada arduino uno adalah pin 3, 5, 6, 9, 10,
11, untuk penulisan programnya sendiri adalah
analogWrite(pin,nilai)
Contoh:
analogWrite(5,255) ;
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. LED
5. Resistor 330Ω
Langkah
/*
Program Animasi LED dengan PWM
*/
#define LED 3
void setup() {
// mendefinikasi pin LED sebagai output
pinMode(LED, OUTPUT);
}
void loop() {
for ( byte value = 0; value < 255; value++)
{
analogWrite(LED,value);
delay(10);
}
Penjelasan
Pada latihan ini kita akan mendapati bahwa led pada pin 3 menyala dari
redup ke terang dan kembali lagi ke redup. Pada program diatas ada
beberapa pelajaran yang dapat kita ambil, yaitu :
1. Kita belajar tentang perintah for loop ( perulangan for), pada perulanga
for loop, semua program di dalam kurung kurawal for loop akan terus
dieksekusi selama prasyaratnya masih terpenuhi, baru setelah
prasyaratnya tidak terpenuhi akan dilanjutkan ke baris perintah
slnjutnya
2. Kita belajar tentang penggunaan variable. Cermati pada baris for ( byte
value = 0; value < 255; value++), ada bagian byte value = 0, apa itu
byte value? Byte merupakan tipe data sedangkan value adalah nama
dari tipe data tersebut, ada beberapa tipe data pada bahasa
pemrograman arduino seperti yang dijelaskan berikut
Bool / boolean
bool berfungsi menampung 2 nilai yaitu 0 dan 1 / true / dan false. Tipe
data bool / boolean akan menggunakan 1byte memori pada arduino
Contoh:
boolean val = false; // deklarasi variabel dengan tipe boolean dengan
nilai false / 0
boolean val = true; // deklarasi variabel dengan tipe boolean dengan
nilai true / 1
Char
Char berfungsi untuk menyimpan karakter huruf seperti ‘a’,’b’,’c’,’d’ dan
seterusnya. Tipe data ini menggunakan satu byte memori pada arduino.
Meskipun berfungsi untuk menampung karakter huruf, tipe data char
dapat digunakan dengan operator matematika karena setiap karakter
huruf mempunyai nomor urut tersendiri
Contoh :
karakter huruf “A” mempunyai nomor urut 65, dan karakter “a”
mempunyai nomor urut 97, untuk lebih jelasnya dapat dilihat pada tabel
ASCII char berikut ini
Unsigned char
Hampir sama dengan data char, hanya saja unsigned char berisi nomor
urut dari karakter yang ditulis
Contoh:
Unsigned char = ‘a’ maka nilai yang tersimpan adalah angka 97
byte
Char berfungsi untuk menyimpan angka dari 0 – 255 (8-bit)
Contoh
byte m = 25 (deklarasi variabel bernama m dengan tipe data byte yang
bernilai 25)
int
int / Integer berfungsi untuk menyimpan angka dari -32.768 sampai
32.767, tipe data ini memerlukan memori penyimpanan 2 byte, Namun
untuk jenis board arduino due, tipe data int dapat menyimpan data
sebesar 4byte ( -2.147.483.648 hingga 2.147.483).
Contoh:
int counter = 32 (deklarasi variabel bernama counter dengan tipe int
bernilai 32)
unsigned int
untuk tipe data unsigned int hampir sama dengan int, hanya saja untuk
nilai negatif tidak ada dan diganti dengan nilai positif semua sehingga
rentang nilai yang dapat disimpan adalah 0 - 4.294.967.295
52 Belajar Arduino from Zero to Hero
Contoh:
Unsigned int x = 1000 (deklarasi variabel bernama x dengan tipe
unsigned int bernilai 1000)
Long
long berfungsi untuk menyimpan angka dari -2.147.483.648 sampai
2.147.483.647, tipe data ini memerlukan memori penyimpanan 4 byte
Contoh:
Long velocity = 102346 (deklarasi variabel bernama velocity dengan tipe
long bernilai 102346)
Unsigned long
Tipe data unsigned long hampir sama dengan long, hanya saja nilai yang
dapat disimpan adalah dari 0 sampai 4.294.967.295
Contoh:
Unsigned Long velocity = 101006 (deklarasi variabel bernama velocity
dengan tipe long int bernilai 101006)
float
long berfungsi untuk menyimpan angka pecahan desimal dari -
3.4028235 x 1038 - 3.4028235 x 1038, tipe data ini memerlukan memori
penyimpanan 4 byte
Contoh:
float num 100.67 = (deklarasi variabel bernama num dengan tipe float
bernilai 100.67)
String
String berfungsi untuk menyimpan data berupa text / kumpulan char
Contoh:
String text = “ini text saya” (deklarasi variabel bernama text dengan
tipe string dengan isi text “ini text saya”)
َ ت لَ ُه
ٌصب َْوة َ إِنه ه
َ َّللا َع هز َو َج هل لَ َيعْ َجبُ م َِن ال هشابِّ لَي
ْ ْس
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. LED
5. Resistor 330Ω
Langkah
/*
Program Animasi LED dengan while
*/
#define LED 3
void setup() {
// mendefinikasi pin LED sebagai output
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
int x = 0;
void loop() {
x++; // naikan nilai x
Serial.println(x);
digitalWrite(LED,HIGH) ;//nyalakan LED
Penjelasan
Pada latihan kali ini led akan berkedip selama 200 miliseconds sebanyak 10
kali lalu akan menyala terus menerus (berhenti berkedip), pada latihan kali
ini ada beberapa pelajaran yang dapat kita ambil yaitu:
while(condition) {
// statement;
}
Hampir sama dengan for loop, pada perulangan while loop, jika prasyarat
while loop terpenuhi maka semua baris kode tidak akan dijalankan kecuali
yang berada di dalam while loop, atau dalam kata lain looping /
pengulangan hanya akan berjalan pda baris kode di dalam while loop, baru
setelah prasyaratnya tidak terpenuhi maka baris kode diluar while loop akan
di jalankan
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. Variable Resistor
/*
Membaca tegangan pada pin analog
*/
#define pin A0
void setup() {
Serial.begin(9600);
}
void loop() {
int nilai = analogRead(pin);
float tegangan = nilai * (5.0 / 1023.0);
Serial.print("nilai = ");
Serial.print(nilai);
Serial.print("voltase = ");
Serial.println(tegangan);
delay(1000);
}
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. 5 LED
5. 5 Resistor 330Ω
6. Variable Resistor
Langkah
1. Buatlah rangkaian seperti gambar berikut
#define pin A0
#define LED 10
void setup() {
Serial.begin(9600);
}
void loop() {
int nilai = analogRead(pin);
float tegangan = nilai * (5.0 / 1023.0);
Serial.print("nilai = ");
Serial.print(nilai);
Serial.print("volatse = ");
Serial.println(tegangan);
delay(200);
Penjelasan
Pada latihan kali ini kita belajar menggunakan data tegangan yang terbaca
untuk mengatur nyala (digital) dari Led yang ada. Dalam mengatur nyala
dari led kita menggunakan logika IF dan salah satu operator yaitu kurang
dari.
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. 5 LED
5. 5 Resistor 330Ω
6. Variable Resistor
Hubungkan pin positif LED masing masing ke pin digital 8, 9, 10, 11 dan
12 arduino, dan masing masing pin negatif led ke resistor yang
terhubung ke GND breadboard, hubungkan GND arduino ke GND
breadboard. Hubungkan pin terluar veriable resistor ke pin 5v arduino,
pin tengah variable resistor ke A0 dan pin terluar variable resistor pada
sisi yang lain ke Gnd breadboard
/*
Kontrol led input tegangan
*/
#define pin A0
#define LED1 8
#define LED2 9
#define LED3 10
#define LED4 11
#define LED5 12
void setup() {
Serial.begin(9600);
}
void loop() {
int nilai = analogRead(pin);
float tegangan = nilai * (5.0 / 1023.0);
Bahan
1. Arduino Uno
2. LED
3. Variabel resistor
4. Resistor 330Ω
5. Kabel jumper
6. Breadboard
Langkah
/*
Program mengatur nyala led
*/
#define pin A0
#define LED 10
void setup() {
pinMode(LED,OUTPUT);
}
int value = 0;
void loop() {
value = analogRead(pin);
pwm = map(value,0,1023,0,255);
analogWrite(LED,pwm);
}
Penjelasan
Pada bagian ini kita coba mengatur nyala (terang gelap) sebuah LED dengan
menggabungkan perintah analogRead() dan analogWrite(), pada latihan kali
ini ada pelajaran yang dapat diambil yaitu:
pwm = map(nilai,0,1023,0,255);
Bahan
1. Arduino Uno
2. LED
3. Resistor 330Ω
4. Kabel jumper
5. Breadboard
Langkah
/*
Kontrol LED dengan serial monitor
*/
char x;
void loop() {
if (Serial.available()) // jika ada komunikasi serial masuk
{ // maka
x = Serial.read(); // isi variable char x dengan karakter dari serial monitor
}
if ( x == 'a') // jika x = a
{ // maka
digitalWrite(LED, HIGH ); // nyalakan LED
}
else if ( x == 'b') // jika x = b
{ // maka
digitalWrite(LED, LOW); // matikan LED
}
}
3. Buka serial monitor, ketik karakter “a” lalu send, ketik karakter “b” lalu
send, amati nyala LED
switch (variable) {
case nilai prayarat 1:
// dijalankan ketika nilai variable sama dengan nilai prayarat 1
break;
case nilai prayarat 2:
// dijalankan ketika nilai variable sama dengan nilai prayarat 2
break;
default:
// dijalankan pada kondisi awal (default)
break;
}
Baris program break; digunakan untuk keluar dari logika switch case, untuk
lebih jelasnya bisa dicoba program berikut dengan rangkain yang sama pada
latihan sebelunya
char x;
void loop() {
if (Serial.available()) // jika ada komunikasi serial masuk
{ // maka
x = Serial.read(); // isi variable char x dengan karakter dari serial monitor
}
switch (x) {
case 'a':
digitalWrite(LED, HIGH ); // nyalakan LED
break;
case 'b':
digitalWrite(LED, LOW ); // nyalakan LED
break;
default:
// tidak lakukan apa - apa
break;
}
}
Bahan
1. Arduino Uno
2. LED
3. Resistor 330Ω
4. Kabel jumper
5. Breadboard
/*
Kontrol LED dengan serial monitor
*/
void loop() {
if (Serial.available()) // jika ada komunikasi serial masuk
{ // maka
x = Serial.readString(); // isi variable string x dengan data string serial
monitor
Serial.println(x);
}
if ( x == "on") // jika x = on
{ // maka
digitalWrite(LED, HIGH ); // nyalakan LED
}
else if ( x == "off") // jika x = off
{ // maka
digitalWrite(LED, LOW); // matikan LED
}
}
Pada latihan kali ini kita juga mengganti pengaturan newline pada latihan
sebelumnya dengan no line ending, apa maksutnya? Pada newline ending
saat kita mengirim data maka data tersebut akan ditambahkan karakter
“newline” atau biasa kita sebut dengan enter (karakter char nomor 10).
Sedangkan saat kita menggunakan no line ending, maka karakter yang
akan dikirim adalah karakter murni yang kita tulis di serial monitor. Adapaun
cariage return adalah menambahkan karakter cariage return ( karakter
char nomor 13) di akhir data dan both NL dan CL adalah menambahkan
karakter cariage return (char no 13) dan karakter newline ( char nomor 10)
di akhir data.
Bahan
1. Arduino Uno
2. LED
3. Resistor 330Ω
4. Kabel jumper
5. Breadboard
Langkah
/*
Kontrol LED dengan serial monitor
*/
int x;
void loop() {
Penjelasan
Pada latihan ini kita coba membaca data berupa data numerik integer dari
serial monitor untuk mengendalikan nyala LED.
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. Push Button
5. LED
6. Resistor 330Ω
Langkah
1. Buatlah rangkaian seperti gambar dibawah ini
Hubungkan pin digital 3 dengan pin resitor yang terhubung dengan pin
positif LED, hubungkan pin digital 4 dengan salah satu pin push button
dan hubungkan pin push button yang lain dengan ground pin arduino
2. Upload Program berikut ini
/*
Kontrol LED dengan push button 2
*/
//mendefinisikan pin 3 bernama LED
#define LED 3
//mendefinisikan pin 4 bernama pb
#define pb 4
void setup() {
// set pin LED sebagai pin Output
pinMode(LED,OUTPUT);
// set pin pb sebagai input dengan Pull Up resistor
pinMode(pb, INPUT_PULLUP);
// matikan LED
Serial.begin(9600);
}
void loop() {
statusPB = digitalRead(pb);
if ( counter % 2 == 0)
{
digitalWrite(LED,HIGH);
}
else
{
digitalWrite(LED,LOW);
}
delay(300);
}
else if ( statusPB == 1)
{
x = 0;
}
}
Penjelasan
Jika pada latihan terdahulu LED menyala ketika PB ditekan dan LED mati
ketika PB dilepas, maka pada latihan ini kita coba menambahkan logika baru
agar LED tidak mati ketika PB dilepas, dan LED akan mati jika di tekan lagi
Amati pada baris
Pada percobaan sebelumnya, ketika kita menekan Push button beberapa kali
maka LED akan menyala, namun setelah LED menyala dan kita mematikan
Arduino (melepas kabel power / USB) kemudian menghidupkannya lagi
maka LED akan dalam keadaan mati. Pada latihan kali ini kita akan coba
menambahkan perintah untuk menyimpan data psuh button ke dalam
memori, untuk lebih jelasnya dapat dicoba pada latihan berikut
Bahan
1. Arduino Uno
2. Breadboard
3. Kabel Jumper
4. Push Button
5. LED
6. Resistor 330Ω
Langkah
1. Ubahlah program pada latihan diatas dengan program berikut (masih
dengan rangkaian yang sama)
/*
Menyimpan data ke dalam memori EEPROM
*/
bool statusPB;
bool x;
unsigned int counter;
void loop() {
statusPB = digitalRead(pb);
if ( counter % 2 == 0)
{
EEPROM.write(0,1);
}
else
{
EEPROM.write(0,0);
}
delay(300);
}
else if ( statusPB == 1)
{
x = 0;
}
2. Tekan push button sampai LED menyala lalu putuskan arduino dari
sumber tegangan
3. Sambungkan lagi arduino ke sumber tegangan, maka LED akan tetap
menyala (data push button tersimpan ke dalam memori)
Bahan
Arduino Uno
Langkah
1. Upload program berikut ke arduino
/*
Timer (millis)
void setup() {
Serial.begin(9600);
}
void loop() {
waktu = millis();
Serial.print("Arduino telah hidup selama: ");
Serial.print(waktu);
Serial.println(" milisecods");
delay(1000);
}
Penjelasan
Pada latihan kali ini kita coba menggunakan perintah millis(), millis()
berisi data waktu terhitung saat arduino terhubung ke sumber arus
dalam satuan miliseconds (1/1000 detik), data pada millis akan kembali
ke 0 saat arduino tidak mendapatkan sumber arus atau jika arduino
hidup secara terus menerus selama 50 hari
Bahan
1. Arduino Uno
Langkah
1. Upload program berikut ke arduino
/*
Timer (micros)
*/
void setup() {
Serial.begin(9600);
}
void loop() {
waktu = micros();
Serial.print("Arduino telah hidup selama: ");
Serial.print(waktu);
Serial.println(" microseconds");
delay(1000);
}
Penjelasan
Pada latihan kali ini kita coba menggunakan perintah micros(), micros()
berisi data waktu terhitung saat arduino terhubung ke sumber arus
dalam satuan microsecods (1 / 1juta detik), data pada millis akan
kembali ke 0 saat arduino tidak mendapatkan sumber arus atau jika
arduino hidup secara terus menerus selama 70 menit
BERSAMBUNG JILID 2
InsyaAllah
Update Modul terbaru ini di
https://www.cronyos.com/ebookgratis
https://www.arduino.cc/en/Guide/Introduction
https://sites.google.com/site/informasiterbarusekali/pengertian-
mikrokontroller
https://www.tutorialspoint.com/arduino/arduino_data_types.htm
Aktivitas beliau saat buku ini diterbitkan adalah sebagai pengajar di SMK
Swasta di kabupaten Wonogiri dan aktif menulis di situs pribadi cronyos.com