Anda di halaman 1dari 65

Modul Pengantar Industri Elektronika

Pengajar:

Ir. Adrianto Sugiarto Wiyono, S.Kom., M.Si., M.T.

Muhammad Alde Rizal, S.Si., M.T


DAFTAR ISI

DAFTAR ISI.............................................................................................................................................2
BAB I PENDAHULUAN............................................................................................................................3
BAB II PROJECT SPACESHIP INTERFACE................................................................................................15
BAB III LOVE O METER.........................................................................................................................19
BAB IV COLOR MIXING LAMP..............................................................................................................24
BAB V MOOD CUE................................................................................................................................27
BAB VI LIGHT THEREMIN.....................................................................................................................29
BAB VII KEYBOARD INSTRUMENT........................................................................................................32
BAB VIII DIGITAL HOURGLASS..............................................................................................................33
BAB IX MOTORIZED PINWHEEL............................................................................................................34
BAB X ZOETROPE.................................................................................................................................35
BAB XI CRYSTAL BALL...........................................................................................................................36
BAB XII KNOCK LOCK............................................................................................................................37
BAB XIII TOUCHY-FEELY LAMP.............................................................................................................38
BAB XIV TWEAK THE ARDUINO LOGO..................................................................................................39
BAB XV HACKING BUTTON...................................................................................................................40
BAB I PENDAHULUAN

1.1 Konsep Awal


Arduino adalah perangkat elektronik yang bersifat open-source yang digunakan untuk
merancang dan membuat perangkat elektronik serta software yang mudah untuk membuat
object yang interaktif. Arduino ini memiliki beberapa komponen penting di dalamnya,
seperti pin, mikrokontroler, dan konektor yang nanti akan dibahas lebih dalam selanjutnya.
Selain itu, Arduino juga sudah menggunakan bahasa pemrograman Arduino Language yang
sedikit mirip dengan bahasa pemrograman C++. Ada 5 komponen utama yang berinteraksi
pada perangkat yang menggunakan Arduino yaitu:
a. Listrik: Jenis energi, seperti panas, gravitasi, atau cahaya. Energi listrik mengalir melalui
konduktor, seperti kawat. Energi listrik dapat dirubah menjadi energi lain seperti
menyalakan lampu atau membuat sesuatu suara dari speaker.

b. Transduser adalah perangkat apa pun yang mengubah satu bentuk energi menjadi
energi lain. Bentuk-bentuk energi seperti Energi Listrik, Energi Mekanikal, Energi
Elektromagnetik, Energi Cahaya, Energi Kimia, Energi Akustik (bunyi) dan Energi Panas.
Transduser terbagi menjadi 2 jenis yaitu Transduser Input dan Transder Output. Berikut
ini beberapa Komponen Elektronika ataupun perangkat Elektronika yang digolongkan
sebagai Transduser Input.
1. LDR (Light Dependent Resistor) mengubah Cahaya menjadi Resistansi
(Hambatan).
2. Thermistor (NTC/PTC) mengubah suhu menjadi Resistansi (Hambatan)
3. Variable Resistor (Potensiometer) mengubah posisi menjadi Resistansi
(Hambatan)
4. Mikropon (Microphone) mengubah gelombang suara menjadi sinyal listrik
Beberapa Komponen Elektronika atau Perangkat Elektronika yang digolongkan sebagai
Transduser Output diantaranya adalah sebagai berikut:
1. LED (Light Emitting Diode) mengubah listrik menjadi Energi Cahaya
2. Lampu mengubah listrik menjadi Energi Cahaya
3. Motor mengubah listrik menjadi Gerakan (motion)
4. Heater mengubah listrik menjadi Panas
5. Loudspeaker mengubah sinyal listrik menjadi Suara

c. Sensor digunakan untuk menangkap informasi fisik dan mengubahnya menjadi energi.
Ada banyak sensor yang sudah dikembangkan.
Berikut ini merupakan jenis sensor berdasarkan sumber energi yang digunakan:
1. Sensor Pasif (Passive Sensor)
Sensor Pasif adalah jenis sensor yang dapat menghasilkan sinyal output tanpa
memerlukan pasokan listrik dari eksternal. Contohnya Termokopel (Thermocouple)
yang menghasilkan nilai tegangan sesuai dengan panas atau suhu yang diterimanya.

2. Sensor Aktif (Active Sensor)


Sensor Aktif adalah jenis sensor yang membutuhkan sumber daya eskternal untuk
dapat beroperasi. Sifat fisik Sensor Aktif bervariasi sehubungan dengan efek
eksternal yang diberikannya. Sensor Aktif ini disebut juga dengan Sensor Pembangkit
Otomatis (Self Generating Sensors).

Selain berdasarkan sumber energinya sensor juga di kelompokkan berdasarkan jenis


sinyal ouput yang dihasilkan yaitu:
1. Sensor Analog
Sensor Analog adalah sensor yang menghasilkan sinyal output yang kontinu atau
berkelanjutan. Sinyal keluaran kontinu yang dihasilkan oleh sensor analog ini
sebanding dengan pengukuran. Berbagai parameter Analog ini diantaranya adalah
suhu, tegangan, tekanan, pergerakan dan lain-lainnya. Contoh Sensor Analog ini
diantaranya adalah akselerometer (accelerometer), sensor kecepatan, sensor
tekanan, sensor cahaya dan sensor suhu.

2. Sensor Digital
Sensor Digital adalah sensor yang menghasilkan sinyal keluaran diskrit. Sinyal diskrit
akan non-kontinu dengan waktu dan dapat direpresentasikan dalam “bit”. Sebuah
sensor digital biasanya terdiri dari sensor, kabel dan pemancar. Sinyal yang diukur
akan diwakili dalam format digital. Output digital dapat dalam bentuk Logika 1 atau
logika 0 (ON atau OFF). Sinyal fisik yang diterimanya akan dikonversi menjadi sinyal
digital di dalam sensor itu sendiri tanpa komponen eksternal. Kabel digunakan untuk
transmisi jarak jauh. Contoh Sensor Digital ini diantaranya adalah akselerometer
digital (digital accelerometer), sensor kecepatan digital, sensor tekanan digital,
sensor cahaya digital dan sensor suhu digital.

d. Aktuator merupakan sebuah perangkat yang mengubah energi listrik menjadi energi
lain.
Actuator juga sering dikenal sebagai alat yang digunakan sebagai penggerak atau
pengontrol suatu mekanisme tertentu. Mekanisme yang dimaksud bisa merupakan
suatu sistem kontrol atau sistem otomasi di industri. Contoh dari aktuator ini seperti
relay, pneumatik, motor, conveyor dan lain-lain. Lawan dari aktuator adalah sensor.

e. Microcontroller adalah penghubung antara sensor dengan actuator, microcontroller


yang akan membuat keputusan berdasarkan program yang kita buat. Microcontroller
berisi chip yang memiliki fungsi seperti CPU. Microcontroller sering disebut
minicomputer.

1.2 Komponen Praktikum Arduino


1. Arduino Uno Board

2. Breadboard
Breadboard adalah tempat untuk membuat rangkaian. Pada breadboard kalian
tidak perlu menyolder apa pun, karena kalian hanya perlu menancapkan
komponen. Bagian bawah baris horizontal dan vertical pada breadboard terbuat
dari logam tipis yang dapat menghantarkan listrik.

3. Kapasitor
Kapasitor merupakan komponen ini menyimpan dan melepaskan energi listrik
dalam suatu rangkaian. Kapasitor akan menyimpan muatan saat tegangan berlebih
dan akan melepaskan muatan saat tegangan kurang.

Kapasitor terdiri dari dua jenis yaitu kapasitor polar dan kapasitor nonpolar, pada
kapasitor polar memiliki dua kaki yang berbeda yaitu kaki VCC (tegangan) dan kaki
GND, sehingga perlu diperhatikan dalam pemasangan pada rangkaian. Sedangkan
kapasitor nonpolar memiliki kaki yang sama.

4. Motor DC
Motor DC memiliki kegunaan untuk mengubah energi listrik menjadi energi
mekanik. Gulungan kawat di dalam motor menghasilkan medan magnet ketika arus
mengalir melalui kawat tersebut. Medan magnet ini yang menyebabkan poros
berputar. Ketika arus listrik dibalik maka motor akan beputar dalam arah yang
berlawanan.

5. Dioda
Diode berfungsi untuk membuat arus listrik hanya mengalir dalam satu arah. Dioda
memiliki polaritas, yaitu memiliki kutub + dan kutub -. Dioda dapat melewatkan
arus atau memblok arus bergantung pada penempatannya di dalam rangkaian.

6. Konektor baterai
Konektor baterai digunakan untuk menghubungkan baterai 9V ke kabel daya yang
dapat dengan mudah pada breadboard atau Arduino.

7. Kabel jumper
Kabel jumper digunakan untuk menghubungkan komponen pada breadboard dan
Arduino
8. LED
Light Emitting Diodes (LEDs) adalah jenis dioda yang bersinar ketika listrik
melewatinya. LED memiliki polaritas, artinya listrik hanya mengalir dalam satu arah
melalui komponen-komponen ini. Jangan sampai terbalik saat merangkai jika tidak
ingin dioda rusak.

9. H-bridge
H-bridge adalah IC yang digunakan untuk mengontrol polaritas tegangan yang
diterapkan pada beban, biasanya digunakan pada motor dc.

10. LCD
Liquid Crystal Display (LCD) merupakan tampilan grafis yang terbuat dari kristal cair.
LCD tersedia dalam berbagai ukuran, bentuk, dan tampilan. LCD dalam kit memiliki
2 baris dan 16 kolom.

11. Male Header Pin


Male Header Pin merupakan pin ini dipasangkan dengan female socket, seperti
yang ada di breadboard

12. Optocoupler
Optocoupler adalah penghubung dua rangkaian dengan sumber yang berbeda.
Didalam optocoupler terdapat led kecil yang akan menyala ketika diberikan arus.
Ketika LED menyala maka fotoreseptor di dalam akan menutup sakelar internal.
Sehingga arus dengan sumber yang berbeda dapat mengalir pada sisi lainnya

13. Potensiometer
Potensiometer adalah sebuah resistor yang dapat berubah nilai resistansinya ketika
knob diputar.
14. Piezo
Piezo adalah komponen listrik yang dapat digunakan untuk mendeteksi getaran dan
menghasilkan suara.

15. Push button


Tombol tekan Merupakan jenis saklar sesaat yang menghubungkan rangkaian saat
ditekan.

16. Photoresistor
Photoresistor adalah nama lain dari komponen ini adalah Light Dependent Resistor
(LDR). Sebuah resistor variabel yang mengubah resistansinya berdasarkan jumlah
cahaya yang ditangkap.
17. Tilt Sensor
Tilt Sensor merupakan jenis sakelar yang akan membuka atau menutup tergantung
pada orientasinya. berbentuk silinder berongga dengan bola logam di dalamnya
yang akan bergerak dan menghubungkan saklar didalamnya.

18. Resistor
Resistor berfungsi untuk menahan aliran energi listrik dalam suatu rangkaian,
sehingga tegangan dan arus akan berkurang. Nilai resistor diukur dalam ohm
(diwakili oleh karakter omega Yunani: Ω). Cara membaca resistor dapat dilihat
seperti pada gambar disamping

19. Motor Servo


Motor servo adalah jenis motor bergigi yang hanya dapat berputar 180 derajat.
Servo dapat dikendalikan dengan mengirimkan pulsa listrik dari Arduino. Pulsa ini
memberi perintah pada servo ke sudut mana harus bergerak.
20. Temperature sensor
Sensor Suhu untuk mengubah tegangan input menjadi tegangan output. Tegangan
output berubah bergantung pada suhu sensor.

21. Transistor dan Mosfet


Transistor dan Mosfet - Perangkat berkaki tiga yang dapat beroperasi sebagai saklar
elektronik. Berguna untuk mengendalikan komponen arus/tegangan tinggi seperti
motor dc. Satu pin terhubung ke ground, pin lainnya ke komponen yang dikontrol,
dan pin ketiga terhubung ke Arduino

22. Kabel USB


Kabel USB adalah kabel yang memiliki kegunaan untuk menghubungkan Arduino
Uno ke komputer sehingga dapat diprogram.

1.3 Instalasi Arduino


Software Arduino dapat di download secara gratis melalui website: arduino.cc/download.
Selain dapat mendownload softwarenya kita juga bisa mendownload panduan penggunaan
pada website: arduino.cc/guide
1. Cara menginstal pada system operasi Windows
a. Saat IDE selesai di unduh, unzip dokumen yang sudah di unduh. Pastikan struktur
folder tidak berubah. Klik dua kali folder untuk membukanya. Setelah folder
terbuka seharusnya ada beberapa file dan sub-folder di dalamnya.
b. Hubungkan Arduino ke komputer dengan kabel USB. Arduino akan dengan
otomatis menarik daya dengan baik dari USB ke komputer atau daya eksternal
lain. Lampu daya hijau (berlabel PWR) seharusnya sudah menyala.
c. Komputer biasanya tidak bisa menemukan driver secara otomatis, jadi pengguna
harus mencari driver dan harus mengaksesnya terlebih dahulu agar mereka tau
keberadaan driver

2. Cara menginstal pada system operasi Mac


a. Setelah IDE selesai diunduh, klik dua kali file “zip”. Ini akan memperluas aplikasi
Arduino
b. Copy aplikasi Arduino, dan paste dimanapun pengguna ingin menginstal
perangkat lunak
c. Hubungkan papan ke komputer dengan USB. LED Hijau (PWR) harus menyala.
d. Tidak perlu instal untuk menggunakan. MAC OS X akan muncul pop-up referensi
jaringan. Klik - Pilih “Apply”
e. Pada Uno akan muncul "Not Configured", tetapi tetap berfungsi. Pengguna
dapat keluar dari System Preferences.

1.4 Komunikasi Pertama Arduino Uno


Untuk memastikan program Arduino sudah berjalan dengan baik maka perlu dilakukan
pengujian pertama melalui project sample yang sudah tersedia pada aplikasi Arduino
IDE. Aplikasi yang digunakan adalah BLINK, berikut ini Langkah yang harus digunakan
sebagai berikut:
a. Klik dua kali pada Aplikasi Arduino untuk membukanya. Jika bahasa tidak sesuai
dengan pilihan anda, anda dapat mengubahnya Aplikasi Preferensi - “Language
Support”

b. Arahkan ke LED blink contohnya sketch ('sketch' adalah nama program Arduino).
FILE > EXAMPLES > 01.BASICS > BLINK
c. Sebuah jendela berisikan teks seharusnya terbuka. Biarkan jendela terbuka dan
pilih board under: TOOLS > BOARD menu

d. Pilih port serial yang terhubung dengan Arduino Tool > SERIAL PORT menu

e. Untuk mengunggah sketsa Blink ke Arduino, tekan tombol UPLOAD, Yang berada
di sudut kiri atas windows

f. Akan terlihat bar yang menunjukan proses upload (sudut kiri bawah Arduino).
Setelahnya lampu berlabel TX & RX pada Arduino Board akan berkedip. Jika
upload berhasil maka akan ada tulisan DONE UPLOADING

g. Setelah beberapa detik setelah DONE UPLOAD, LED kuning dengan tulisan L di
sebelahnya akan mulai berkedip. Bila semua step sudah dilakukan maka proses
programming Arduino untuk menyalakan LED board sudah selesai
BAB II PROJECT SPACESHIP INTERFACE

Setelah kalian menguasai dasar-dasar listrik, saatnya untuk beralih mengendalikan hal-hal
dengan Arduino. Dalam proyek ini, kita akan membangun sesuatu yang bisa menjadi
interface pesawat ruang angkasa dalam film fiksi ilmiah tahun 1970-an. kita akan buat panel
kontrol keren dengan saklar dan lampu yang menyala saat kita menekan tombol. Dalam
materi ini, kita akan membuat program Arduino pertama untuk mengontrol beberapa LED
berdasarkan pushbutton.
2.1 Peralatan
a. switch
b. led
c. resistor 220 Ohm
d. dan 10k Ohm
kita akan menggunakan variabel, if()...else, dan fungsi untuk membaca status input dan
mengontrol output. Karena prinsip adasar pemrograman Arduino adalah Input, Proses dan
Output.
Pada project pertama ini kita menggunakan Pin digital Arduino. Pin digital Arduino hanya
dapat membaca 2 kondisi: ketika ada tegangan pada pin input (HIGH), dan ketika tidak ada
tegangan (LOW). Pin digital Arduino dapat digunakan sebagai OUTPUT dengan
menggunakan fungsi digitalWrite() Pin digital Arduino dapat digunakan sebagai INPUT
dengan menggunakan fungsi digitalRead().
2.2 Ilustrasi Rangkaian dan Tampilan Skematik

Program Arduino memiliki 2 fungsi utama yaitu void setup() dan void loop().
a. void setup() – Dijalankan sekali saat Arduino menyala.
b. void loop() – Dijalankan berulang setelah void setup(), biasanya tempat untuk
membaca INPUT atau memberikan OUTPUT dan juga tempat logika pemrograman.
c. Setiap baris pemrograman harus diakhiri tanda; (titik koma)
void setup (){

void loop (){


}
Case sensitivity: Perhatikan huruf kapital pada program.  Contoh, pinMode merupakan
sebuah perintah. Tetapi juga dituliskan pinmode maka akan menghasilkan error.
void setup (){
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
}

Comments: Jika kita ingin memberikan catatan pada program kalian maka kalian bisa
menambahkan comment. Comment akan diabaikan oleh program, untuk membuat
comment tambahkan tanda //. Program akan mengabaikan seluruh tulisan setelah
tanda tersebut. 

void loop (){


switchState = digitalRead (2);
// this is a comment

2.3 Coding
Coding yang digunakan untuk membuat project spaceship interface adalah:
int switchstate = 0;

void setup() {
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(2, INPUT);
}

void loop() {

switchstate = digitalRead(2);

if (switchstate == LOW) {
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
delay(250);
}
}
2.4 Penjelasan coding
Berikut ini merupakan penjelasan coding yang digunakan:
a. int switchstate = 0;

1. Tipe data – int (integer) merupakan tipe data untuk menampung bilangan
bulat
2. Variabel – Nama variabel bisa ditulis sesuai kebutuhan (switchstate)
3. Nilai dari variabel yang telah dideklarasikan (0)

b. void setup() {
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(2, INPUT);

pinMode – digunakan untuk mengatur digital pin yang digunakan sebagai INPUT
atau OUTPUT

c. void loop() {
switchstate = digitalRead(2);

digitalRead() digunakan untuk membaca kondisi pin digital sebagai input

d. if (switchstate == LOW) {

1. if() digunakan dalam pemrograman untuk membandingkan 2 hal. Apakah


perbandingan bernilai benar atau salah. Jika bernilai benar maka program
didalam tanda {} pada logika if() akan dijalankan.
2. Tanda == merupakan jenis operator pembanding yang membandingkan
variabel di sebelah kiri dengan nilai atau variabel di sebelah kanan operator.
Mengembalikan nilai true ketika kedua operan sama.

e. digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);

digitalWrite() Perintah untuk mengirim 5V atau 0V ke pin OUTPUT. digitalWrite()


mengambil dua argumen: pin apa yang harus dikontrol, dan nilai apa yang harus
disetel pin itu, HIGH atau LOW

f. else {
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
Pernyataan if() memiliki komponen else. Program di dalam tanda {} pada perintah
else akan dijalankan jika logika didalam if() tidak terpenuhi.

g. delay(250);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
delay(250);
}
}

delay() – Menghentikan Arduino dari mengeksekusi apa pun untuk jangka waktu
tertentu. delay() memiliki satuan milidetik. 1000 milidetik = 1 detik.
BAB III LOVE O METER

Mengubah Arduino Menjadi Mesin Cinta. Menggunakan Input Analog, Untuk Mengetahui
Seberapa Panas Kalian!
3.1 Peralatan
a. led
b. resistor 220 Ohm
c. Temperature sensor (TMP35)
Pada project ini akan dijelaskan bagaimana penggunaan anolog pin. Analog pin digunakan
untuk membaca sensor anolog (temperature sensor). Untuk melakukan ini, kita akan
memanfaatkan Analog-to-Digital Converter (ADC) bawaan Arduino. Pin analog (A0-A5) dapat
melaporkan kembali nilai antara 0-1023, yang dipetakan dalam tegangan antara 0 volt
hingga 5 volt. Sensor temperature yang akan akan digunakan untuk mengukur seberapa
hangat kulit kita. Sensor ini menghasilkan tegangan yang berubah tergantung pada suhu
yang dirasakannya. Kalian akan membaca output sensor dan menggunakannya untuk
menyalakan dan mematikan LED, menunjukkan betapa hangatnya dirimu. Sensor yang
digunakan adalah TMP35, menghasilkan tegangan yang berubah berbanding lurus dengan
suhu dalam derajat Celcius.
Pada materi kali ini juga akan dipelajari alat yang ada padal program Arduino IDE dilengkapi
yang disebut serial monitor. Serial monitor ini akan membaca hasil dari mikrokontroler.
Dengan menggunakan serial monitor, kita bisa mendapatkan informasi tentang status
sensor.

3.2 Ilustrasi Rangkaian dan Tampilan Skematik

3.3 Coding
Berikut ini merupakan coding yang digunakan pada project Love O Meter
const int sensorPin = A0;
const float baselineTemp = 20.0;

void setup() {
Serial.begin(9600);
for (int pinNumber = 2; pinNumber < 5; pinNumber++) {
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
}
}

void loop() {
int sensorVal = analogRead(sensorPin);
Serial.print("sensor Value: ");
Serial.print(sensorVal);
float voltage = (sensorVal / 1024.0) * 5.0;
Serial.print(", Volts: ");
Serial.print(voltage);
Serial.print(", degrees C: ");
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
if (temperature < baselineTemp + 2) {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
else if (temperature >= baselineTemp + 2 && temperature < baselineTemp +
4) {
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
else if (temperature >= baselineTemp + 4 && temperature < baselineTemp +
6) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
}
else if (temperature >= baselineTemp + 6) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}
delay(1);
}

3.4 Penjelasan Coding


Berikut ini merupakan penjelasan coding yang digunakan
a. const int sensorPin = A0;
const float baselineTemp = 20.0;

1. const – const (konstanta) mirip dengan variabel karena memungkinkan menamai


sesuatu secara unik dalam program, tetapi const tidak dapat diubah.
2. float– merupakan tipe data untuk menampung bilangan decimal

b. void setup() {
Serial.begin(9600);

Serial.begin() – membuka koneksi antara Arduino dan komputer, sehingga Anda


dapat melihat nilai dari input analog di layar komputer. 9600 adalah kecepatan di
mana Arduino akan berkomunikasi, 9600 bit per detik.

c. for (int pinNumber = 2; pinNumber < 5; pinNumber++) {


pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
}
}
for() – digunakan untuk mengulang blok pernyataan yang diapit {}. Increment
counter biasanya digunakan untuk menambah dan menghentikan perulangan.
Pernyataan for berguna untuk setiap operasi berulang, dan sering digunakan dalam
kombinasi dengan array untuk beroperasi pada kumpulan data/pin. Untuk
mempersingkat pemberian nama unik dan mengetik fungsi pinMode() untuk masing-
masing pin, kita menggunakan for() untuk mendefinisikan masing-masing pin.

d. digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);

digitalWrite() – Perintah untuk mengirim 5V atau 0V ke pin OUTPUT. digitalWrite()


mengambil dua argumen: pin apa yang harus dikontrol, dan nilai apa yang harus
disetel pin itu, HIGH atau LOW

e. else if (temperature >= baselineTemp + 2 && temperature < baselineTemp + 4) {


digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);

Pernyataan else yang memiliki if() berarti ada kondisi lain yang akan di uji didalm if()
kedua. Program didalam tanda {} pada perintah else akan dijalankan jika logika
didalam if() tidak terpenuhi.

f. void loop() {
int sensorVal = analogRead(sensorPin);
pada loop(), kalian akan menggunakan variabel lokal bernama sensorVal untuk
menyimpan pembacaan dari sensor. Untuk mendapatkan nilai dari sensor
menggunakan analogRead()

g. Serial.print("sensor Value: ");


Serial.print(sensorVal);

Fungsi Serial.print() mengirimkan informasi dari Arduino ke komputer. Kalian dapat


melihat informasi di serial monitor. Jika memberikan argumen Serial.print() dalam
tanda kutip, itu akan mencetak teks yang kalian ketik. Jika kalian memberikan
variabel sebagai argumen, maka nilai dari variabel tersebut yang akan muncul pada
serial monitor.

h. float voltage = (sensorVal / 1024.0) * 5.0;

Dengan sedikit matematika, kalian dapat mengetahui berapa tegangan sebenarnya


pada pin analog. Tegangan akan menjadi nilai antara 0 dan 5 volt, dan akan memiliki
bagian pecahan (misalnya, mungkin 2,5 volt), jadi kalian harus menyimpannya di
dalam variabel lain. Buat variabel bernama voltage untuk menyimpan hasil
perhitungan.

i. Serial.print(", degrees C: ");


float temperature = (voltage - .5) * 100;
Serial.println(temperature);

Serial.println() – Sangat membantu dalam mempermudah pembacaan pada serial


monitor karena membuat baris baru di serial monitor setelah mengirimkan nilai.

j. else if (temperature >= baselineTemp + 2 && temperature < baselineTemp + 4) {


digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);

< : Membandingkan variabel di sebelah kiri dengan nilai atau variabel di sebelah
kanan operator. Mengembalikan nilai true ketika nilai di sebelah kiri lebih kecil
daripada nilai di sebelah kanan.

k. else if (temperature >= baselineTemp + 4 && temperature < baselineTemp + 6) {


digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
Operator && berarti "dan", dalam arti logis. Operator ini digunakan untuk
memeriksa beberapa kondisi: “jika suhunya 2 derajat lebih tinggi dari baselineTemp,
dan suhu kurang dari 4 derajat di atas baselineTemp.”

l. else if (temperature >= baselineTemp + 6) {


digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}
delay(1);
}

Analog to Digital Converter (ADC) dapat membaca dengan sangat cepat, kalian harus
memberikan delay() di bagian paling akhir dari loop(). Jika kalian membacanya
terlalu cepat, nilai-nilai yang muncul mungkin akan sedikit aneh.

Kalibrasi baselineTemp
a. Coba letakkan jari di sekitar sensor saat dicolokkan pada breadboard dan lihat
berapa nilai yang muncul pada serial monitor. Catat berapa suhu saat sensor
dibiarkan di udara terbuka.
b. Tutup serial monitor dan ubah nilai baselineTemp dalam sesuai dengan suhu
pengamatan.
c. Upload kembali program yang telah diedit.
d. Sekarang coba pegang sensor dengan jari. Saat suhu naik, kalian akan melihat LED
menyala pada satu per satu.
e. Selamat, kalian benar benar panas!

Setelah program diupload buka serial monitor untuk melihat nilai yang dibaca.
BAB IV COLOR MIXING LAMP

Menggunakan LED 3 Warna & 3 Photoresistor, kalian akan menciptakan lampu yang
berubah warna tergantung pada kondisi pencahayaan eksternal.
4.1 Peralatan
a. LED RGB
b. Resistor 220 Ohm dan 10 k Ohm
c. Photoresistor
d. selotip
selain menghidupkan LED RGB kita juga dapat mengatur intensitas cahaynya bahkan kita
juga bisa mencampur warnanya. Arduino tidak dapat memvariasikan tegangan output pada
pinnya, hanya dapat menghasilkan 5V. Karenanya kita harus menggunakan teknik yang
disebut Pulse Width Modulation (PWM) untuk memudarkan LED. PWM dengan cepat
mengubah pin output HIGH dan LOW selama periode waktu tertentu. Perubahan ini terjadi
lebih cepat dari yang dapat dilihat oleh mata manusia. Mirip dengan cara film bekerja,
dengan cepat memotret sejumlah gambar diam untuk menciptakan ilusi gerakan. Saat kita
mengubah nilai HIGH dan LOW pada suatu pin, seolah-olah kita mengubah tegangan pada
pin tersebut. Persentase waktu HIGH dalam suatu periode disebut duty cycle. Ketika pin
HIGH setengah dari waktu periode dan LOW setengah dari waktu periode (50%) pin tersebut
akan memberikan tegangan OUTPUT 50% dari 5V
Arduino Uno memiliki enam pin PWM (pin digital 3, 5, 6, 9, 10, dan 11), yang diidentifikasi
dengan simbol ~ di sebelah nomor pin tersebut.
Ilustrasi Rangkaian dan Tampilan Skematik

4.2 Coding
Berikut ini merupakan Coding yang digunakan
const int greenLEDPin = 9;
const int redLEDPin = 10;
const int blueLEDPin = 11;

const int redSensorPin = A0;


const int greenSensorPin = A1;
const int blueSensorPin = A2;
int redValue = 0;
int greenValue = 0;
int blueValue = 0;

int redSensorValue = 0;
int greenSensorValue = 0;
int blueSensorValue = 0;

void setup() {
Serial.begin(9600);
pinMode(greenLEDPin, OUTPUT);
pinMode(redLEDPin, OUTPUT);
pinMode(blueLEDPin, OUTPUT);
}

void loop() {
redSensorValue = analogRead(redSensorPin);
delay(5);
greenSensorValue = analogRead(greenSensorPin);
delay(5);
blueSensorValue = analogRead(blueSensorPin);
Serial.print("raw sensor Values \t red: ");
Serial.print(redSensorValue);
Serial.print("\t green: ");
Serial.print(greenSensorValue);
Serial.print("\t Blue: ");
Serial.println(blueSensorValue);

redValue = redSensorValue / 4;
greenValue = greenSensorValue / 4;
blueValue = blueSensorValue / 4;

Serial.print("Mapped sensor Values \t red: ");


Serial.print(redValue);
Serial.print("\t green: ");
Serial.print(greenValue);
Serial.print("\t Blue: ");
Serial.println(blueValue);

analogWrite(redLEDPin, redValue);
analogWrite(greenLEDPin, greenValue);
analogWrite(blueLEDPin, blueValue);
}
Setelah Arduino diprogram, buka serial monitor. LED mungkin akan berwarna putih pudar,
tergantung pada warna cahaya yang dominan di ruanga.
Lihatlah nilai yang berasal dari sensor di monitor serial, jika kita berada di lingkungan
dengan pencahayaan yang stabil, nilai dari sensor akan konsisten.
Matikan lampu di ruangan, apa yang terjadi pada nilai sensor?
Dengan senter, arahkan pada masing-masing sensor satu per satu dan perhatikan
bagaimana nilainya berubah di serial monitor, dan perhatikan bagaimana warna LED
berubah.
Tutup photoresistor dengan filter, bagaimana hasilnya?

4.3 Penjelasan Coding


Focus penjelasan coding pada project ini adalah bagaimana untuk mengubah tingakt
intesitas cahaya yang dihasilkan LED melalui PWM

analogWrite(redLEDPin, redValue);
analogWrite(greenLEDPin, greenValue);
analogWrite(blueLEDPin, blueValue);
}

redValue merupakan nilai yang akan menentukan tingkat kecerahan LED. redValue
ini merupakan nilai dari Pin PWM. Nilai pin PWM bisa diisi antara 0-255.
BAB V MOOD CUE

Gunakan Motor Servo Untuk Menginterpretasikan Suasana Hati kita.

5.1 Peralatan
a. Potensiometer
b. Motor Servo motor ARM
c. Kapasitor 100Mikro farad
d. Male Header Pin (3 pin)

Project kali ini akan memperkenalakn motor Servo. Jenis motor khusus yang tidak berputar
360 derajat, tetapi pindah ke posisi tertentu dan tetap pada posisi tersebut sampai
mendapatkan perintah baru. Servo biasanya hanya berputar 180 derajat (setengah
lingkaran) atau ada juga yang berputar 90 derajat. Cara kerja servo mirip dengan
mengendalikan LED menggunakan PWM, motor servo menerima sinyal yang memberi ke
sudut mana harus bergerak. Lebar pulsa untuk servo adalah 1000 - 2000 mikrodetik.
Arduino IDE sudah dilengkapi dengan library yang dapat digunakan untuk mengendalikan
servo dengan mudah. Karena servo hanya berputar 180 derajat, dan input analog memiliki
nilai 0-1023, kalian akan belajar menggunakan fungsi yang disebut map() untuk mengubah
skala nilai yang berasal dari potensiometer.

5.2 Ilustrasi Rangkaian dan Tapilan Skematik

5.3 Coding
Berikut ini merupakan coding yang digunakan
#include <Servo.h>
Servo myServo;

int const potPin = A0;


int potVal;
int angle;

void setup() {
myServo.attach(9);
Serial.begin(9600);
}

void loop() {
potVal = analogRead(potPin);
Serial.print("potVal: ");
Serial.print(potVal);

angle = map(potVal, 0, 1023, 0, 179);

Serial.print(", angle: ");


Serial.println(angle);
myServo.write(angle);

delay(15);
}

Setelah program diupload, buka serial monitor. kalian akan melihat aliran nilai yang mirip
dengan ini:
potVal : 1023, sudut : 179
potVal : 1023, sudut : 179
Putar potensiometer, lihat hasil yang keluar pada serial monitor dan perhatikan juga gerak
servo.
Motor servo adalah motor dengan sejumlah roda gigi dan beberapa rangkaian di dalamnya.
Sistem mekanik di dalam servo memberikan feedback pada rangkaian, sehingga servo
mengetahui posisi sudutnya.

5.4 Penjelasan Coding


Berikut ini focus penjelasan coding yang digunakan
a. #include <Servo.h>

#include digunakan Untuk menggunakan library servo, kita harus import library
tersebut dengan cara menambahkan #include sebelum nama library yang akan
digunakan. Instruksi #include tidak memiliki titik koma di akhir baris.
b. Servo myServo;

Setelah memanggil library kita harus membuat sebuah objek pada library tersebut.
myServo merupakan sebuah objek dari servo. Setiap kali program merujuk ke
myServo, program akan berkomunikasi dengan objek servo.

c. myServo.attach(9);

Memberi informasi kepada Arduino bahwa myServo terhubung dengan pin 9


d. angle = map(potVal, 0, 1023, 0, 179);
map() – Fungsi ini mengubah skala angka dari INPUT dan memberika skala yang
diinginkan. Kalian akan mengubah nilai antara 0-1023 menjadi nilai antara 0-179.
Dibutuhkan lima argumen: angka yang akan diskalakan (ini dia potVal), nilai
minimum input (0), nilai maksimum input (1023), nilai minimum output (0), dan
nilai maksimum keluaran (179).

e. myServo.write(angle);
servo.write() – menggerakkan motor ke sudut yang telah tentukan.
BAB VI LIGHT THEREMIN

Project berikut ini akan membuat sura kebisingan menggunakan Photoresistor dan Elemen
PIEZO. Project ini sering dikenal sebagai Alat Musik Berbasis Cahaya.
6.1 Peralatan
a. Piezo
b. Photoresistor
c. Resistor 10k Ohm
Theremin adalah alat musik yang mengeluarkan bunyi berdasarkan Gerakan tangan musisi
di sekitar instrumen. Theremin mendeteksi dimana tangan pemain dalam diantara dua
antena dengan membaca perubahan kapasitif pada antena. Antena ini terhubung pada
sebuah rangkaian analog yang menghasilkan suara.
Karena Arduino tidak bisa persis meniru suara misterius dari instrumen ini, namun kita
dapat menggunakan fungsi tone(). Gambar 1 menunjukkan perbedaan antara pulsa yang
dipancarkan oleh analogWrite() dan tone(). Hal ini memungkinkan transduser seperti
speaker atau piezo untuk bergerak maju mundur dengan kecepatan berbeda.

Kalian tidak akan membaca kapasitansi dengan Arduino, Kalian akan menggunakan
photoresistor untuk mendeteksi intenstas cahaya. Dengan menggerakkan tangan di atas
sensor, kalian akan mengubah intensitas cahaya yang dibaca photoresistor. Perubahan
tegangan pada pin analog akan menentukan frekuensi untuk dimainkan.
Piezo adalah elemen kecil yang bergetar ketika menerima listrik. Ketika bergetar, Piezo akan
menggantikan udara di sekitarnya dan menciptakan gelombang suara.
6.2 Ilustrasi Rangkaian dan Tampilan Skematik
6.3 Coding
int sensorValue;
int sensorLow = 1023;
int sensorHigh = 0;
const int ledPin = 13;

void setup() {
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);

while (millis() < 5000) {


sensorValue = analogRead(A0);
if (sensorValue > sensorHigh) {
sensorHigh = sensorValue;
}
if (sensorValue < sensorLow) {
sensorLow = sensorValue;
}
}
digitalWrite(ledPin, LOW);
}
void loop() {
sensorValue = analogRead(A0);
int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000);
tone(8, pitch, 20);
delay(10);
}

Saat pertama kali menyalakan Arduino, ada jeda 5 detik untuk mengkalibrasi sensor. Untuk
melakukan ini, gerakkan tangan kalian ke atas dan ke bawah di atas photoresistor.
Kalibrasi akan semakin baik ketika kalian konsisten melakukan gerakan saat kalibrasi dan
saat memainkannya.
Setelah 5 detik, kalibrasi akan selesai, dan LED pada Arduino akan mati. Ketika ini terjadi,
Anda akan mendengar suara yang berasal dari piezo! Saat intensitas cahaya yang dibaca
oleh sensor berubah, frekuensi yang dimainkan piezo juga akan berubah.
Fungsi tone() beroperasi sangat mirip dengan PWM di analogWrite() tetapi dengan satu
perbedaan yang signifikan. Dalam analogWrite() frekuensinya tetap. Dengan tone() Anda
masih mengirim pulsa, tetapi mengubah frekuensinya. tone() selalu berbunyi pada siklus
kerja 50% (setengah waktu pin tinggi, separuh lainnya waktu rendah).
6.4 Penjelasan Coding
a. while (millis() < 5000) {

1. Kalibrasi nilai maksimum dan minimum sensor. Kalian akan menggunakan


pernyataan while() untuk menjalankan loop selama 5 detik. while() loop berjalan
sampai kondisi tertentu terpenuhi.
2. Kalian akan menggunakan fungsi millis() untuk memeriksa waktu saat ini. millis()
melaporkan berapa lama Arduino telah berjalan sejak terakhir dihidupkan atau
disetel ulang.

b. int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000);


tone(8, pitch, 20);
delay(10);
}

Selanjutnya, panggil fungsi tone() untuk memutar suara. Dibutuhkan tiga


argumen: pin apa yang terhubung dengan buzzer (dalam hal ini pin 8), frekuensi
apa yang harus dimainkan (ditentukan oleh variabel pitch), dan berapa lama
untuk memainkan not.
BAB VII KEYBOARD INSTRUMENT

Dengan Beberapa Resistor Dan Pushbutton Kalian Akan Membuat Keyboard Musik Kecil.
7.1 Peralatan
a. Switch
b. Piezo
c. Resistor 10k Ohm, 1 Mega Ohm dan 220 Ohm
Resistor ladder, adalah cara membaca sejumlah pushbutton menggunakan input analog.
Teknik ini sangat membantu ketika kita hanya memiliki pin digital dengan jumlah terbatas.
Kalian akan menghubungkan sejumlah pushbutton secara paralel ke pin analog. Saat kalian
menekan setiap pushbutton, level tegangan yang berbeda akan diteruskan ke pin analog.
Jika kalian menekan dua pushbutton secara bersamaan, kalian akan mendapatkan input
unik berdasarkan hubungan antara dua resistor secara paralel.
7.2 Ilustrasi Rangkaian dan tampilan Skematik

7.3 Coding
Berikut ini merupakan coding yang digunakan:
int notes[] = {262, 294, 330, 349};

void setup() {
Serial.begin(9600);
}

void loop() {
int keyVal = analogRead(A0);
Serial.println(keyVal);
if (keyVal == 1023) {
tone(8, notes[0]);
} else if (keyVal >= 990 && keyVal <= 1010) {
// play the second frequency in the array on pin 8
tone(8, notes[1]);
} else if (keyVal >= 505 && keyVal <= 515) {
// play the third frequency in the array on pin 8
tone(8, notes[2]);
} else if (keyVal >= 5 && keyVal <= 10) {
// play the fourth frequency in the array on pin 8
tone(8, notes[3]);
} else {
// if the value is out of range, play no tone
noTone(8);
}
}

Jika nilai resistor kalian mendekati nilai dalam program contoh, kalian akan mendengar
beberapa suara dari piezo saat menekan pushbutton. Jika tidak, periksa monitor serial untuk
memastikan setiap tombol berada dalam rentang yang sesuai dengan catatan dalam
pernyataan if()...else.
Jika terdengar suara yang tampaknya gagap, coba perbesar jangkauannya.
Tekan beberapa tombol secara bersamaan, dan lihat nilai seperti apa yang kalian dapatkan
di monitor serial. Kalian bisa menggunakan nilai baru ini untuk membuat lebih banyak suara.
Bereksperimenlah dengan frekuensi yang berbeda. Kalian dapat menemukan frekuensi not
musik di halaman ini: arduino.cc/frequencies
Fungsi tone() digunakan untuk menghasilkan suara, tetapi memiliki beberapa keterbatasan.
Fungsi tone () hanya bisa membuat gelombang persegi, bukan gelombang sinus halus atau
segitiga. Gelombang persegi tidak terlihat seperti gelombang sama sekali. Seperti yang Anda
lihat pada Gambar 1 di materi 7, ini adalah serangkaian sinyal hidup dan mati. Ingatlah
beberapa hal: hanya satu nada yang dapat dimainkan pada satu waktu dan tone()
mengganggu perintah analogWrite().
7.4 Penjelasan Coding

a. int notes[] = {262, 294, 330, 349};

Array adalah cara untuk menyimpan nilai berbeda yang terkait dengan satu sama
lain, seperti frekuensi dalam skala musik, hanya menggunakan satu nama. Dengan
array kalian dapat mengakses informasi secara efisien.
Untuk mendeklarasikan array, buatlah variabel, tetapi di akhir variabel ikuti dengan
tanda kurung persegi [].
Setelah tanda sama dengan =, Tuliskan nilai atau elemen di dalam tanda kurung
kriting {}. dan isi dari array tersebut adalah 262, 294, 330, 349.

b. tone(8, notes[0]);

Jika keyVal sama dengan 1023 maka buzzer akan berbunyi sesuai dengan angka yang
berada di Array notes dengan index 0 (262).
BAB VIII DIGITAL HOURGLASS

Dalam proyek ini, kalian akan membuat jam kaca digital yang menghidupkan LED setiap
sepuluh menit, kalian akan mengetahui bagaimana cara menggunakan timer bawaan
Arduino.
8.1 Peralatan

a. Switch
b. LED
c. Resistor 10k Ohm dan 220 Ohm

Saat ini, ketika kalian menginginkan sesuatu terjadi pada interval waktu tertentu dengan
Arduino, kalian menggunakan delay(). Hal ini sedikit membatasi karena saat Arduino
memanggil delay(), Arduino akan berhenti bekerja hingga waktu delay() tercapai. Berarti
saat itu tidak ada input atau output lain saat menunggu. Jika kalian ingin melakukan sesuatu
setiap 10 detik, menggunakan delay () 10 detik akan cukup merepotkan.
Fungsi millis() membantu menyelesaikan masalah ini dengan melacak waktu Arduino dalam
milidetik. Kalian menggunakannya fungsi ini pada materi 7.
Sejauh ini sudah menggunakan tipe data int. int (integer) adalah angka 16-bit (-32.768 -
32.767). Tetapi jika Arduino menghitung 1000 kali per detik dengan milis(), kalian akan
kehabisan memori dalam waktu kurang dari satu menit. Tipe data long menyimpan nomor
32-bit (-2.147.483.648 - 2.147.483.647). Karena waktu tidak berjalan mundur kalian bisa
gunakan unsigned long (0 - 4.294.967.295) yang hanya memiliki positif. Tipe data tersebut
memiliki cukup ruang untuk milis() menyimpan waktu selama hampir 50 hari. Dengan
membandingkan currentmillis() ke nilai tertentu.
8.2 Ilustrasi Rangkaian dan Tampilan Skematik

8.3 Coding
const int switchPin = 8;
unsigned long previousTime = 0;
int switchState = 0;
int prevSwitchState = 0;
int led = 2;
long interval = 600000;

void setup() {
for (int x = 2; x < 8; x++) {
pinMode(x, OUTPUT);
}
pinMode(switchPin, INPUT);
}

void loop() {
unsigned long currentTime = millis();
if (currentTime - previousTime > interval) {
previousTime = currentTime;
digitalWrite(led, HIGH);
led++;

if (led == 7) {
}
}
switchState = digitalRead(switchPin);
if (switchState != prevSwitchState) {
for (int x = 2; x < 8; x++) {
digitalWrite(x, LOW);
}
led = 2;
previousTime = currentTime;
}
prevSwitchState = switchState;
}

Setelah program diupload, periksa waktu pada jam. Setelah 10 menit berlalu, LED pertama
akan menyala. Setiap 10 menit setelah itu, LED berikutnya akan menyala. Pada akhir satu
jam, keenam lampu menyala.
Saat kalian membalik rangkaian, akan menyebabkan berubah status kemiringannya
kemudian LED akan mati dan pengatur waktu akan mulai lagi.
Tilt switch adalah alat yang bagus dan murah untuk menentukan orientasi. Accelerometers
adalah jenis lain dari sensor kemiringan yang memberikan lebih banyak informasi tetapi
harganya lebih mahal.
8.4 Penjelasan Coding

a. void loop() {
unsigned long currentTime = millis();
Arduino memulai fungsi millis() dan menyimpannya dalam variabel lokal bernama
currentTime

b. switchState = digitalRead(switchPin);
Membaca nilai dari switchPin

c. if (switchState != prevSwitchState) {
for (int x = 2; x < 8; x++) {
digitalWrite(x, LOW);
}
led = 2;
previousTime = currentTime;
}

Memeriksa apakah switchState di posisi yang berbeda dari prevSwitchState. Tanda !


= memeriksa apakah switchState tidak sama dengan prevSwitchState. Jika berbeda,
matikan LED, kembalikan variabel led ke pin 2, dan atur ulang timer untuk LED
dengan menyetel previousTime ke currentTime.

d. prevSwitchState = switchState;
}

Mengatur prevSwitchState menjadi switchState


BAB IX MOTORIZED PINWHEEL

Memutar Pinwheel Berwarna Menggunakan Motor Dc Dan Arduino


9.1 Peralatan

a. Switch
b. Baterai Snap
c. Mosfet
d. Resistor 10K Ohm
e. Motor
f. Diode 1N4007
g. Baterai 9 Volt

Mengontrol motor dengan Arduino lebih rumit daripada hanya mengontrol LED. Motor
membutuhkan lebih banyak arus daripada output pin Arduino Motor dapat menghasilkan
arusnya sendiri melalui sebuah proses yang disebut induksi, yang dapat merusak sirkuit
kalian.
Namun, motor memungkinkan untuk memindahkan benda-benda fisik, yang membuat
proyek kalian jauh lebih mengasyikkan.
Komponen yang memungkinkan untuk mengontrol arus tinggi dan tegangan tinggi. Ada
banyak perbedaan jenis transistor, tetapi mereka bekerja pada prinsip yang sama. Kalian
dapat menganggap transistor sebagai digital switch. Ketika kalian memberikan tegangan ke
salah satu pin transistor, yang disebut Gate, akan menutup rangkaian antara dua pin
lainnya, yang disebut Source dan Drain.
jenis perangkat induktif. Induksi adalah proses dimana perubahan arus listrik dalam kawat
dapat menghasilkan medan magnet yang berubah di sekitar kawat. Ketika motor diberi
listrik, kumparan yang melilit di dalam rumah tembaga menciptakan medan magnet. Medan
ini menyebabkan poros untuk berputar.

Motor juga dapat menghasilkan listrik ketika poros diputar. Coba pasang LED ke dua ujung
motor, lalu putar porosnya dengan tangan. Jika tidak ada yang terjadi, putar poros ke arah
lain. LED seharusnya menyala.

Ketika kalian berhenti memasok energi ke motor, motor akan terus berputar, karena
memiliki momen inersia. Saat berputar, motor akan menghasilkan tegangan ke arah yang
berlawanan dari arus yang diberikan. Tegangan balik ini, dapat merusak transistor. Untuk
alasan ini, kalian harus meletakkan dioda secara paralel dengan motor, jadi tegangan balik
tidak dapat melewati dioda. Dioda hanya akan memungkinkan listrik mengalir dalam satu
arah.

9.2 Ilustrasi Rangkaian dan Tampilan Skematik


9.3 Coding
const int switchPin = 2;
const int motorPin = 9;
int switchState = 0;

void setup() {
pinMode(motorPin, OUTPUT);
pinMode(switchPin, INPUT);
}

void loop() {
switchState = digitalRead(switchPin);
if (switchState == HIGH) {
digitalWrite(motorPin, HIGH);
} else {
digitalWrite(motorPin, LOW);
}
}

Motor memiliki tegangan operasi yang optimal. Mereka akan bekerja pada sedikitnya 50% dari
tegangan. Jika kalian memvariasikan tegangan, kalian dapat mengubah kecepatan putaran motor.
Namun, jangan memvariasikannya lebih dari batas maksimal, atau motor anda akan rusak.
Motor memerlukan pertimbangan khusus ketika dikendalikan oleh mikrokontroler. Biasanya
mikrokontroler tidak dapat menyediakan arus dan tegangan yang cukup untuk menggerakkan
motor. Karena itu, kalian menggunakan transistor untuk menghubungkan keduanya.
Penggunaan diode pada rangkaian motor sangat dianjurkan untuk menghindari kerusakan
komponen. Ada banyak jenis diode dan LED termasuk jenis diode. Semua diode memiliki satu sifat,
yaitu hanya membiarkan arus mengalir dari anoda ke katoda, tetapi tidak sebaliknya.

9.4 Penjelasan Coding


a. const int switchPin = 2;
const int motorPin = 9;
int switchState = 0;

Mendefinisikan konstanta dan variable


b. void setup() {
pinMode(motorPin, OUTPUT);
pinMode(switchPin, INPUT);
}

Mendeklarasikan variabel yang digunakan sebagai INPUT atau OUTPUT

c. void loop() {
switchState = digitalRead(switchPin);
if (switchState == HIGH) {
digitalWrite(motorPin, HIGH);
} else {
digitalWrite(motorPin, LOW);
}
}

Jika push button ditekan, atur pin motor HIGH. Jika tidak ditekan, atur pin motor LOW.
Ketika HIGH, transistor akan aktif, sehingga motor berputar. Saat LOW, motor tidak akan
berputar.
BAB X ZOETROPE

Buat gambar bergerak maju dan mundur menggunakan Arduino dengan menghubungkan Motor dan
H-Bridge
10.1 Peralatan

a. Potensiometer
b. H-Bridge
c. Resistor 10k Ohm
d. Motor
e. Baterai 9 volt

Sebelum internet, televisi, bahkan sebelum film, beberapa gambar bergerak pertama diciptakan
dengan alat yang disebut zoetrope. Zoetropes menciptakan ilusi gerak dari sekelompok gambar diam
yang memiliki perubahan kecil di dalamnya. Bentuk zeotropes biasanya silinder dengan celah
dipotong di samping. Saat silinder berputar dan melihat melalui celah, kalian akan melihat gambar
diam di sisi lain dinding untuk dianimasikan. Celah membantu menjaga gambar agar tidak terlalu
kabur, dan kecepatan putar pada zeotropes memberikan efek gambar tampak bergerak.
H-Bridge
Jenis komponen yang dikenal sebagai integrated circuit (IC). IC adalah komponen yang mencakup
rangkaian besar dalam ukuran kecil. IC dapat membantu menyederhanakan rangkaian yang lebih
kompleks dengan menempatkannya dalam komponen yang mudah diganti. Untuk contoh, H-bridge
yang akan digunakan dalam contoh ini memiliki sejumlah transistor didalamnya.

Dengan IC, Anda dapat mengakses rangkaian melalui pin yang keluar dari sisinya. IC yang berbeda
memiliki jumlah pin yang berbeda, dan tidak semuanya digunakan di setiap rangkaian. Terkadang
lebih mudah untuk merujuk ke pin dengan nomor alih-alih fungsi dari pin tersebut. Bagian dengan
lesung disebut bagian atas. Kalian dapat mengidentifikasi nomor pin dengan menghitung dari kiri
sampai kanan atas dengan bentuk “U” seperti pada Gambar disamping.

10.2 Ilustrasi Rangkaian dan tampilan Skematik

10.3 Coding
const int controlPin1 = 2;
const int controlPin2 = 3;
const int enablePin = 9;
const int directionSwitchPin = 4;
const int onOffSwitchStateSwitchPin = 5;
const int potPin = A0;
int onOffSwitchState = 0;
int previousOnOffSwitchState = 0;
int directionSwitchState = 0;
int previousDirectionSwitchState = 0;
int motorEnabled = 0;
int motorSpeed = 0;
int motorDirection = 1;

void setup() {
pinMode(directionSwitchPin, INPUT);
pinMode(onOffSwitchStateSwitchPin, INPUT);
pinMode(controlPin1, OUTPUT);
pinMode(controlPin2, OUTPUT);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, LOW);
}

void loop() {
onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
delay(1);
directionSwitchState = digitalRead(directionSwitchPin);
motorSpeed = analogRead(potPin) / 4;
if (onOffSwitchState != previousOnOffSwitchState) {
if (onOffSwitchState == HIGH) {
motorEnabled = !motorEnabled;
}
}
if (directionSwitchState != previousDirectionSwitchState) {
if (directionSwitchState == HIGH) {
motorDirection = !motorDirection;
}
}

if (motorDirection == 1) {
digitalWrite(controlPin1, HIGH);
digitalWrite(controlPin2, LOW);
} else {
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, HIGH);
}

if (motorEnabled == 1) {
analogWrite(enablePin, motorSpeed);
} else {
analogWrite(enablePin, 0);
}
previousDirectionSwitchState = directionSwitchState;
previousOnOffSwitchState = onOffSwitchState;
}

Setelah program diupload. Pasang baterai ke konektor batrai. Saat kalian menekan tombol On/Off,
motor akan mulai berputar. Jika potensiometer diputar, maka motor akan bergerak lebih cepat atau
lebih lambat.
Tekan tombol On/Off lagi untuk menghentikan motornya. Coba tekan tombol arah dan verifikasi
motor berputar dua arah
Zoetropes bekerja karena fenomena yang disebut ”persistence of vision", kadang-kadang disingkat
POV. POV menggambarkan ilusi gerak yang tercipta saat mata mengamati gambar diam dengan
variasi kecil dalam urutan yang cepat. Jika kalian mencari di internet untuk ”POV display", kalian
akan menemukan banyak proyek yang dibuat oleh orang-orang yang memanfaatkan efek ini.

10.4 Penjelasan Coding


a. const int controlPin1 = 2;
const int controlPin2 = 3;
const int enablePin = 9;
const int directionSwitchPin = 4;
const int onOffSwitchStateSwitchPin = 5;
const int potPin = A0;

Membuat variabel konstan dari pin INPUT dan OUTPUT

b. int onOffSwitchState = 0;
int previousOnOffSwitchState = 0;
int directionSwitchState = 0;
int previousDirectionSwitchState = 0;

Membuat variabel untuk mencatat status dari program

c. int motorEnabled = 0;
int motorSpeed = 0;
int motorDirection = 1;

Membuat variabel untuk motor

d. void setup() {
pinMode(directionSwitchPin, INPUT);
pinMode(onOffSwitchStateSwitchPin, INPUT);
pinMode(controlPin1, OUTPUT);
pinMode(controlPin2, OUTPUT);
pinMode(enablePin, OUTPUT);
Mendeklarasikan variabel yang digunakan sebagai INPUT atau OUTPUT

e. digitalWrite(enablePin, LOW);
}

Membuat motor mati atau tidak berputar

f. void loop() {
onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);
delay(1);
directionSwitchState = digitalRead(directionSwitchPin);
motorSpeed = analogRead(potPin) / 4;

Membaca informasi sensor (mati / menyala; arah putar; nilai analog dari potensio untuk
menentukan kecepatan putar)

g. if (onOffSwitchState != previousOnOffSwitchState) {
if (onOffSwitchState == HIGH) {
motorEnabled = !motorEnabled;
}
}

Cek apakah tombol dalam posisi ON atau OFF

h. if (directionSwitchState != previousDirectionSwitchState) {
if (directionSwitchState == HIGH) {
motorDirection = !motorDirection;
}
}

Cek apakah tombol arah putar ditekan

i. if (motorDirection == 1) {
digitalWrite(controlPin1, HIGH);
digitalWrite(controlPin2, LOW);
} else {
digitalWrite(controlPin1, LOW);
digitalWrite(controlPin2, HIGH);
}

Mengatur arah putar dari motor

j. if (motorEnabled == 1) {
analogWrite(enablePin, motorSpeed);
} else {
analogWrite(enablePin, 0);
}
Mengatur kecepatan putar motor jika tombol ON motor menyala.

k. previousDirectionSwitchState = directionSwitchState;
previousOnOffSwitchState = onOffSwitchState;

Menyimpan status motor saat ini untuk loop berikutnya


BAB XI CRYSTAL BALL

Bola Kristal Dapat Membantu “Memprediksi” Masa Depan. Ajukan Pertanyaan Kepada Bola Kristal,
Dan Bola Kristal Akan Menjawab. Tilt Sensor Akan Membantu Bola Untuk Jawaban.
11.1 Peralatan

a. Switch
b. Resistor 10k Ohm dan 220 Ohm
c. Potensiometer
d. LCD screen 16x2

LCD dapat digunakan untuk menampilkan karakter alfanumerik. Yang ada di kit memiliki 16 kolom
dan 2 baris, dengan total 32 karakter. Ada sejumlah besar koneksi di board LCD. Pin ini digunakan
untuk daya dan komunikasi, jadi ia tahu apa yang harus ditulis di layar, tetapi Anda tidak perlu
menghubungkan semuanya. Lihat Gambar untuk pin yang perlu Anda sambungkan.
Hubungkan power dan ground ke breadboard.
Tempatkan tilt sensor pada breadboard dan pasang satu kabel ke 5V. Pasang sisi lain ke ground
melalui resistor 10-kilohm, dan ke pin 6 Arduino. (input digital, seperti yang telah Anda lakukan di
beberapa proyek lainnya.)
Pin register select (RS) mengontrol dimana karakter akan muncul di layar.
Pin baca/tulis (R/W) menempatkan layar dalam mode baca atau tulis. Anda akan menggunakan
mode tulis dalam proyek ini.
Enable (EN) memberi tahu LCD bahwa ia akan menerima perintah.
Dua pin luar LCD (Vss dan LED-) harus dihubungkan ke ground. Juga, sambungkan pin R/W ke
ground. Ini menempatkan layar dalam mode tulis. Catu daya LCD (Vcc) harus terhubung langsung ke
5V. Pin LED+ pada layar terhubung ke daya melalui resistor 220 ohm.
Hubungkan: Arduino Digital pin 2 ke LCD D7, Arduino Digital pin 3 ke LCD D6, Arduino Digital pin 4 ke
LCD D5, Arduino Digital pin 5 ke LCD D4. Ini adalah pin data yang memberi tahu layar karakter apa
yang akan ditampilkan.
Hubungkan EN di layar ke pin 11 di Arduino Anda. RS pada LCD terhubung ke pin 12. Pin ini
memungkinkan penulisan ke LCD.
Tempatkan potensiometer di papan tempat memotong roti, sambungkan satu ujung pin ke daya dan
ujung lainnya ke ground. Pin tengah harus terhubung ke V0 pada LCD. Ini akan memungkinkan Anda
untuk mengubah kontras layar.

11.2 Ilustrasi Rangkaian dan Tampilan Skematik

11.3 Coding
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int switchPin = 6;
int switchState = 0;
int prevSwitchState = 0;
int reply;

void setup() {
lcd.begin(16, 2);
pinMode(switchPin, INPUT);
lcd.print("Ask the");
lcd.setCursor(0, 1);
lcd.print("Crystal Ball!");
}

void loop() {
switchState = digitalRead(switchPin);
if (switchState != prevSwitchState) {
if (switchState == LOW) {
reply = random(8);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("the ball says:");
lcd.setCursor(0, 1);
switch (reply) {
case 0:
lcd.print("Yes");
break;

case 1:
lcd.print("Most likely");
break;

case 2:
lcd.print("Certainly");
break;

case 3:
lcd.print("Outlook good");
break;

case 4:
lcd.print("Unsure");
break;

case 5:
lcd.print("Ask again");
break;
case 6:
lcd.print("Doubtful");
break;

case 7:
lcd.print("No");
break;
}
}
}
}

Untuk menggunakan bola kristal. Periksa layar untuk pastikan tertulis "Ask the Crystal ball!" Jika
Anda tidak dapat melihat karakter,coba putar potensiometer yang akan menyesuaikan kontras dari
layar LCD.
Layar LCD memungkinkan menampilkan teks di layar, menggunakan library LiquidCrystal. Pernyataan
switch…case mengontrol program dengan membandingkan variabel dengan nilai-nilai yang sudah
ditentukan sebelumnya.
LCD bekerja dengan mengubah sifat listrik dari cairan yang terjepit di antara kaca terpolarisasi. Kaca
hanya memungkinkan jenis cahaya tertentu untuk melewatinya. Ketika cairan di antara kaca diisi
muatan, maka mulai terbentuk menjadi semi-solid state, yang membuat arahnya berlawanan dari
kaca terpolarisasi, sehingga menghalangi cahaya untuk melewati, dan menciptakan karakter yang
Anda lihat di layar.

11.4 Penjelasan Coding


a. #include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Mengatur library LCD

b. const int switchPin = 6;


int switchState = 0;
int prevSwitchState = 0;
int reply;

Membuat variabel dan kostanta untuk mencatat status dari program

c. void setup() {
lcd.begin(16, 2);
pinMode(switchPin, INPUT);

Mendefinisikan ukuran LCD yang dipakai

d. lcd.print("Ask the");

Menampilkan baris pertama

e. lcd.setCursor(0, 1);
lcd.print("Crystal Ball!");

Memindahkan kursor untuk menampilkan baris selanjutnya

f. void loop() {
switchState = digitalRead(switchPin);

Membuat variabel dan kostanta untuk mencatat status dari program

g. if (switchState != prevSwitchState) {
if (switchState == LOW) {
reply = random(8);

Mendefinisikan ukuran LCD yang dipakai

h. lcd.clear();
lcd.setCursor(0, 0);
lcd.print("the ball says:");

Menampilkan baris pertama

i. case 0:
lcd.print("Yes");
break;

case 1:
lcd.print("Most likely");
break;

case 2:
lcd.print("Certainly");
break;

case 3:
lcd.print("Outlook good");
break;

case 4:
lcd.print("Unsure");
break;

case 5:
lcd.print("Ask again");
break;

case 6:
lcd.print("Doubtful");
break;
case 7:
lcd.print("No");
break;

Pilihan jawaban yang telah ditentukan sebelumnya


BAB XII KNOCK LOCK

Buat mekanisme kunci rahasia anda sendiri untuk menjaga tamu yang tidak diinginkan keluar dari
ruang anda!
12.1 Peralatan

a. Switch
b. LED
c. Resistor 10K Ohm, 220 Ohm dan 1Mega Ohm
d. Kapasitor 100 mikro Farad
e. Motor Servo
f. Piezo
g. Male Header Pin

Piezo yang digunakan untuk memutar ulang suara dalam proyek theremin dan keyboard juga dapat
digunakan sebagai perangkat input. Saat di colokkan ke 5V, sensor dapat mendeteksi getaran yang
dapat dibaca oleh input analog Arduino. Anda harus mencolokkan resistor bernilai tinggi (seperti 1-
megohm) sebagai referensi ke ground agar ini berfungsi dengan baik.
Anda dapat membuat rangkaian sendiri, tetapi jauh lebih menyenangkan jika Anda menggunakan ini
sebagai alat untuk mengunci sesuatu. Jika Anda memiliki kotak kayu atau kardus yang dapat
dilubangi, gunakan motor servo untuk membuka dan menutup gerendel, mencegah orang
mengambil barang-barang Anda.
Saat piezo ditekan rata pada permukaan padat yang dapat bergetar, seperti bagian atas meja kayu,
Arduino Anda dapat merasakan seberapa kuat ketukannya. Dengan menggunakan informasi ini,
Anda dapat memeriksa untuk melihat apakah sejumlah ketukan berada dalam kisaran yang dapat
diterima. Dalam kode Anda dapat melacak jumlah ketukan dan melihat apakah itu cocok dengan
pengaturan Anda.
12.2 Ilustrasi Rangkaian dan Tampilan Skematik

12.3 Coding
#include <Servo.h>
Servo myServo;

const int piezo = A0;


const int switchPin = 2;
const int yellowLed = 3;
const int greenLed = 4;
const int redLed = 5;

int knockVal;
int switchVal;
const int quietKnock = 10;
const int loudKnock = 100;
bool locked = false;
int numberOfKnocks = 0;

void setup() {
myServo.attach(9);
pinMode(yellowLed, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(switchPin, INPUT);
Serial.begin(9600);
digitalWrite(greenLed, HIGH);
myServo.write(0);
Serial.println("the box is unlocked!");
}

void loop() {
if (locked == false) {
switchVal = digitalRead(switchPin);
if (switchVal == HIGH) {
locked = true;
digitalWrite(greenLed, LOW);
digitalWrite(redLed, HIGH);
myServo.write(90);
Serial.println("the box is locked!");
delay(1000);
}
}

if (locked == true) {
knockVal = analogRead(piezo);
if (numberOfKnocks < 3 && knockVal > 0) {
if (checkForKnock(knockVal) == true) {
numberOfKnocks++;
}
Serial.print(3 - numberOfKnocks);
Serial.println(" more knocks to go");
}

if (numberOfKnocks >= 3) {
locked = false;
myServo.write(0);
delay(20);
digitalWrite(greenLed, HIGH);
digitalWrite(redLed, LOW);
Serial.println("the box is unlocked!");
numberOfKnocks = 0;
}
}
}

bool checkForKnock(int value) {


if (value > quietKnock && value < loudKnock) {
digitalWrite(yellowLed, HIGH);
delay(50);
digitalWrite(yellowLed, LOW);
Serial.print("Valid knock of value ");
Serial.println(value);
return true;
}
else {
Serial.print("Bad knock value ");
Serial.println(value);
return false;
}
}

Buka serial monitor. Anda akan melihat LED hijau menyala, dan servo akan bergerak ke posisi tidak
terkunci. Monitor serial harus mencetak "Kotak tidak terkunci!".
Anda mungkin akan mendengar piezo membuat "klik" kecil saat pertama kali mendapat daya.
Cobalah mengetuk dengan lembut dan keras untuk melihat intensitas ketukan seperti apa yang
memicu fungsi Anda. Anda akan tahu itu berfungsi ketika LED kuning rendah berkedip dan monitor
serial memberitahu Anda bahwa Anda memiliki ketukan yang valid dengan nilainya. Ini juga akan
memberitahu Anda jumlah ketukan yang harus Anda lakukan sebelum membuka kunci kotak.
Setelah Anda mencapai jumlah ketukan yang tepat, lampu merah akan mati, lampu hijau akan
menyala, servo akan bergerak 90 derajat, dan monitor serial akan memberitahu Anda bahwa kunci
telah dilepaskan.
Menulis fungsi sendiri tidak hanya memungkinkan Anda untuk lebih mengontrol aliran kode dengan
mudah, ini juga membantu membuatnya tetap dapat dibaca saat proyek Anda menjadi lebih besar
dan lebih besar. Lebih waktu, saat Anda menulis lebih banyak kode, Anda mungkin menemukan
Anda memiliki banyak fungsi yang Anda dapat digunakan kembali dalam proyek yang berbeda,
membuat proses lebih cepat dan unik untuk gaya Andadari pemrograman.

12.4 Penjelasan Coding


a. #include <Servo.h>
Servo myServo;

Memanggil library Servo. Mendefiniskan servo sebagai variable myServo

b. const int piezo = A0;


const int switchPin = 2;
const int yellowLed = 3;
const int greenLed = 4;
const int redLed = 5;

Membuat variabel dan kostanta untuk mencatat status dari program

c. const int quietKnock = 10;


const int loudKnock = 100;

Menentukan batas ketukan pelan dan kencang

d. bool locked = false;


int numberOfKnocks = 0;

Menentukan kondisi terkunci atau tidak. Membuat variable untuk menghitumg jumlah
ketukan

e. myServo.attach(9);

Mendefinisikan pin yang terhubung ke servo.

f. pinMode(yellowLed, OUTPUT);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(switchPin, INPUT);

Menentukan mode pin yang digunakan sebagai INPUT atau OUTPUT.

g. myServo.write(0);

Mengunci dan Mengubah posisi servo ke sudut 0

h. switchVal = digitalRead(switchPin);

Cek kondisi switchVal

i. if (switchVal == HIGH) {
locked = true;
digitalWrite(greenLed, LOW);
digitalWrite(redLed, HIGH);
myServo.write(90);
Serial.println("the box is locked!");
delay(1000);
}

Mendefinisikan pin yang terhubung ke servo

j. if (locked == true) {
knockVal = analogRead(piezo);

Mengunci dan Mengubah posisi servo ke sudut 0

k. if (numberOfKnocks < 3 && knockVal > 0) {


if (checkForKnock(knockVal) == true) {
numberOfKnocks++;
}
Serial.print(3 - numberOfKnocks);
Serial.println(" more knocks to go");
}

Cek kondisi switchVal

l. if (numberOfKnocks >= 3) {
locked = false;
myServo.write(0);
delay(20);
digitalWrite(greenLed, HIGH);
digitalWrite(redLed, LOW);
Serial.println("the box is unlocked!");
numberOfKnocks = 0;
}

Memeriksa jumlah ketukan untuk memastikan kondisi menjadi unlock

m. if (value > quietKnock && value < loudKnock) {

Memeriksa validitas ketukan, program akan memeriksa apakah nilainya lebih besar dari
quietKnock, dan kurang dari loudKnock.

n. digitalWrite(yellowLed, HIGH);
delay(50);
digitalWrite(yellowLed, LOW);
Serial.print("Valid knock of value ");
Serial.println(value);

Jika nilainya masuk di antara kedua nilai itu, maka itu ketukan yang valid. Kedipkan LED
kuning satu kali dan cetak nilai ketukan ke serial monitor.

o. return true;

Agar program utama mengetahui hasil perbandingan, Anda menggunakan perintah return.
Anda menggunakan perintah return, yang juga mengakhiri fungsi: setelah dijalankan, Anda
kembali ke program utama

p. else {
Serial.print("Bad knock value ");
Serial.println(value);
return false;
}

Jika nilainya terlalu tenang atau terlalu keras, cetak ke monitor serial dan kembalikan false.
BAB XIII TOUCHY-FEELY LAMP

Anda Akan Menciptakan Lampu Yang Menyala Dan Mati Ketika Anda Menyentuh Bagian Bahan
Konduktif

13.1 Peralatan

a. LED
b. Resistor 220 Ohm dan Resistor 1 Mega Ohm
c. Metal Foil

Anda akan menggunakan library CapacitiveSensor oleh Paul Badger untuk proyek ini. Dengan library
ini memungkinkan Anda untuk mengukur kapasitansi tubuh Anda

Kapasitansi adalah ukuran seberapa banyak muatan listrik yang dapat disimpan sesuatu. Library
memeriksa dua pin pada Arduino (satu adalah pengirim, yang lain penerima), dan mengukur waktu
yang diperlukan bagi mereka untuk memiliki keadaan yang sama. Pin ini akan dihubungkan ke benda
logam seperti aluminium foil. Saat Anda semakin dekat dengan objek, tubuh Anda akan menyerap
sebagian muatan, menyebabkannya membutuhkan waktu lebih lama untuk keduanya pin menjadi
sama.

Instalasi Library

Versi terbaru dari perpustakaan CapacitiveSensor dapat didownload pada link berikut:
arduino.cc/capacitive.
Unduh file ke komputer dan unzip
Buka folder sketsa Arduino Anda (akan ada di folder "Dokumen" secara default).
Di folder, buat direktori baru bernama “library”. Tempatkan folder CapacitiveSensor dan unzip di
folder ini dan mulai ulang perangkat lunak Arduino.
Klik menu File>Contoh di perangkat lunak Arduino, dan Anda akan melihat entri baru untuk
"CapacitiveSensor". Library yang Anda tambahkan termasuk proyek contoh.
Buka CapacitiveSensorSketch contoh dan kompilasi. Jika tidak mendapat error, Anda menginstalnya
dengan benar.

13.2 Coding

#include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(4, 2);
int threshold = 1000;
const int ledPin = 12;

void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}

void loop() {
long sensorValue = capSensor.capacitiveSensor(30);
Serial.println(sensorValue);

if (sensorValue > threshold) {


digitalWrite(ledPin, HIGH);
}

else {
digitalWrite(ledPin, LOW);
}
delay(10);
}

Setelah memprogram Arduino, Anda pasti ingin mengetahuinya nilai sensor adalah saat disentuh.
Buka monitor serial dan perhatikan nilai yang berasal dari sensor saat Anda tidak menyentuhnya.
Tekan dengan lembut pada kawat telanjang yang telah Anda buka
papan tempat memotong roti Anda. Jumlahnya harus bertambah. Coba tekan lagi tegas dan lihat
apakah itu berubah.
Setelah Anda memiliki gagasan tentang kisaran nilai yang Anda dapatkan sensor, kembali ke sketsa
dan ubah variabel ambang batas ke angka yang lebih besar dari nilai sensor Ketika itu tidak disentuh,
tetapi kurang dari nilainya saat ditekan. Mengunggah sketsa dengan nilai baru. Lampu harus
menyala dengan andal saat Anda menyentuh kabel, dan matikan saat dibiarkan. Jika kamu tidak
menyalakan lampu, coba turunkan ambang batas sedikit lagi.
Library pihak ketiga seperti CapacitiveSensor Paul Badger adalah alat yang berguna untuk
memperluas kemampuan Arduino. Setelah diinstal, mereka berperilaku mirip dengan library yang
dibundel dengan perangkat lunak inti

13.3 Penjelasan Coding

a. #include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(4, 2);

Import library CapacitiveSensor, Dalam hal ini, pin 4 mengirimkan bahan sensor konduktif
melalui resistor, dan pin 2 adalah pin sense.

b. int threshold = 1000;


const int ledPin = 12;

Membuat nilai batas


c. void loop() {
long sensorValue = capSensor.capacitiveSensor(30);
Serial.println(sensorValue);

if (sensorValue > threshold) {


digitalWrite(ledPin, HIGH);
}

Dalam fungsi loop(), buat variabel bertipe long untuk menampung nilai sensor. library
mengembalikan nilai sensor menggunakan perintah yang disebut CapacitiveSensor() yang
mengambil argumen yang mengidentifikasi jumlah sampel yang ingin Anda baca. Jika Anda
hanya membaca beberapa sampel, mungkin Anda akan melihat banyak variasi pada sensor.
Jika Anda mengambil terlalu banyak sampel, Anda dapat menyebabkan jeda karena sensor
membaca beberapa kali. 30 sampel adalah nilai awal yang baik. Cetak nilai sensor ke monitor
serial.

d. if (sensorValue > threshold) {


digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
Dengan pernyataan if()...else, periksa apakah nilai sensor lebih tinggi dari ambang batas. Jika
ya, nyalakan LED. Jika tidak, matikan.
BAB XIV TWEAK THE ARDUINO LOGO

Menggunakan komunikasi serial, anda akan menggunakan Arduino untuk mengontrol program di
komputer anda
14.1 Peralatan
a. Potensiometer

Anda telah melakukan banyak hal keren dengan dunia fisik, sekarang saatnya untuk mengontrol
komputer Anda dengan Arduino Anda. Saat Anda memprogram Arduino Anda, Anda membuka
koneksi antara komputer dan mikrokontroler. Anda dapat menggunakan koneksi ini untuk mengirim
data bolak-balik ke aplikasi lain.
Arduino memiliki chip yang mengubah komunikasi berbasis USB komputer menjadi komunikasi serial
yang digunakan Arduino. Komunikasi serial berarti bahwa dua komputer, Arduino dan PC Anda,
bertukar bit informasi secara serial, atau satu demi satu dalam waktu.
Sebelum memulai proyek, unduh Software Processing versi terbaru dari processing.org. Mungkin
bermanfaat untuk melihat tutorial "Memulai" dan "Ringkasan" di processing.org/learning. Ini akan
membantu Anda untuk membiasakan diri dengan Processing sebelum Anda mulai menulis perangkat
lunak untuk berkomunikasi dengan Arduino Anda.

14.2 Coding Arduino


void setup() {
Serial.begin(9600);
}

void loop() {
Serial.write(analogRead(A0) / 4);
delay(1);
}

Coding yang digunakan pada Processing.org

import processing.serial.*;
Serial myPort;
PImage logo;
int bgcolor = 0;
void setup () {
colorMode (HSB, 255);
logo = loadImage ("https://i.ibb.co/hC27yTr/Capture-removebg-preview.png");
surface.setSize (logo.width, logo.height);
println ("Available serial ports");
println (Serial.list());
myPort = new Serial (this, Serial.list () [0], 4800);
}

void draw () {
if (myPort.available () > 0) {
bgcolor = myPort.read ();
println (bgcolor);
}
background (bgcolor, 255, 255);
image (logo, 0, 0);
}

Komunikasi serial memungkinkan Arduino untuk berbicara dengan program di komputer. Processing
adalah lingkungan pemrograman open-source yang menjadi dasar Arduino IDE. Memungkinkan
untuk mengontrol sketsa Processing dengan Arduino melalui komunikasi serial.
Saat menggunakan komunikasi serial, hanya satu aplikasi yang dapat berbicara dengan Arduino pada
satu waktu. Jadi, jika Anda menjalankan sketsa Processing yang terhubung ke Arduino Anda, Anda
tidak akan dapat mengunggah sketsa Arduino baru atau menggunakan monitor serial sampai Anda
menutup aplikasi yang aktif.

14.3 Penjelasan Coding Arduino dan Processing.org

a. Serial.write(analogRead(A0) / 4);

Membaca nilai analog dan dibagi dengan 4 karena fungsi Serial.write() hanya bisa ditulis
dengan nilai 0-255 sedangkan analogRead() dapat berisi 0-1023.

b. int bgcolor = 0;

Membuat variable untuk menyimpan warna background

c. colorMode (HSB, 255);

Mengatur mode warna

d. logo = loadImage ("https://i.ibb.co/hC27yTr/Capture-removebg-preview.png");


surface.setSize (logo.width, logo.height);

Untuk memuat gambar Arduino ke dalam sketsa, bacalah ke objek logo yang Anda buat
sebelumnya. Saat Anda memberikan URL gambar, Processing akan mengunduhnya saat
Anda menjalankan program.
Dengan fungsi size() , Anda memberi tahu Processing seberapa besar jendela tampilan
nantinya. Jika Anda menggunakan logo.width dan logo.height sebagai argumen, sketsa akan
secara otomatis disesuaikan dengan ukuran gambar yang Anda gunakan.
e. println ("Available serial ports");
println (Serial.list());
myPort = new Serial (this, Serial.list () [0], 4800);

Mencari port serial yang tersedia , menggunakan Serial.list().


Anda perlu memberi tahu Processing, informasi tentang koneksi serial. Untuk mengisi objek
serial bernama myPort dengan informasi yang diperlukan, program perlu mengetahui bahwa
itu adalah instance baru dari objek serial. Parameter yang diharapkan adalah aplikasi mana
yang akan diajak bicara, port serial mana yang akan berkomunikasi, dan pada kecepatan
berapa.

f. void draw () {

Fungsi draw() analog dengan loop() Arduino yang terjadi berulang-ulang selamanya. Di
sinilah hal-hal ditarik ke jendela program.

g. if (myPort.available () > 0) {
bgcolor = myPort.read ();
println (bgcolor);
}
background (bgcolor, 255, 255);
image (logo, 0, 0);
}

Periksa apakah ada informasi dari Arduino. Perintah myPort.available() akan memberitahu
Anda jika ada sesuatu di buffer serial. Jika ada byte di sana, baca nilainya ke dalam variabel
bgcolor dan cetak ke jendela debug.
Fungsi background() mengatur warna jendela. Dibutuhkan tiga argumen. Argumen pertama
adalah hue, yang berikutnya adalah kecerahan, dan yang terakhir adalah saturasi. Gunakan
variabel bgcolor sebagai nilai hue, dan atur kecerahan dan saturasi ke nilai maksimum, 255.
Anda akan menggambar logo dengan perintah image(). Anda perlu memberi tahu image()
apa yang harus digambar, dan koordinat apa untuk mulai menggambarnya di jendela. 0,0
adalah kiri atas, jadi mulailah dari sana.
BAB XV HACKING BUTTON
Dapatkan Kontrol Komponen Lain Di Sekitar Anda. Menggunakan Beberapa Sirkuit Tambahan

15.1 Peralatan

a. Optocoupler
b. Resistor 220 Ohm

Peringatan: Anda bukan lagi pemula jika melakukan proyek ini. Anda akan membuka membuat
perangkat elektronik dan memodifikasinya. Anda akan membatalkan garansi perangkat Anda, dan
jika Anda tidak hati-hati, Anda dapat merusak perangkat. Pastikan Anda terbiasa dengan semua
konsep elektronik dalam proyek sebelumnya sebelum Anda mencoba yang ini. Kita
merekomendasikan Anda menggunakan barang-barang murah yang Anda tidak keberatan merusak
beberapa barang pertama Anda proyek, sampai Anda mengembangkan pengalaman dan
kepercayaan diri.
Meskipun Arduino dapat mengontrol banyak hal, terkadang lebih mudah menggunakan alat yang
dibuat untuk tujuan tertentu. Mungkin Anda ingin mengontrol televisi atau pemutar musik, atau
mengendarai mobil remote control. Sebagian besar perangkat elektronik memiliki panel kontrol
dengan tombol, dan banyak dari tombol itu dapat diretas sehingga Anda dapat "menekan" mereka
dengan Arduino. Mengontrol suara yang direkam itu bagus contoh. Jika Anda ingin merekam dan
memutar ulang rekaman suara, itu akan membutuhkan banyak upaya untuk membuat Arduino
melakukan itu. Jauh lebih mudah untuk mendapatkan yang kecil perangkat yang merekam dan
memutar ulang suara, dan mengganti tombolnya dengan output dikendalikan oleh Arduino Anda.
Optocoupler adalah sirkuit terintegrasi yang memungkinkan Anda mengontrol satu sirkuit dari yang
berbeda tanpa sambungan listrik antara keduanya. Di dalam optocoupler terdapat LED dan detektor
cahaya.
Ketika LED di optocoupler dihidupkan oleh Arduino, detektor cahaya menutup saklar secara internal
pin 4 dan pin 5 dari optocoupler. Ketika saklar internal ditutup, dua pin keluaran terhubung. Ketika
saklar terbuka, mereka tidak terhubung.

15.2 Coding

const int optoPin = 2;


void setup() {
pinMode(optoPin, OUTPUT);
}
void loop() {
digitalWrite(optoPin, HIGH);
delay(15);
digitalWrite(optoPin, LOW);
delay(21000);
}

Integrated Circuit ada di hampir setiap perangkat elektronik. Chip 28 pin besar pada Arduino adalah
IC yang merupakan otak. Ada IC lain yang mendukung yang satu ini dengan komunikasi dan daya.
Optocoupler dan chip utama pada Arduino adalah chip Dual In-line Package (DIP). Chip DIP ini adalah
jenis yang paling banyak digunakan oleh penghobi karena mudah dipasang pada breadboard dan
tidak harus disolder permanen untuk digunakan.

15.3 Penjelasan Coding

a. const int optoPin = 2;

Membuat konstanta yang terhubung dengan pin 2 Arduino

b. void setup() {
pinMode(optoPin, OUTPUT);
}

Mendefinisikan optoPin sebagai OUTPUT


c. void loop() {
digitalWrite(optoPin, HIGH);
delay(15);
digitalWrite(optoPin, LOW);

Menentukan Output OptoPin


THE ARDUINO PROJECTS BOOK
EDITORS
Projects and text by Scott Fitzgerald and Michael Shiloh Additional text review by Tom Igoe
DESIGN AND ART DIRECTION
TODO Giorgio Olivero, Mario Ciardulli, Vanessa Poli, Michelle Nebiolo todo.to.it
DIGITAL FABRICATION AND PROJECT MANAGEMENT
Officine Arduino Torino Katia De Coi, Enrico Bassi
ADVISORS AND SUPPORTERS
Massimo Banzi, Gianluca Martino, Smart Projects
PROJECT TESTERS AND PROOFREADERS
Michael Shiloh, Michelle Nebiolo, Katia De Coi, Alessandro Buat, Federico Vanzati, David Mellis
THANKS
Big thanks to the entire Arduino user community for their continued contributions, support, and feedback. Special thanks
to the Fritzing team: some of the electronic components illustrations used in the book are taken or modified from the
open-source Fritzing project (www.fritzing.org). Heartfelt
thanks to Paul Badger for the CapacitiveSensor library used in Project 13.

The text of the Arduino Projects Book is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0
License 2012 by Arduino LLC. This means that you can copy, reuse, adapt and build upon the text of this book non-
commercially while attributing the original work (but not in any way that suggests that we endorse you or your use of the
work) and only if the results are transmitted under the same Creative Commons license. Full license terms:
creativecommons.org/licenses/by-nc-sa/3.0/

© 2012 Arduino LLC. The Arduino name and logo are trademarks of Arduino, registered in the US and in the rest of the
world. Other product and company names mentioned herein are trademarks of their respective companies.

The information in this book is distributed on an “As Is” basis without any further warranties. While every precaution has
been taken in the design of this book, neither the authors nor Arduino LLC shall have any liability to any person or entity
with respect to any loss or damage caused or declared to be caused directly or indirectly by the instructions contained in
this book or by the software and hardware described in it.
This book cannot be sold separately from The Arduino Starter Kit.

Designed, printed and bound in Torino, Italy


September 2012

Anda mungkin juga menyukai