Buku Belajar Arduino
Buku Belajar Arduino
Arduino
Dalam 15
Langkah
DISUSUN OLEH:
DESSYANTO BOEDI P, ST., MT.
HIDAYATULAH HIMAWAN, ST., M.ENG.
MANGARAS YANU F, ST., MT.
Disusun Oleh:
Dessyanto Boedi P, ST., MT.
Hidayatulah Himawan, ST., M.Eng.
Mangaras Yanu F, ST., M.Eng.
3
KATA PENGANTAR
Penulis
4
DAFTAR ISI
Kata Pengantar ....................................................................................... 4
Pendahuluan ............................................................................................ 5
Langkah 1: Apa itu Arduino? .................................................................8
Langkah 2: Bagaimana cara menggunakan BreadBoard? .............10
Langkah 3: Menyalakan LED dengan tegangan 5V .........................12
Langkah 4: Anatomi Arduino Sketch ................................................16
Langkah 5: Arduino LED Blink ............................................................17
Langkah 6: Mengendalikan Beberapa LED dengan Arduino ........18
Langkah 7: Fade LED menggunakan AnalogWrite ..........................23
Langkah 8: RGB LED dan Arduino ......................................................26
Langkah 9: Fungsi Arduino ..................................................................29
Langkah 10: Tombol..............................................................................32
Langkah 11: Arduino Digital Input dan Output ...............................37
Langkah 12: Arduino Analog Input ....................................................38
Langkah 13: Bekerja Dengan Analog Input Data ............................41
Langkah 14: Latihan Arduino Input dan Output .............................42
Langkah 15: Tombol Toggle ................................................................43
5
Pendahuluan
6
adalah cara yang menyenangkan untuk belajar tentang elektronik melalui
eksperimen.
7
Langkah 1: Apa itu Arduino?
Pertama kita akan melihat semua bagian dari Arduino. Arduino pada
dasarnya adalah komputer kecil yang dapat terhubung ke sirkuit listrik.
The Arduino Uno ditenagai oleh chip Atmega 328P, itu adalah chip
terbesar di papan (lihat catatan gambar pada gambar di atas). Chip ini
mampu menjalankan program yang disimpan dalam memori (sangat
terbatas).
8
Arduino memiliki beberapa baris pin yang dapat digunakan untuk
memasang kabel. Pin daya diberi label pada gambar di atas. Arduino
memiliki suplai 3.3V atau 5V; di kelas ini kita akan menggunakan suplai 5V,
tetapi Anda mungkin menemukan beberapa chip atau komponen yang
membutuhkan 3.3V untuk dijalankan, dalam hal ini suplai 3.3V akan
bermanfaat. Anda juga akan menemukan beberapa pin berlabel "GND" di
Arduino, ini adalah pin ground (ground adalah hal yang sama dengan 0V).
Arus listrik selalu mengalir dari beberapa tegangan positif ke ground,
sehingga pin ini berguna untuk menyelesaikan rangkaian, kami akan
sering menggunakannya.
Di samping koneksi daya adalah pin input Analog, berlabel A0-A5. Pin ini
digunakan untuk membuat pengukuran analog sensor atau komponen
lainnya. Input analog sangat baik untuk mengukur sesuatu dengan kisaran
nilai yang mungkin. Misalnya, pin input analog akan memungkinkan kita
mengukur jumlah kelenturan sensor kelenturan, atau jumlah pemutar
yang diputar. Anda dapat menggunakan input analog untuk mengukur
komponen digital (seperti tombol) atau bahkan bertindak seperti output
digital, mereka pada dasarnya adalah pin digital dengan kekuatan ekstra.
9
Langkah 2: Cara Menggunakan Bread Board
10
Di setiap sisi papan tempat memotong roti, dua baris lubang terhubung di
seluruh panjang papan (gambar 1 dan 2 di atas). Secara umum, Anda akan
menghubungkan "rel" panjang ini ke 0V (juga disebut "ground") dan
tegangan apa pun yang Anda gunakan untuk daya (di kelas ini kami akan
menggunakan 5V dari Arduino), sehingga koneksi tersebut tersedia di
mana saja di papan tulis. . Dalam hal ini, hal pertama yang ingin Anda
lakukan adalah memasang koneksi ini ke Arduino Anda seperti yang
ditunjukkan pada gambar 4, perhatikan bagaimana saya menghubungkan
ground ke baris berlabel "-" dan 5V ke baris berlabel "+", papan tempat
memotong roti Anda mungkin atau mungkin tidak diberi label. Catatan:
terkadang strip samping ini hanya akan memanjang setengah melewati
papan tempat memotong roti yang lebih panjang, gunakan kabel untuk
menyelesaikan koneksi (gambar 5).
11
Langkah 3: Menyalakan LED Menggunakan Listrik 5V
Seperti yang saya jelaskan sebelumnya, arus listrik mengalir dari tegangan
tinggi ke tegangan rendah. Di kelas ini kita akan mematikan semuanya 5V
dari Arduino, jadi arus akan mengalir dari 5V keluar dari Arduino, melalui
sirkuit kita, dan kembali ke pin "ground" Arduino. Hal pertama yang akan
kami nyalakan adalah LED.
12
garis, dan biasanya beberapa panah mengarah ke luar yang mewakili
cahaya yang keluar dari komponen.
V=I*R
dimana
V = tegangan melintasi resistor
I = arus melalui resistor
R = resistensi - ini yang ingin kita hitung
jadi jika kita mengetahui nilai-nilai V dan I, kita dapat menghitung R yang
benar untuk rangkaian kita
13
memerlukan 3V untuk menyala, sehingga sisa 2V (5V - 3V = 2V) diterapkan
pada resistor.
2V = 20mA * R
2V = 0,02A * R
R = 100 Ohm
Jadi 100 Ohm adalah resistansi minimum absolut yang kami butuhkan
untuk memastikan bahwa kami tidak merusak LED. Agar aman, adalah ide
yang baik untuk menggunakan sesuatu yang sedikit lebih tinggi, kalau-
kalau LED Anda memiliki peringkat yang sedikit berbeda dari apa yang
saya gunakan di sini. Saya suka menggunakan 220Ohms karena saya
sepertinya selalu punya banyak orang di sekitar. Jika Anda mengetahui
peringkat LED Anda (Anda dapat menemukannya di lembar data LED) dan
Anda ingin melakukan perhitungan ini sendiri, Anda juga dapat mencoba
menggunakan kalkulator online.
14
roti sehingga timah LED yang lebih panjang dihubungkan secara elektrik
ke salah satu kabel resistor (gambar 3). Kemudian hubungkan ujung
resistor yang tersisa ke 5V dan ujung LED yang tersisa ke ground. Anda
akan melihat LED menyala.
15
Langkah 4: Anatomi Arduino
loop () - loop () adalah tempat sebagian besar program Anda akan hidup.
Fungsi ini dieksekusi setelah setup () selesai. Arduino akan menjalankan
perintah di dalam loop berulang-ulang sampai papan dimatikan.
16
Langkah 5: Arduino LED Blink
Dalam contoh ini kita akan memasang rangkaian LED kita ke salah satu pin
digital Arduino dan menghidupkan dan mematikan LED dengan kode.
Contoh ini memperkenalkan beberapa fungsi berguna yang dibangun ke
dalam bahasa Arduino, yaitu:
17
selama 2000 milidetik (2000 milidetik = 2 detik), penundaan (100) akan
menghentikan sementara program selama 100 milidetik (1/10 detik), dan
seterusnya ...
Di bawah ini adalah kode LED Blink, jalankan kode ini di Arduino Anda.
//LED Blink
void setup() {
pinMode(ledPin, OUTPUT);// initialize the pin as an output
}
void loop() {
digitalWrite(ledPin, HIGH);//turn LED on
delay(1000);// wait for 1000 milliseconds (one second)
digitalWrite(ledPin, LOW);//turn LED off
delay(1000);//wait one second
}
18
Langkah 6: Mengendalikan Beberapa LED Menggunakan Arduino
Dalam contoh ini kita akan memasang tiga LED lagi seperti yang kita
lakukan pada contoh terakhir, dan mengendalikannya dengan beberapa
pin digital. Pertama pasang tiga LED lagi dan resistor pembatas arus
seperti yang ditunjukkan di bawah ini:
int led1Pin = 4;
int led2Pin = 5;
int led3Pin = 6;
int led4Pin = 7;
void setup() {
//initialize the led pins as an outputs
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
pinMode(led4Pin, OUTPUT);
}
void loop() {
digitalWrite(led1Pin, HIGH);//turn LED on
delay(1000);// wait for 1000 milliseconds (one second)
digitalWrite(led1Pin, LOW);//turn LED off
delay(1000);//wait one second
19
delay(1000);// wait for 1000 milliseconds (one second)
digitalWrite(led3Pin, LOW);//turn LED off
delay(1000);//wait one second
Ini berfungsi, dan kita bisa membiarkannya dan semuanya akan bekerja
dengan baik, tetapi itu bukan cara yang paling efisien untuk menulis kode
kita. Sebagai gantinya, kami akan menggunakan struktur yang disebut for
loop untuk berputar melalui LED. Untuk loop berguna untuk mengulangi
sepotong kode berulang-ulang. Dalam kasus di atas kami mengulangi
baris:
digitalWrite(led4Pin, HIGH);
delay(1000);
digitalWrite(led4Pin, LOW);
delay(1000);
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
20
delay(1000);
int led1Pin = 4;
int led2Pin = 5;
int led3Pin = 6;
int led4Pin = 7;
void setup() {
//initialize the led pins as an outputs
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(led3Pin, OUTPUT);
pinMode(led4Pin, OUTPUT);
}
21
void loop() {
for (int ledPin=4;ledPin<8;ledPin++){//for pins 4-7
digitalWrite(ledPin, HIGH);//turn LED on
delay(1000);// wait for 1000 milliseconds (one second)
digitalWrite(ledPin, LOW);//turn LED off
delay(1000);//wait one second
}
}
22
Langkah 7: Fade LED menggunakan AnalogWrite
Terkadang kita ingin mengontrol kecerahan LED, dalam hal ini kita dapat
menggunakan perintah yang disebut analogWrite (). analogWrite bekerja
dengan menyalakan dan mematikan LED dengan sangat cepat, begitu
cepat sehingga mata kita tidak melihat layar berkedip. Jika sebuah LED
menghabiskan separuh waktu dan separuh waktunya, maka akan tampak
setengah lebih terang. Teknik ini disebut modulasi lebar pulsa (PWM), ini
digunakan berulang kali dalam elektronik karena memungkinkan kita
untuk mengontrol komponen dengan cara "analog" menggunakan pin
digital. Tidak semua pin digital pada Arduino dapat melakukan PWM, jika
Anda melihat dari dekat pada Arduino Anda, Anda akan melihat bahwa
beberapa pin memiliki tanda "~" di sebelahnya (pin 3, 5, 6, 9, 10, 11) , ini
adalah pin yang diaktifkan PWM.
void setup() {
pinMode(ledPin, OUTPUT);// initialize the pin as an output
}
23
void loop() {
analogWrite(ledPin, 255);//turn LED on at full brightness (255/255 =
1)
delay(1000);// wait for 1000 milliseconds (one second)
digitalWrite(ledPin, LOW);//turn LED off
delay(1000);//wait one second
24
Langkah 8: RGB LED dan Arduino
RGB LED yang kami gunakan di kelas ini adalah katoda umum, artinya
ketiga LED berbagi pin ground yang sama (beberapa LED RGB, disebut
common anode, berbagi pin pasokan bersama dan memiliki alasan
terpisah). Kami akan memasang sirkuit kami seperti gambar pertama di
atas, setiap LED dalam LED RGB memiliki satu resistor 220Ohm secara seri
25
dengan itu yang dihubungkan ke pin Arduino yang diaktifkan PWM (saya
menggunakan pin 9-11). Dengan cara ini, kita dapat secara selektif
menyalakan dan mematikan setiap LED di RGB secara individual.
Lihat gambar kedua di atas untuk mencari tahu yang mengarah dari LED
RGB yang sesuai dengan merah, hijau, biru, dan tanah (mereka diberi
nomor 1-4).
//pin connections
int red = 9;
int green = 10;
int blue = 11;
void setup(){
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(green, OUTPUT);
}
void loop(){
//turn red led on
digitalWrite(red, HIGH);
delay(500);
digitalWrite(red, LOW);
delay(500);
26
delay(500);
//pin connections
int red = 9;
int green = 10;
int blue = 11;
void setup(){
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(green, OUTPUT);
}
void loop(){
//pick a random color
analogWrite(red, random(256));
analogWrite(blue, random(256));
analogWrite(green, random(256));
delay(1000);//wait one second
}
Langkah 9: Fungsi Arduino
27
Sketsa berikut memudar LED dari merah ke hijau ke biru ke merah ke hijau
dan seterusnya.
Sketsa di atas berfungsi, tetapi ada banyak kode berulang. Kita dapat
menyederhanakan dengan menulis fungsi pembantu kita sendiri yang
memudar dari satu warna ke warna lain. Seperti apa fungsinya nanti:
28
void fader (int color1, int color2) {
Mari kita periksa definisi fungsi ini sepotong demi sepotong. Fungsinya
disebut "fader" dan dibutuhkan dua argumen. Setiap argumen dipisahkan
oleh koma dan memiliki tipe yang dideklarasikan di baris pertama dari
definisi fungsi:
Kita dapat melihat bahwa kedua argumen yang diterima fader adalah int,
dan kami menggunakan nama "color1" dan "color2" sebagai variabel
dummy untuk definisi fungsi kami. "Void" mengacu pada tipe data yang
dikembalikan fungsi, karena fungsi kami tidak mengembalikan apa pun
(hanya mengeksekusi perintah), kami menetapkan tipe kembali ke batal.
Jika kami membuat fungsi yang mengalikan dua angka dan
mengembalikan produk, kami mungkin mendefinisikannya seperti ini:
29
produk int = number1 * number2;
produk kembali;
Nyali fungsi adalah hal-hal yang telah kita lihat sebelumnya. Itu sama
untuk loop yang kami ulangi di sketsa terakhir kami, tetapi nomor pin
telah diganti dengan variabel color1 dan color2. Jika kami memanggil:
dari loop Arduino (), Arduino mengevaluasi fungsi fader dengan color1 =
merah dan color2 = hijau.
30
pinMode(green, OUTPUT);
}
void loop(){
fader(red,green);
fader(green,blue);
fader(blue, red);
}
void fader(int color1, int color2){
for (int brightness=0;brightness<256;brightness++){
analogWrite(color1, 255-brightness);
analogWrite(color2, brightness);
delay(10);
}
}
31
Langkah 10 : Tombol
Saatnya untuk jenis sirkuit baru, sekarang kita akan melihat cara
menggunakan tombol push dengan Arduino. Tombol adalah jenis sakelar,
jenis tombol yang kami gunakan disebut "sakelar sesaat yang biasanya
terbuka". "Biasanya terbuka" artinya ketika tombol tidak ditekan, tidak
ada arus yang akan mengalir melalui tombol karena kedua belah pihak
tidak terhubung - itu terbentuk sebagai sirkuit terbuka (lihat gambar
pertama di atas). "Sesaat" mengacu pada kenyataan bahwa saklar ini
32
hanya ditutup selama Anda menekannya dengan jari Anda; ini
membuatnya sangat berbeda dari sakelar sakelar, yang berganti-ganti
antara keadaan terbuka dan tertutup setiap kali Anda menekannya.
Rangkaian tombol yang akan kami gunakan terbuat dari dua komponen -
tombol tekan dan resistor. Tidak seperti rangkaian LED, kita tidak peduli
tentang jumlah arus yang melewati tombol (pada tingkat arus yang
sangat tinggi kita mungkin harus khawatir tentang peleburan tombol,
tetapi Arduino tidak sekuat itu), sehingga resistor tidak bekerja seperti
resistor pembatas arus di sirkuit LED. Sebaliknya resistor ini bertindak
sebagai resistor pull-down. Sebuah resistor pull-down mengikat tombol
ke ground, sehingga mengukur tegangan di persimpangan antara tombol
dan resistor akan selalu 0V (membumi) ketika tombol tidak ditekan (dan
sirkuit terbuka). Di sirkuit ini, nilai resistor pull-down tidak terlalu penting,
saya suka menggunakan sesuatu sekitar 10kOhms.
33
Sketsa tombol memperkenalkan beberapa ide baru:
34
Serial.println ("ditekan");
} lain {
if (4> 3) {
Serial.println ("true");
} lain {
Serial.println ("false");
35
36
Langkah 11: Arduino Digital Inputs dan Outputs
37
Step 12: Arduino Analog Input
38
Potensiometer adalah sebuah resistor dengan pin di tengah yang
terhubung ke beberapa titik sepanjang panjang resistor. Saat Anda
memutar potensiometer, Anda memindahkan pin tengah di sepanjang
resistor dan mengubah rasio bahan resistif di kedua sisi pin. Ini
memungkinkan potensiometer untuk bertindak sebagai pembagi
tegangan variabel.
void setup(){
//analog pins are initilized as INPUT by default, no need for pinMode() command
Serial.begin(9600);
}
void loop(){
int potVal = analogRead(potPin);//potVal is a number between 0 and 1023
Serial.println(potVal);
}
Sekarang putar pot dan lihat bagaimana nilai cetakan perubahan potVal.
Anda harus melihat arduino print 1023 ketika Anda memutar pot sampai
ke sisi yang terhubung ke 5V, dan 0 ketika Anda memutar pot sampai ke
sisi yang lain. Anda juga harus melihat rentang nilai yang dicetak di antara
kedua ekstrem itu.
Langkah 13: Bekerja Dengan Analog Input Data
39
Sebelum menggunakan data analog untuk mengontrol hal-hal lain dalam
program Anda, Anda mungkin perlu mengatur atau membatasi antara
beberapa min dan maks. Misalnya, bayangkan Anda ingin menggunakan
bacaan dari input analog Anda untuk mengontrol kecerahan LED dengan
analogWrite (). analogRead () mengembalikan angka antara 0 dan 1023,
tetapi analogWrite () hanya menerima angka antara 0 dan 255. Dalam hal
ini Anda dapat menggunakan peta () untuk skala rentang nilai yang keluar
dari analogRead () ke sesuatu yang sesuai untuk analogWrite () ;
void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
int analogVal = analogRead(potPin);//analogVal is between 0 and 1023
int scaledVal = map(analogVal, 0, 1023, 0, 255);//scaled val is between 0 and
255
40
Serial.print("analogVal = ");
Serial.print(analogVal);
Serial.print(" scaledVal = ");
Serial.print(scaledVal);
analogWrite(ledPin, scaledVal);
}
41
Langkah 14: Latihan Dengan Arduino Input dan Output
42
Langkah 15: Tombol Toggle
Terkadang Anda akan tertarik pada saat yang tepat tombol ditekan atau
dilepaskan, sehingga Anda dapat memicu suatu peristiwa dalam sketsa
Anda. Dalam hal ini Anda perlu menyimpan Status saat ini dari tombol dan
membandingkannya dengan keadaan yang terakhir direkam. Jika status
saat ini adalah TINGGI dan status terakhir adalah RENDAH, maka Anda
tahu tombolnya baru saja ditekan. Lihatlah kode di bawah ini:
int buttonPin = 7;
boolean currentState = LOW;//stroage for current button state
boolean lastState = LOW;//storage for last button state
void setup(){
pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT
Serial.begin(9600);//initialize Serial connection
}
void loop(){
currentState = digitalRead(buttonPin);
if (currentState == HIGH && lastState == LOW){//if button has just been pressed
Serial.println("pressed");
delay(1);//crude form of button debouncing
} else if(currentState == LOW && lastState == HIGH){
Serial.println("released");
delay(1);//crude form of button debouncing
}
lastState = currentState;
}
43
if (currentState == HIGH && lastState == LOW)
Anda juga akan melihat baris berikut muncul dua kali dalam kode di atas:
keterlambatan (1);
44
untuk menyimpan keadaan tombol saat ini dan terakhir (TINGGI atau
RENDAH).
int ledPin = 9;
int buttonPin = 7;
boolean currentState = LOW;//stroage for current button state
boolean lastState = LOW;//storage for last button state
boolean ledState = LOW;//storage for the current state of the LED (off/on)
void setup(){
pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT
pinMode(ledPin, OUTPUT);
Serial.begin(9600);//initialize Serial connection
}
void loop(){
currentState = digitalRead(buttonPin);
if (currentState == HIGH && lastState == LOW){//if button has just been pressed
Serial.println("pressed");
delay(1);//crude form of button debouncing
45
lastState = currentState;
}
Dalam kode di atas saya mengatur variabel yang disebut "ledState" untuk
menyimpan keadaan LED saat ini, lalu setiap kali tombol ditekan, saya
menggunakan digitalWrite untuk mengatur LED ke keadaan sebaliknya
dan menyimpan ledState baru.
Lebih jauh lagi, Anda dapat menggunakan tombol sakelar kode dengan
kode fader dari contoh LED RGB sebagai berikut:
//pin connections
int red = 9;
int green = 10;
int blue = 11;
int buttonPin = 7;
void setup(){
pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(green, OUTPUT);
Serial.begin(9600);//initialize Serial connection
digitalWrite(currentColor, HIGH);//initialize with currentColor on (full
brightness)
}
void loop(){
46
currentState = digitalRead(buttonPin);
if (currentState == HIGH && lastState == LOW){//if button has just been pressed
Serial.println("pressed");
delay(1);//crude form of button debouncing
lastState = currentState;
int getNextColor(int color){//helper function that gives us the next color to fade
to
if (color == red) return green;
if (color == green) return blue;
if (color == blue) return red;
}
47
jika (warna == merah) kembali hijau;
jika (warna == hijau) kembali biru;
jika (warna == biru) kembali merah;
48
49