BAB
3
IMPLEMENTASI
DAN KONSEP PERANKAT YANG DIGUNAKAN
3.1
Arduino
3.1.1
Pengertian Arduino
Arduino adalah pengendali mikro single-board yang
bersifat open-source, diturunkan dari Wiring platform, dirancang
untuk memudahkan penggunaan elektronik dalam berbagai bidang.
Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki
bahasa pemrograman sendiri.
Arduino
juga merupakan platform hardware terbuka yang ditujukan kepada siapa
saja yang ingin membuat purwarupa peralatan elektronik interaktif
berdasarkan hardware dan software yang fleksibel dan mudah digunakan.
Mikrokontroler diprogram menggunakan bahasa pemrograman arduino yang
memiliki kemiripan syntax dengan bahasa pemrograman C. Karena
sifatnya yang terbuka maka siapa saja dapat mengunduh skema hardware
arduino dan membangunnya.
Arduino
menggunakan keluarga mikrokontroler ATMega yang dirilis oleh Atmel
sebagai basis, namun ada individu/perusahaan yang membuat clone
arduino dengan menggunakan mikrokontroler lain dan tetap kompatibel
dengan arduino pada level hardware. Untuk fleksibilitas, program
dimasukkan melalui bootloader meskipun ada opsi untuk membypass
bootloader dan menggunakan downloader untuk memprogram mikrokontroler
secara langsung melalui port ISP.
3.1.2
Sejarah Singkat
Semuanya
berawal dari sebuah thesis yang dibuat oleh Hernando Barragan, di
institute Ivrea, Italia pada tahun 2005, dikembangkan oleh Massimo
Banzi dan David Cuartielles dan diberi nama Arduin of Ivrea. Lalu
diganti nama menjadi Arduino yang dalam bahasa Italia berarti teman
yang berani.
Tujuan
awal dibuat Arduino adalah untuk membuat perangkat mudah dan murah,
dari perangkat yang ada saat itu. Dan perangkat tersebut ditujukan
untuk para siswa yang akan membuat perangkat desain dan interaksi.
Visi awalnya aja udah mulia kan.
Saat
ini tim pengembangnya adalah Massimo Banzi, David Cuartielles, Tom
Igoe, Gianluca Martino, David Mellis, dan Nicholas Zambetti. Mereka
mengupayakan 4 hal dalam Arduino ini, yaitu:
1.
Harga terjangkau
2.
Dapat dijalankan diberbagai sistem operasi, Windows, Linux, Max, dan
sebagainya.
3.
Sederhana, dengan bahasa pemograman yang mudah bisa dipelajari orang
awam, untuk orang teknik saja.
4.
Open Source, hardware maupun software.
Sifat
Arduino yang Open Source, membuat Arduino berkembang sangat cepat.
Dan banyak lahir perangkat-perangkat sejenis Arduino. Seperti
DFRDuino atau Freeduino, dan kalau yang lokal ada namanya CipaDuino
yang dibuat oleh SKIR70, terus ada MurmerDuino yang dibuat oleh Robot
Unyil, ada lagi AViShaDuino yang salah satu pembuatnya adalah Admin
Kelas Robot.
Sampai saat ini pihak resmi, sudah membuat berbagai
jenis-jenis Arduino. Mulai dari yang paling mudah dicari dan paling
banyak digunakan, yaitu Arduino Uno. Hingga Arduino yang sudah
menggunakan ARM Cortex, beebentuk Mini PC. Dan sudah ada ratusan ribu
Arduino yang digunakan di gunakan di dunia pada tahun 2011. Dan untuk
hari ini, yang bisa kamu hitung sendiri ya. Dan Arduino juga sudah
banyak dipaka oleh perusahaan besar. Contohnya Google menggunakan
Arduino untuk Accessory Development Kit, NASA memakai Arduino untuk
prototypin, ada lagi Large Hadron Colider memakai Arduino dalam
beberapa hal untuk pengumpulan data. Dan banyak yang bertanya juga
Arduino ini menggunakan bahasa pemograman apa? Arduino sebenarnya
menggunakan bahas C, yang sudah disederhanakan. Sehingga orang awam
pun bisa menjadi seniman digital, bisa mempelajari Arduino dengan
mudahnya.
3.1.3
Jenis - Jenis Arduino
Dan
seperti Microcontroller yang banyak jenisnya, Arduino lahir dan
berkembang, kemudian muncul dengan berbagai jenis. Diantaranya
adalah:
1. Arduino Uno
Jenis
yang ini adalah yang paling banyak digunakan. Terutama untuk pemula
sangat disarankan untuk menggunakan Arduino Uno. Dan banyak sekali
referensi yang membahas Arduino Uno. Versi yang terakhir adalah
Arduino Uno R3 (Revisi 3), menggunakan ATMEGA328 sebagai
Microcontrollernya, memiliki 14 pin I/O digital dan 6 pin input
analog. Untuk pemograman cukup menggunakan koneksi USB type A to To
type B. Sama seperti yang digunakan pada USB printer.
2. Arduino Due
Berbeda
dengan saudaranya, Arduino Due tidak menggunakan ATMEGA, melainkan
dengan chip yang lebih tinggi ARM Cortex CPU. Memiliki 54 I/O pin
digital dan 12 pin input analog. Untuk pemogramannya menggunakan
Micro USB, terdapat pada beberapa handphone.
3. Arduino Mega
Mirip
dengan Arduino Uno, sama-sama menggunakan USB type A to B untuk
pemogramannya. Tetapi Arduino Mega, menggunakan Chip yang lebih
tinggi ATMEGA2560. Dan tentu saja untuk Pin I/O Digital dan pin input
Analognya lebih banyak dari Uno.
4. Arduino Leonardo
Bisa
dibilang Leonardo adalah saudara kembar dari Uno. Dari mulai jumlah
pin I/O digital dan pin input Analognya sama. Hanya pada Leonardo
menggunakan Micro USB untuk pemogramannya.
5. Arduino Fio
Bentuknya
lebih unik, terutama untuk socketnya. Walau jumlah pin I/O digital
dan input analognya sama dengan uno dan leonardo, tapi Fio memiliki
Socket XBee. XBee membuat Fio dapat dipakai untuk keperluan projek
yang berhubungan dengan wireless.
6. Arduino Lilypad
Bentuknya
yang melingkar membuat Lilypad dapat dipakai untuk membuat projek
unik. Seperti membuat amor iron man misalkan. Hanya versi lamanya
menggunakan ATMEGA168, tapi masih cukup untuk membuat satu projek
keren. Dengan 14 pin I/O digital, dan 6 pin input analognya.
7. Arduino Nano
Sepertinya
namanya, Nano yang berukulan kecil dan sangat sederhana ini,
menyimpan banyak fasilitas. Sudah dilengkapi dengan FTDI untuk
pemograman lewat Micro USB. 14 Pin I/O Digital, dan 8 Pin input
Analog (lebih banyak dari Uno). Dan ada yang menggunakan ATMEGA168,
atau ATMEGA328.
8. Arduino Mini
Fasilitasnya
sama dengan yang dimiliki Nano. Hanya tidak dilengkapi dengan Micro
USB untuk pemograman. Dan ukurannya hanya 30 mm x 18 mm saja.
9. Arduino Micro
Ukurannya
lebih panjang dari Nano dan Mini. Karena memang fasilitasnya lebih
banyak yaitu; memiliki 20 pin I/O digital dan 12 pin input analog.
10. Arduino Ethernet
Ini
arduino yang sudah dilengkapi dengan fasilitas ethernet. Membuat
Arduino kamu dapat berhubungan melalui jaringan LAN pada komputer.
Untuk fasilitas pada Pin I/O Digital dan Input Analognya sama dengan
Uno.
11. Arduino Esplora
Rekomendasi
bagi kamu yang mau membuat gadget sepeti Smartphone, karena sudah
dilengkapi dengan Joystick, button, dan sebagainya. Kamu hanya perlu
tambahkan LCD, untuk lebih mempercantik Esplora.
l2. Arduino Robot
Ini adalah paket komplit dari Arduino yang sudah
berbentuk robot. Sudah dilengkapi dengan LCD, Speaker, Roda, Sensor
Infrared, dan semua yang kamu butuhkan untuk robot sudah ada pada
Arduino ini.
3.1.4
Alat - Alat untuk Membuat Arduino
Tidak
perlu perangkat chip programmer karena didalamnya sudah ada
bootloadder yang akan menangani upload program dari komputer. Sudah
memiliki sarana komunikasi USB, Sehingga pengguna laptop yang tidak
memiliki port serial/RS323 bisa menggunakannya. Memiliki modul siap
pakai ( Shield ) yang bisa ditancapkan pada board arduino. Contohnya
shield GPS, Ethernet,dll.
1. Soket USB
Soket
USB adalah soket kabel USB yang disambungkan kekomputer atau laptop.
Yang berfungsi untuk mengirimkan program ke arduino dan juga sebagai
port komunikasi serial.
2. Input / Output Digital dan Input Analog
Input/output
digital atau digital pin adalah pin pin untuk menghubungkan arduino
dengan komponen atau rangkaian digital. contohnya , jika ingin
membuat LED berkedip, LED tersebut bisa dipasang pada salah satu pin
input atau output digital dan ground. komponen lain yang menghasilkan
output digital atau menerima input digital bisa disambungkan ke pin
pin ini.
Input
analog atau analog pin adalah pin pin yang berfungsi untuk menerima
sinyal dari komponen atau rangkaian analog. contohnya ,
potensiometer, sensor suhu, sensor cahaya, dll.
3. Catu Daya
pin
pin catu daya adalah pin yang memberikan tegangan untuk komponen atau
rangkaian yang dihubungkan dengan arduino. Pada bagian catu daya ini
pin Vin dan Reset. Vin digunakan untuk memberikan tegangan langsung
kepada arduino tanpa melalui tegangan pada USB atau adaptor,
sedangkan Reset adalah pin untuk memberikan sinyal reset melalui
tombol atau rangkaian eksternal.
4. Baterai / Adaptor
Soket
baterai atau adaptor digunakan untuk menyuplai arduino dengan
tegangan dari baterai/adaptor 9V pada saat arduino sedang tidak
disambungkan kekomputer. Jika arduino sedang disambungkan kekomputer
dengan USB, Arduino mendapatkan suplai tegangan dari USB, Jika tidak
perlu memasang baterai/adaptor pada saat memprogram arduino.
Contoh
Program
int
LED_PIN = 13;
void
setup () {
pinMode (LED_PIN, OUTPUT); // enable pin 13 for digital output
}
void
loop () {
digitalWrite (LED_PIN, HIGH); // turn on the LED
delay (1000); // wait one second (1000 milliseconds)
digitalWrite (LED_PIN, LOW); // turn off the LED
delay (1000); // wait one second
}
3.1.5
Arduino IDE
1. Pengertian Arduino Software (IDE)
IDE
itu merupakan kependekan dari Integrated Developtment Enviroenment,
atau secara bahasa mudahnya merupakan lingkungan terintegrasi yang
digunakan untuk melakukan pengembangan. Disebut sebagai lingkungan
karena melalui software inilah Arduino dilakukan pemrograman untuk
melakukan fungsi-fungsi yang dibenamkan melalui sintaks pemrograman.
Arduino menggunakan bahasa pemrograman sendiri yang menyerupai bahasa
C. Bahasa pemrograman Arduino (Sketch) sudah dilakukan perubahan
untuk memudahkan pemula dalam melakukan pemrograman dari bahasa
aslinya. Sebelum dijual ke pasaran, IC mikrokontroler Arduino telah
ditanamkan suatu program bernama Bootlader yang berfungsi sebagai
penengah antara compiler Arduino dengan mikrokontroler.
Arduino IDE dibuat dari bahasa pemrograman JAVA.
Arduino IDE juga dilengkapi dengan library C/C++ yang biasa disebut
Wiring yang membuat operasi input dan output menjadi lebih mudah.
Arduino IDE ini dikembangkan dari software Processing yang dirombak
menjadi Arduino IDE khusus untuk pemrograman dengan Arduino.
2. Menulis Sketch
Program
yang ditulis dengan menggunaan Arduino Software (IDE) disebut sebagai
sketch. Sketch ditulis dalam suatu editor teks dan disimpan dalam
file dengan ekstensi .ino. Teks editor pada Arduino Software memiliki
fitur” seperti cutting/paste dan seraching/replacing sehingga
memudahkan kamu dalam menulis kode program.
Pada Software Arduino IDE, terdapat semacam message box
berwarna hitam yang berfungsi menampilkan status, seperti pesan
error, compile, dan upload program. Di bagian bawah paling kanan
Sotware Arduino IDE, menunjukan board yang terkonfigurasi beserta COM
Ports yang digunakan.
Gambar diatas merupakan tampilan dari Software Arduino
IDE
Berfungsi
untuk melakukan checking kode yang kamu buat apakah sudah sesuai
dengan kaidah pemrograman yang ada atau belum
Berfungsi
untuk melakukan kompilasi program atau kode yang kamu buat menjadi
bahsa yang dapat dipahami oleh mesih alias si Arduino.
Berfungsi
untuk membuat Sketch baru
Berfungsi
untuk membuka sketch yang pernah kamu buat dan membuka kembali untuk
dilakukan editing atau sekedar upload ulang ke Arduino.
Berfungsi
untuk menyimpan Sketch yang telah kamu buat.
Berfungsi untuk membuka serial monitor. Serial monitor
disini merupakan jendela yang menampilkan data apa saja yang
dikirimkan atau dipertukarkan antara arduino dengan sketch pada port
serialnya. Serial Monitor ini sangat berguna sekali ketika kamu ingin
membuat program atau melakukan debugging tanpa menggunakan LCD pada
Arduino. Serial monitor ini dapat digunakan untuk menampilkan nilai
proses, nilai pembacaan, bahkan pesan error.
File
New,
berfungsi untuk membuat membuat sketch baru dengan bare minimum yang
terdiri void setup() dan void loop().
Open,
berfungsi membuka sketch yang pernah dibuat di dalam drive.
Open
Recent, merupakan menu yang berfungsi mempersingkat waktu pembukaan
file atau sketch yang baru-baru ini sudah dibuat.
Sketchbook,
berfungsi menunjukan hirarki sketch yang kamu buat termasuk struktur
foldernya.
Example,
berisi contoh-contoh pemrograman yang disediakan pengembang Arduino,
sehingga kamu dapat mempelajari program-program dari contoh yang
diberikan.
Close,
berfungsi menutup jendela Arduino IDE dan menghentikan aplikasi.
Save,
berfungsi menyimpan sketch yang dibuat atau perubahan yang dilakukan
pada sketch
Save
as…, berfungsi menyimpan sketch yang sedang dikerjakan atau sketch
yang sudah disimpan dengan nama yang berbeda.
Page
Setup, berfungsi mengatur tampilan page pada proses pencetakan.
Print,
berfungsi mengirimkan file sketch ke mesin cetak untuk dicetak.
Preferences,
disini kam dapat merubah tampilan interface IDE Arduino.
Quit, berfungsi menutup semua jendela Arduino IDE.
Sketch yang masih terbuka pada saat tombol Quit ditekan, secara
otomatis akan terbuka pada saat Arduino IDE dijalankan.
Edit
Undo/Redo,
berfungsi untuk mengembalikan perubahan yang sudah dilakukan pada
Sketch beberapa langkah mundur dengan Undo atau maju dengan Redo.
Cut,
berfungsi untuk meremove teks yang terpilih pada editor dan
menempatkan teks tersebut pada clipboard.
Copy,
berfungsi menduplikasi teks yang terpilih kedalam editor dan
menempatkan teks tersebut pada clipboard.
Copy
for Forum, berfungsi melakukan copy kode dari editor dan melakukan
formating agar sesuai untuk ditampilkan dalam forum, sehingga kode
tersebut bisa digunakan sebagai bahan diskusi dalam forum.
Copy
as HTML, berfungsi menduplikasi teks yang terpilih kedalam editor
dan menempatkan teks tersebut pada clipboard dalam bentuk atau
format HTML. Biasanya ini digunakan agar code dapat diembededdkan
pada halaman web.
Paste,
berfungsi menyalin data yang terdapat pada clipboard, kedalam
editor.
Select
All, berfungsi untk melakukan pemilihan teks atau kode dalam halaman
editor.
Comment/Uncomment,
berfungsi memberikan atau menghilangkan tanda // pada kode atau
teks, dimana tanda tersebut menjadikan suatu baris kode sebagai
komen dan tidak disertakan pada tahap kompilasi.
Increase/Decrease
Indent, berfunsgi untuk mengurangi atau menambahkan indetntasi pada
baris kode tertentu. Indentasi adalah “tab”.
Find,
berfungsi memanggil jendela window find and replace, dimana kamu
dapat menggunakannya untuk menemukan variabel atau kata tertentu
dalam program atau menemukan serta menggantikan kata tersebut dengan
kata lain.
Find
Next, berfungsi menemukan kata setelahnya dari kata pertama yang
berhasil ditemukan.
Find
Previous, berfungsi menemukan kata sebelumnya dari kata pertama yang
berhasil ditemukan.
Sketch
Verify/Compile,
berfungsi untuk mengecek apakah sketch yang kamu buat ada kekeliruan
dari segi sintaks atau tidak. Jika tidak ada kesalahan, maka sintaks
yang kamu buat akan dikompile kedalam bahasa mesin.
Upload,
berfunsi mengirimkan program yang sudah dikompilasi ke Arduino
Board.
Uplad
Using Programmer, menu ini berfungsi untuk menuliskan bootloader
kedalam IC Mikrokontroler Arduino. Pada kasus ini kamu membutuhkan
perangkat tambahan seperti USBAsp untuk menjembatani penulisan
program bootloader ke IC Mikrokontroler.
Export
Compiled Binary, berfungsi untuk menyimpan file dengan ekstensi
.hex, dimana file ini dapat disimpan sebagai arsip untuk di upload
ke board lain menggunakan tools yang berbeda.
Show
Sketch Folder, berfungsi membuka folder sketch yang saat ini
dikerjakan.
Include
Library, berfunsi menambahkan library/pustaka kedalam sketch yang
dibuat dengan menyertakan sintaks #include di awal kode. Selain itu
kamu juga bisa menambahkan library eksternal dari file .zip kedalam
Arduino IDE.
Add
File…, berfungsi untuk menambahkan file kedalam sketch arduino
(file akan dikopikan dari drive asal). File akan muncul sebagai tab
baru dalam jendela sketch.
Tools
Auto
Format, berfungsi melakukan pengatran format kode pada jendela
editor
Archive
Sketch, berfungsi menyimpan sketch kedalam file .zip
Fix
Encoding & Reload, berfungsi memperbaiki kemungkinan perbedaan
antara pengkodean peta karakter editor danpeta karakter sistem
operasi yang lain.
Serial
Monitor, berungsi membuka jendela serial monitor untuk melihat
pertukaran data.
Board,
berfungsi memilih dan melakukan konfigurasi board yang digunakan.
Port,
memilih port sebbagai kanal komunikasi antara software dengan
hardware.
Programmer,
menu ini digunakan ketika kamu hendak melakukan pemrograman chip
mikrokontroller tanpa menggunakan koneksi Onboard USB-Serial.
Biasanya digunakan pada proses burning bootloader.
Burn
Bootloader, mengizinkan kamu untuk mengkopikan program bootloader
kedalam IC mikrokontroler
Help
Disini
kamu bisa mendapatkan bantuan terhadap kegalauanmu mengenai
pemrograman. Menu help berisikan file-file dokumentasi yang
berkaitan dengan masalah yang sering muncul, serta penyelesaiannya.
Selain itu pada menu help juga diberikan link untuk menuju Arduino
Forum guna menanyakan serta mendiskusikan berbagai masalah yang
ditemukan.
3.Sketchbook
Arduino
Software IDE, menggunakan konsep sketchbook, dimana sketchbook
menjadi standar peletakan dan penyimpanan file program. Sketch yang
telah kamu buat dapat dibuka dengan dari File -> Sketchbook, atau
dengna menu Open.
4.Tabs,
Multiple Files, dan Compilations
Mekanisme
ini mengijinkan kamu untuk melakukan menejemen sketch, dimana lebih
dari satu file dibuka dalam tab yang berbeda.
5.Uploading
Merupakan
mekanisme untuk mengkopikan file .hex atau file hasil kompilasi
kedalam IC mikrokontroler Arduino. Sebelum melakukan uploading, yang
perlu kamu pastikan adalah jenis board yang kamu gunakan dan COM
Ports dimana keduanya terletak pada menu Tools -> Board dan Tools
-> Port.
6.Library
Library/
Pustaka merupakan file yang memberikan fungsi ekstra dari sketch yang
kamu buat, semisal agar Arduino dapat bekerja dengan hardware
tertentu dan melakukan proses manipulasi data. Untuk menginstal
Library pihak ketiga alias Library bukan dari Arduino, dapat
dilakukan dengan Library Manager, Import file .zip, atau kopi paste
secara manual di folder libraries pada Documents di platform Windows.
Untuk instalasi library dapat kunjungi link berikut.
7.Serial
Monitor
Serial
monitor merupakan suatu jendela yang menunjukan data yang
dipertukaran antara arduino dan komputer selama beroperasi, sehingga
kamu bisa menggunakan serial monitor ini untuk menampilkan nilai
hasil operasi atau pesan debugging. Selain melihat data, kamu juga
bisa mengirimkan data ke Arduino melalui serial monitor ini, caranya
dengan memasukkan data pada text box dan menekan tombol send untuk
mengirimkan data. Hal penting yang harus kamu perhatikan adalah
menyamakan baudrate antara serial monitor dengan Arduino board. Untuk
menggunakan kemampuan komunikasi serial ini, pada Arduino, di bagian
fungsi void setup(), diawali dengan instruksi Serial.begin diikuti
dengan nilai baudrate.
8.Preferences
Preferences
mengatur tentang beberapa hal dalam penggunaan Arduino Software IDE,
seperti ukuran font, lokasi dimana menyimpan sketcbook, bahasa yang
digunakan pada Arduino Software IDE, dan masih banyak lagi. Kamu bisa
mengatur preferences pada menu file yang dapat dijumpai pada platform
Windows dan Linux.
9.Language
Support
Language
Support merupakan pilihan bahasa yang dapat disesuaikan pada Software
Arduino IDE. Bahasa Indonesia sudah ada loh. Language Support ini
dapat ditemukan pada menu file -> preferences atau dengan menekan
Ctrl+Comma.
10.Boards
Pemilihan
board pada Arduino Software IDE, berdampak pada dua parameter yaitu
kecepatan CPU dan baudrate yang digunakan ketika melakukan kompilasi
dan meng-upload sketch. Beberapa contoh board yang dapat digunakan
dengan Arduino Software IDE adalah:
Menggunkana
ATmega32u4 dan berjalan pada clock 16 MHz dengan auto-reset, memiliki
12 Input Analog , 20 Digital I/O serta 7 PWM.
Menggunakan
ATmega328 dan berjalan pada clock 16 MHz dengan auto-reset, memiliki
6 Input Analog , 14 Digital I/O serta 7 PWM.
Menggunakan
ATmega168 dan berjalan pada clock 16 MHz dengan auto-reset.
Menggunakan
ATmega328 dan berjalan pada clock 16 MHz dengan auto-reset. memiliki
6 Input Analog.
Menggunakan
ATmega2560 dan berjalan pada clock 16 MHz dengan auto-reset, memiliki
16 Input Analog, 54 Digital I/O dan 15 PWM.
Menggunakan
ATmega1280 dan berjalan pada clock 16 MHz dengan auto-reset, memiliki
16 Input Analog, 54 Digital I/O dan 15 PWM.
Menggunakan
ATmega2560dan berjalan pada clock 16 MHz dengan auto-reset, memiliki
16 Input Analog, 54 Digital I/O dan 15 PWM.
Menggunakan
ATmega32u4 dan berjalan pada clock 16 MHz dengan auto-reset, memiliki
12 Input Analog, 20 Digital I/O dan 7 PWM.
Menggunakan
ATmega32u4 dan berjalan pada clock 16 MHz dengan auto-reset, memiliki
12 Input Analog, 20 Digital I/O dan 7 PWM.
Menggunakan
ATmega32u4 dan berjalan pada clock 16 MHz dengan auto-reset.
Menggunakan
ATmega328 dan berjalan pada clock 16 MHz dengan auto-reset, memiliki
8 Input Analog, 14 Digital I/O dan 6 PWM.
Equivalent
to Arduino UNO with an Ethernet shield: An ATmega328 dan berjalan
pada clock 16 MHz dengan auto-reset, memiliki 6 Input Analog, 14
Digital I/O dan 6 PWM.
Menggunakan
ATmega328 dan berjalan pada clock 8 MHz dengan auto-reset. Memiliki
kesamaan dengan Arduino Pro atau Pro Mini (3.3V, 8 MHz) w/ ATmega328,
memiliki 6 Input Analog, 14 Digital I/O dan 6 PWM.
Menggunakan
ATmega328 dan berjalan pada clock 16 MHz. Bootloader dengan ukuran (4
KB) termasuk kode untuk melakukan inisialisasi pada modul bluetooth,
memiliki 6 Input Analog, 14 Digital I/O and 6 PWM.
Menggunakan
ATmega32u4dan berjalan pada clock 8 MHz dengan auto-reset, memiliki 4
Input Analog, 9 Digital I/O dan 4 PWM.
Menggunakan
ATmega168 atau ATmega132 dan berjalan pada clock 8 MHz dengan
auto-reset, memiliki 6 Input Analog, 14 Digital I/O dan 6 PWM.
Menggunakan
ATmega328 dan berjalan pada clock 16 MHz dengan auto-reset. Memiliki
kesamaan dengan Arduino Duemilanove atau Nano w/ ATmega328, memiliki
6 Input Analog, 14 Digital I/O dan 6 PWM.
Menggunakan
ATmega168 dan berjalan pada clock 16 MHz without auto-reset. Proses
kompilasi dan upload sama dengan Arduino Diecimila atau Duemilanove
w/ ATmega168,memiliki 16 Input Analog, 14 Digital I/O and 6 PWM.
Menggunakan
ATmega328 dan berjalan pada clock 16 MHz dengan auto-reset.
Menggunakan
ATmega328 dan berjalan pada clock 16 MHz dengan auto-reset.
Menggunakan
ATtiny85 dan berjalan pada clock 8 MHz dengan auto-reset, 1 Analog
In, 3 Digital I/O and 2 PWM.
3.1.6
Arduino Uno
1. Pengenalan Arduino UNO
Arduino UNO adalah sebuah board mikrokontroler yang didasarkan pada
ATmega328 (datasheet). Arduino UNO mempunyai 14 pin digital
input/output (6 di antaranya dapat digunakan sebagai output PWM), 6
input analog, sebuah osilator Kristal 16 MHz, sebuah koneksi USB,
sebuah power jack, sebuah ICSP header, dan sebuat tombol reset.
Arduino UNO memuat semua yang dibutuhkan untuk menunjang
mikrokontroler, mudah menghubungkannya ke sebuah computer dengan
sebuah kabel USB atau mensuplainya dengan sebuah adaptor AC ke DC
atau menggunakan baterai untuk memulainya.
Arduino Uno berbeda dari semua board Arduino sebelumnya, Arduino UNO
tidak menggunakan chip driver FTDI USB-to-serial. Sebaliknya,
fitur-fitur Atmega16U2 (Atmega8U2 sampai ke versi R2) diprogram
sebagai sebuah pengubah USB ke serial. Revisi 2 dari board Arduino
Uno mempunyai sebuah resistor yang menarik garis 8U2 HWB ke ground,
yang membuatnya lebih mudah untuk diletakkan ke dalam DFU mode.
Revisi 3 dari board Arduino UNO memiliki fitur-fitur baru sebagai
berikut:
Pinout 1.0: ditambah pin SDA dan SCL yang dekat dengan pin AREF dan
dua pin baru lainnya yang diletakkan dekat dengan pin RESET, IOREF
yang memungkinkan shield-shield untuk menyesuaikan tegangan yang
disediakan dari board. Untuk ke depannya, shield akan dijadikan
kompatibel/cocok dengan board yang menggunakan AVR yang beroperasi
dengan tegangan 5V dan dengan Arduino Due yang beroperasi dengan
tegangan 3.3V. Yang ke-dua ini merupakan sebuah pin yang tak
terhubung, yang disediakan untuk tujuan kedepannya
Sirkit RESET yang lebih kuat
Atmega 16U2 menggantikan 8U2
“Uno” berarti satu dalam bahasa Italia dan dinamai
untuk menandakan keluaran (produk) Arduino 1.0 selanjutnya. Arduino
UNO dan versi 1.0 akan menjadi referensi untuk versi-versi Arduino
selanjutnya. Arduino UNO adalah sebuah seri terakhir dari board
Arduino USB dan model referensi untuk papan Arduino, untuk suatu
perbandingan dengan versi sebelumnya, lihat indeks dari board
Arduino.
2.
Skema dan Referensi Desain
Catatan: Referensi desain Arduino dapat menggunakan sebuah Atmega8,
168, atau 328, model saat ini menggunakan Atmega328, tetapi Atmega8
ditampilkan pada skema sebagai referensi. Konfigurasi pin identik
pada semua ketiga prosesor tersebut.
3.
Daya (Power)
Arduino UNO dapat disuplai melalui koneksi USB atau dengan sebuah
power suplai eksternal. Sumber daya dipilih secara otomatis.
Suplai eksternal (non-USB) dapat diperoleh dari sebuah adaptor AC ke
DC atau battery. Adaptor dapat dihubungkan dengan mencolokkan sebuah
center-positive plug yang panjangnya 2,1 mm ke power jack dari board.
Kabel lead dari sebuah battery dapat dimasukkan dalam header/kepala
pin Ground (Gnd) dan pin Vin dari konektor POWER.
Board Arduino UNO dapat beroperasi pada sebuah suplai eksternal 6
sampai 20 Volt. Jika disuplai dengan yang lebih kecil dari 7 V,
kiranya pin 5 Volt mungkin mensuplai kecil dari 5 Volt dan board
Arduino UNO bisa menjadi tidak stabil. Jika menggunakan suplai yang
lebih dari besar 12 Volt, voltage regulator bisa kelebihan panas dan
membahayakan board Arduino UNO. Range yang direkomendasikan adalah 7
sampai 12 Volt.
Pin-pin dayanya adalah sebagai berikut:
VIN. Tegangan input ke Arduino board ketika board sedang menggunakan
sumber suplai eksternal (seperti 5 Volt dari koneksi USB atau sumber
tenaga lainnya yang diatur). Kita dapat menyuplai tegangan melalui
pin ini, atau jika penyuplaian tegangan melalui power jack, aksesnya
melalui pin ini.
5V. Pin output ini merupakan tegangan 5 Volt yang diatur dari
regulator pada board. Board dapat disuplai dengan salah satu suplai
dari DC power jack (7-12V), USB connector (5V), atau pin VIN dari
board (7-12). Penyuplaian tegangan melalui pin 5V atau 3,3V
membypass regulator, dan dapat membahayakan board. Hal itu tidak
dianjurkan.
3V3. Sebuah suplai 3,3 Volt dihasilkan oleh regulator pada board.
Arus maksimum yang dapat dilalui adalah 50 mA.
GND. Pin ground.
4. Memori
ATmega328 mempunyai 32 KB (dengan 0,5 KB digunakan untuk
bootloader). ATmega 328 juga mempunyai 2 KB SRAM dan 1 KB EEPROM
(yang dapat dibaca dan ditulis (RW/read and written) dengan EEPROM
library).
5.
Input dan Output
Setiap 14 pin digital pada Arduino Uno dapat digunakan sebagai input
dan output, menggunakan fungsi pinMode(),digitalWrite(), dan
digitalRead(). Fungsi-fungsi tersebut beroperasi di tegangan 5 Volt.
Setiap pin dapat memberikan atau menerima suatu arus maksimum 40 mA
dan mempunyai sebuah resistor pull-up (terputus secara default) 20-50
kOhm. Selain itu, beberapa pin mempunyai fungsi-fungsi spesial:
Serial: 0 (RX) dan 1 (TX). Digunakan untuk menerima (RX) dan
memancarkan (TX) serial data TTL (Transistor-Transistor Logic).
Kedua pin ini dihubungkan ke pin-pin yang sesuai dari chip Serial
Atmega8U2 USB-ke-TTL.
External Interrupts: 2 dan 3. Pin-pin ini dapat dikonfigurasikan
untuk dipicu sebuah interrupt (gangguan) pada sebuah nilai rendah,
suatu kenaikan atau penurunan yang besar, atau suatu perubahan
nilai. Lihat fungsi attachInterrupt() untuk lebih jelasnya.
PWM: 3, 5, 6, 9, 10, dan 11. Memberikan 8-bit PWM output dengan
fungsi analogWrite().
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Pin-pin ini mensupport
komunikasi SPI menggunakan SPI library.
LED: 13. Ada sebuah LED yang terpasang, terhubung ke pin digital 13.
Ketika pin bernilai HIGH LED menyala, ketika pin bernilai LOW LED
mati.
Arduino UNO mempunyai 6 input analog, diberi label A0 sampai A5,
setiapnya memberikan 10 bit resolusi (contohnya 1024 nilai yang
berbeda). Secara default, 6 input analog tersebut mengukur dari
ground sampai tegangan 5 Volt, dengan itu mungkin untuk mengganti
batas atas dari rangenya dengan menggunakan pin AREF dan fungsi
analogReference(). Di sisi lain, beberapa pin mempunyai fungsi
spesial:
Ada sepasang pin lainnya pada board:
AREF. Referensi tegangan untuk input analog. Digunakan dengan
analogReference().
Reset. Membawa saluran ini LOW untuk mereset mikrokontroler. Secara
khusus, digunakan untuk menambahkan sebuah tombol reset untuk
melindungi yang memblock sesuatu pada board.
6. Komunikasi
Arduino UNO mempunyai sejumlah fasilitas untuk komunikasi dengan
sebuah komputer, Arduino lainnya atau mikrokontroler lainnya. Atmega
328 menyediakan serial komunikasi UART TTL (5V), yang tersedia pada
pin digital 0 (RX) dan 1 (TX). Sebuah Atmega 16U2 pada channel board
serial komunikasinya melalui USB dan muncul sebagai sebuah port
virtual ke software pada komputer. Firmware 16U2 menggunakan driver
USB COM standar, dan tidak ada driver eksternal yang dibutuhkan.
Bagaimanapun, pada Windows, sebuah file inf pasti dibutuhkan.
Software Arduino mencakup sebuah serial monitor yang memungkinkan
data tekstual terkirim ke dan dari board Arduino. LED RX dan TX pada
board akan menyala ketika data sedang ditransmit melalui chip
USB-to-serial dan koneksi USB pada komputer (tapi tidak untuk
komunikasi serial pada pin 0 dan 1).
Atmega328 juga mensupport komunikasi I2C (TWI) dan SPI. Software
Arduino mencakup sebuah Wire library untuk memudahkan menggunakan bus
I2C, lihat dokumentasi untuk lebih jelas. Untuk komunikasi SPI,
gunakanSPI library.
7. Programming
Arduino UNO dapat diprogram dengan software Arduino (download).
Pilih “Arduino Uno dari menu Tools > Board(termasuk
mikrokontroler pada board). Untuk lebih jelas, lihat referensi dan
tutorial.
ATmega328 pada Arduino Uno hadir dengan sebuah bootloader yang
memungkinkan kita untuk mengupload kode baru ke ATmega328 tanpa
menggunakan pemrogram hardware eksternal. ATmega328 berkomunikasi
menggunakan protokol STK500 asli (referensi, file C header)
Kita juga dapat membypass bootloader dan program mikrokontroler
melalui kepala/header ICSP (In-Circuit Serial Programming); lihat
instruksi untuk lebih jelas
Sumber kode firmware ATmega16U2 (atau 8U2 pada board revisi 1 dan
revisi 2) tersedia. ATmega16U2/8U2 diload dengan sebuah bootloader
DFU, yang dapat diaktifkan dengan:
Pada board Revisi 1: Dengan menghubungkan jumper solder pada
belakang board (dekat peta Italy) dan kemudian mereset 8U2
Pada board Revisi 2 atau setelahnya: Ada sebuah resistor yang
menarik garis HWB 8U2/16U2 ke ground, dengan itu dapat lebih mudah
untuk meletakkan ke dalam mode DFU. Kita dapat menggunakan software
Atmel’s FLIP (Windows) atau pemrogram DFU (Mac OS X dan Linux)
untuk meload sebuah firmware baru. Atau kita dapat menggunakan
header ISP dengan sebuah pemrogram eksternal (mengoverwrite
bootloader DFU). Lihat tutorial user-contributed ini untuk informasi
selengkapnya.
8. Reset Otomatis (Software)
Dari pada mengharuskan sebuah penekanan fisik dari tombol reset
sebelum sebuah penguploadan, Arduino Uno didesain pada sebuah cara
yang memungkinkannya untuk direset dengan software yang sedang
berjalan pada pada komputer yang sedang terhubung. Salah satu garis
kontrol aliran hardware (DTR) dari ATmega8U2/16U2 sihubungkan ke
garis reset dari ATmega328 melalui sebuah kapasitor 100 nanofarad.
Ketika saluran ini dipaksakan (diambil rendah), garis reset jatuh
cukup panjang untuk mereset chip. Software Arduino menggunakan
kemampuan ini untuk memungkinkan kita untuk mengupload kode dengan
mudah menekan tombol upload di software Arduino. Ini berarti bahwa
bootloader dapat mempunyai sebuah batas waktu yang lebih singkat,
sebagai penurunan dari DTR yang dapat menjadi koordinasi yang baik
dengan memulai penguploadan.
Pengaturan ini mempunyai implikasi. Ketika Arduino Uno dihubungkan
ke sebuah komputer lain yang sedang running menggunakan OS Mac X atau
Linux, Arduino Uno mereset setiap kali sebuah koneksi dibuat dari
software (melalui USB). Untuk berikutnya, setengah-detik atau lebih,
bootloader sedang berjalan pada Arduino UNO. Ketika Arduino UNO
diprogram untuk mengabaikan data yang cacat/salah (contohnya apa saja
selain sebuah penguploadan kode baru) untuk menahan beberapa bit
pertama dari data yang dikirim ke board setelah sebuah koneksi
dibuka. Jika sebuah sketch sedang berjalan pada board menerima satu
kali konfigurasi atau data lain ketika sketch pertama mulai,
memastikan bahwa software yang berkomunikasi menunggu satu detik
setelah membuka koneksi dan sebelum mengirim data ini.
Arduino Uno berisikan sebuah jejak yang dapat dihapus untuk mencegah
reset otomatis. Pad pada salah satu sisi dari jejak dapat disolder
bersama untuk mengaktifkan kembali. Pad itu diberi label “RESET-RN”
Kita juga dapat menonaktifkan reset otomatis dengan menghubungkan
sebuah resistor 110 ohm dari tegangan 5V ke garis reset; lihat thread
forum ini untuk lebih jelasnya.
9. Proteksi Arus lebih USB
Arduino UNO mempunyai sebuah sebuah sekring reset yang memproteksi
port USB komputer dari hubungan pendek dan arus lebih. Walaupun
sebagian besar komputer menyediakan proteksi internal sendiri,
sekring menyediakan sebuah proteksi tambahan. Jika lebih dari 500 mA
diterima port USB, sekring secara otomatis akan memutuskan koneksi
sampai hubungan pendek atau kelebihan beban hilang.
10. Karakteristik Fisik
Panjang dan lebar
maksimum dari PCB Arduino UNO masing-masingnya adalah 2.7 dan 2.1
inci, dengan konektor USB dan power jack yang memperluas dimensinya.
Empat lubang sekrup memungkinkan board untuk dipasangkan ke sebuah
permukaan atau kotak. Sebagai catatan, bahwa jarak antara pin digital
7 dan 8 adalah 160 mil. (0.16"), bukan sebuah kelipatan genap
dari jarak 100 mil dari pin lainnya.
3.2
Implementasi
Pada pembuatan buku
kali ini yang bertemakan game menggunakan arduino, kelompok kami
membuat game dengan menggunakan arduino sebagai media dalam
memainkannya. Dimana arduino bertindak sebagai sensor dalam permainan
ini. Berikut adalah tahapan dalam pembuatan game ini:
1. Pertama siapkan
dahulu alat alat yang digunakan, diantaranya adalah
Arduino UNO
Genuino UNO
Touch screen
display TFT Display
Potongan puzzle
berbahan kayu
Pita temabaga
Dan Arduino IDE
sebagai program
2. kami membuat
Jigsaw Puzzle Timer menggunakan layar sentuh panel TFT. Ini mengukur
waktu sampai teka-teki selesai. Dimana timer dibuat dengan
menggunakan layar LCD tadi. Layar Sentuh untuk Arduino UNO digunakan
untuk menampilkan waktu, dan pewaktu berhenti saat teka-teki selesai.
3. Tempelkan pita
foil tembaga ke bagian belakang teka-teki kayu, benda itu akan
menjadi konduktif saat teka-teki selesai.
4. Bor dua lubang di
bingkai dan biarkan melewati konduktor dan solder ke elektroda dari
pita foil tembaga.
5. kemudian
sambungkan pita tembaga kabel agar terjadi aliran arus listrik,
sehingga sebuah bagian dari puzzle terhubung.
6. Tutup bagian
samping dan belakang teka-teki dengan foil tembaga sehingga dua titik
akan dilakukan saat selesai.
7. lakukan sampai
semua potongan puzzle seperti gambar di bawah ini
8. Kami menggunakan
driver ILI9325. 320 x 240 piksel. kami menggunakannya sebagai
stopwatch untuk mengukur waktu untuk menyelesaikan teka-teki ini.
9. Kami menggunakan
perpustakaan Arduino berikut. Kami membuat sebuah program berdasarkan
contoh program tftpaint.ino
10. Masukkan display
di UNO dan hubungkan dua kabel dari teka-teki ke pin A5 dan yang
lainnya ke GND. Saat "START" pada panel sentuh ditekan,
timer dimulai, teka-teki selesai dan stopwatch berhenti saat A5
melakukan GND.
11. dan berikut ini
adalah kode program yang digunakan
#
include
<Adafruit_GFX.h> // Core graphics library
#
include
<Adafruit_TFTLCD.h> // Hardware-specific library
#
include
<TouchScreen.h>
#
if
defined(__SAM3X8E__)
#
undef
__FlashStringHelper::F(string_literal)
#
define
F(string_literal) string_literal
#
endif
#
define
YP A1 // must be an analog pin, use "An" notation!
#
define
XM A2 // must be an analog pin, use "An" notation!
#
define
YM 7 // can be a digital pin
#
define
XP 6 // can be a digital pin
#
define
TS_MINX 150
#
define
TS_MINY 120
#
define
TS_MAXX 920
#
define
TS_MAXY 940
// For better pressure precision, we need to know the resistance
// between X+ and X- Use any multimeter to read it
// For the one we're using, its 300 ohms across the X plate
TouchScreen ts = TouchScreen(XP, YP, XM, YM,
300
);
#
define
LCD_CS A3
#
define
LCD_CD A2
#
define
LCD_WR A1
#
define
LCD_RD A0
// optional
#
define
LCD_RESET A4
// Assign human-readable names to some common 16-bit color values:
#
define
BLACK 0x0000
#
define
BLUE 0x001F
#
define
RED 0xF800
#
define
GREEN 0x07E0
#
define
CYAN 0x07FF
#
define
MAGENTA 0xF81F
#
define
YELLOW 0xFFE0
#
define
WHITE 0xFFFF
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
long
startTime;
long
elapsedTime;
int
fractional =
0
;
int
Min =
0
;
int
sec =
0
;
int
state =
3
;
void
setup
(
void
) {
Serial
.
begin
(
9600
);
Serial
.
println
(F(
"Paint!"
));
pinMode
(A5,
INPUT_PULLUP
);
tft.reset();
uint16_t identifier = tft.readID();
if
(identifier ==
0x9325
) {
Serial
.
println
(F(
"Found ILI9325 LCD driver"
));
}
else
if
(identifier ==
0x9328
) {
Serial
.
println
(F(
"Found ILI9328 LCD driver"
));
}
else
if
(identifier ==
0x7575
) {
Serial
.
println
(F(
"Found HX8347G LCD driver"
));
}
else
if
(identifier ==
0x9341
) {
Serial
.
println
(F(
"Found ILI9341 LCD driver"
));
}
else
if
(identifier ==
0x8357
) {
Serial
.
println
(F(
"Found HX8357D LCD driver"
));
}
else
{
Serial
.
print
(F(
"Unknown LCD driver chip: "
));
Serial
.
println
(identifier, HEX);
Serial
.
println
(F(
"If using the Adafruit 2.8\" TFT Arduino shield, the line:"
));
Serial
.
println
(F(
" #define USE_ADAFRUIT_SHIELD_PINOUT"
));
Serial
.
println
(F(
"should appear in the library header (Adafruit_TFT.h)."
));
Serial
.
println
(F(
"If using the breakout board, it should NOT be #defined!"
));
Serial
.
println
(F(
"Also if using the breakout, double-check that all wiring"
));
Serial
.
println
(F(
"matches the tutorial."
));
return
;
}
tft.
begin
(identifier);
tft.fillScreen(BLACK);
tft.setRotation(
1
);
tft.fillRect(
0
,
160
, tft.
width
(),
80
, CYAN);
tft.
setCursor
(
15
,
165
);
tft.setTextColor(RED); tft.
setTextSize
(
10
);
tft.
println
(
"START"
);
}
#
define
MINPRESSURE 10
#
define
MAXPRESSURE 1000
void
loop
()
{
TSPoint p = ts.getPoint();
// if sharing pins, you'll need to fix the directions of the touchscreen pins
//pinMode(XP, OUTPUT);
pinMode
(XM,
OUTPUT
);
pinMode
(YP,
OUTPUT
);
//pinMode(YM, OUTPUT);
// we have some minimum pressure we consider 'valid'
// pressure of 0 means no pressing!
if
(p.z > MINPRESSURE && p.z < MAXPRESSURE) {
/*
Serial.print("X = "); Serial.print(p.x);
Serial.print("\tY = "); Serial.print(p.y);
Serial.print("\tPressure = "); Serial.println(p.z);
*/
// scale from 0->1023 to tft.width
p.x =
map
(p.x, TS_MINX, TS_MAXX, tft.
width
(),
0
);
p.y =
map
(p.y, TS_MINY, TS_MAXY, tft.
height
(),
0
);
Serial
.
print
(
"("
);
Serial
.
print
(p.x);
Serial
.
print
(
", "
);
Serial
.
print
(p.y);
Serial
.
println
(
")"
);
if
(p.x >
160
&&
digitalRead
(A5) ==
1
) {
Serial
.
println
(
"Reset"
);
if
(state ==
1
){
state =
2
;
tft.fillRect(
0
,
160
, tft.
width
(),
80
, CYAN);
tft.
setCursor
(
15
,
165
);
tft.setTextColor(RED); tft.
setTextSize
(
10
);
tft.
println
(
"RESET"
);
}
else
if
(state ==
2
) {
elapsedTime =
0
;
state =
3
;
tft.fillRect(
0
,
160
, tft.
width
(),
80
, CYAN);
tft.
setCursor
(
15
,
165
);
tft.setTextColor(RED); tft.
setTextSize
(
10
);
tft.
println
(
"START"
);
}
else
{
state =
0
;
}
delay
(
100
);
}
}
if
(state ==
0
){
startTime =
millis
();
state =
1
;
tft.fillRect(
0
,
160
, tft.
width
(),
80
, CYAN);
tft.
setCursor
(
45
,
165
);
tft.setTextColor(RED); tft.
setTextSize
(
10
);
tft.
println
(
"STOP"
);
}
else
if
(state ==
1
){
elapsedTime =
millis
() - startTime;
}
if
(
digitalRead
(A5) ==
0
&& state !=
3
&& state !=
2
){
state =
2
;
tft.fillRect(
0
,
160
, tft.
width
(),
80
, CYAN);
tft.
setCursor
(
15
,
165
);
tft.setTextColor(RED); tft.
setTextSize
(
10
);
tft.
println
(
"RESET"
);
}
tft.
setCursor
(
5
,
15
);
tft.setTextColor(WHITE, BLACK);
tft.
setTextSize
(
7
);
Min = (
int
)((elapsedTime /
1000
L)/
60
);
if
(Min <
10
)
tft.
print
(
"0"
);
tft.
print
(Min);
tft.
print
(
":"
);
sec = (
int
)((elapsedTime /
1000
L) %
60
);
if
(sec <
10
)
tft.
print
(
"0"
);
tft.
print
(sec);
tft.
print
(
"."
);
tft.
setTextSize
(
5
);
fractional = (
int
)((elapsedTime %
1000
L)/
10
);
if
(fractional <
10
)
tft.
print
(
"0"
);
tft.
println
(fractional);
}
penjelasan:
#
include
<Adafruit_GFX.h> // Core graphics library
#
include
<Adafruit_TFTLCD.h> // Hardware-specific library
#
include
<TouchScreen.h>
Kode di atas digunakan untuk memasukan library graphic, hardware, dan touchacreen.
#
if
defined(__SAM3X8E__)
#
undef
__FlashStringHelper::F(string_literal)
#
define
F(string_literal) string_literal
#
endif
Mendefinisikan arduino, atau melakukan kalibrasi layar yang digunakan.
#
define
YP A1 // must be an analog pin, use "An" notation!
#
define
XM A2 // must be an analog pin, use "An" notation!
#
define
YM 7 // can be a digital pin
#
define
XP 6 // can be a digital pin
#
define
TS_MINX 150
#
define
TS_MINY 120
#
define
TS_MAXX 920
#
define
TS_MAXY 940
Mendefinisikan alur yang digunakan untuk menghubungkan software arduino dengan perangkat.
Untuk ketepatan tekanan yang lebih baik, kita perlu mengetahui resistansi, Antara X + dan X- Gunakan multimeter untuk membacanya, Untuk yang kita gunakan, 300 ohmnya melintang di piring X
TouchScreen ts = TouchScreen(XP, YP, XM, YM,
300
);
Kode di atas digunakan untuk pembuatan variabel untuk mendefinisikan keliling dari layar.
#
define
LCD_CS A3
#
define
LCD_CD A2
#
define
LCD_WR A1
#
define
LCD_RD A0
Mendefinisikan titik hubungan dari LCD ke arduino.
#
define
BLACK 0x0000
#
define
BLUE 0x001F
#
define
RED 0xF800
#
define
GREEN 0x07E0
#
define
CYAN 0x07FF
#
define
MAGENTA 0xF81F
#
define
YELLOW 0xFFE0
#
define
WHITE 0xFFFF
Tetapkan nama yang dapat dibaca manusia ke beberapa nilai warna 16-bit yang umum. Atau mendefinisikan warna yang di tampilkan pada layar nanti.
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Mendefinisikan variabel yang menghubungkan arduino dengan layar tadi.
long
startTime;
long
elapsedTime;
int
fractional =
0
;
int
Min =
0
;
int
sec =
0
;
int
state =
3
;
Mendefinisikan variabel dengan tipe data masing-masing
void
setup
(
void
) {
Serial
.
begin
(
9600
);
Serial
.
println
(F(
"Paint!"
));
pinMode
(A5,
INPUT_PULLUP
);
tft.reset();
uint16_t identifier = tft.readID();
Pembuatan method yang digunakan untuk melakukan setup pada layar LCD, dan digunakan untuk identifikasi Layar. Dan juga terdapat fungsi yang membuat agar layar clear atau bersih dari tulisan. Atau di reset.
if
(identifier
==
0x9325
)
{
Serial
.
println
(F(
"Found ILI9325 LCD driver"
));
}
else
if
(identifier ==
0x9328
) {
Serial
.
println
(F(
"Found ILI9328 LCD driver"
));
}
else
if
(identifier ==
0x7575
) {
Serial
.
println
(F(
"Found HX8347G LCD driver"
));
}
else
if
(identifier ==
0x9341
) {
Serial
.
println
(F(
"Found ILI9341 LCD driver"
));
}
else
if
(identifier ==
0x8357
) {
Serial
.
println
(F(
"Found HX8357D LCD driver"
));
}
else
{
Serial
.
print
(F(
"Unknown LCD driver chip: "
));
Serial
.
println
(identifier, HEX);
Serial
.
println
(F(
"If using the Adafruit 2.8\" TFT Arduino shield, the line:"
));
Serial
.
println
(F(
" #define USE_ADAFRUIT_SHIELD_PINOUT"
));
Serial
.
println
(F(
"should appear in the library header (Adafruit_TFT.h)."
));
Serial
.
println
(F(
"If using the breakout board, it should NOT be #defined!"
));
Serial
.
println
(F(
"Also if using the breakout, double-check that all wiring"
));
Serial
.
println
(F(
"matches the tutorial."
));
return
;
}
Kode di atas digunakan untuk melakukan identifikasi terhadap warna yang muncul pada driver. Warna yang dikeluarkan adalah warna yang telah di definisikan sebelumnya. Tetapi jika warna tidak ditemukan dalam layar, maka akan muncul tulisan “unknown LCD driver chip”, kemudian meidentifikasikan nilai dari warna dalam heximal. Tetapi jika tidak keluar, maka akan muncul “If using the Adafruit 2.8\" TFT Arduino shield, the line:”, “#define USE_ADAFRUIT_SHIELD_PINOUT”, “If using the breakout board, it should NOT be #defined!”, “Also if using the breakout, double-check that all wiring”, “matches the tutorial.”.
tft.
begin
(identifier);
tft.fillScreen(BLACK);
tft.setRotation(
1
);
tft.fillRect(
0
,
160
, tft.
width
(),
80
, CYAN);
tft.
setCursor
(
15
,
165
);
tft.setTextColor(RED); tft.
setTextSize
(
10
);
tft.
println
(
"START"
);
Kode program di atas masih di dalam method setup, yaitu digunakan untuk mengisi layar LCD, dan menampilkan text dengan tulisan “START”.
#
define
MINPRESSURE 10
#
define
MAXPRESSURE 1000
void
loop
()
{
TSPoint p = ts.getPoint();
// if sharing pins, you'll need to fix the directions of the touchscreen pins
//pinMode(XP, OUTPUT);
pinMode
(XM,
OUTPUT
);
pinMode
(YP,
OUTPUT
);
//pinMode(YM, OUTPUT);
// we have some minimum pressure we consider 'valid'
// pressure of 0 means no pressing!
if
(p.z > MINPRESSURE && p.z < MAXPRESSURE) {
/*
Serial.print("X = "); Serial.print(p.x);
Serial.print("\tY = "); Serial.print(p.y);
Serial.print("\tPressure = "); Serial.println(p.z);
*/
// scale from 0->1023 to tft.width
p.x =
map
(p.x, TS_MINX, TS_MAXX, tft.
width
(),
0
);
p.y =
map
(p.y, TS_MINY, TS_MAXY, tft.
height
(),
0
);
Serial
.
print
(
"("
);
Serial
.
print
(p.x);
Serial
.
print
(
", "
);
Serial
.
print
(p.y);
Serial
.
println
(
")"
);
Selanjutnya mendefinisikan kembali press atau action terhadap layar jika tersentuh. Dan buat kembali method dengan nama loop, dimana mathod ini digunakan untuk mengidentifikasi sentuhan pada layar, dan mengakibatkan terbentuknya kordinat X dan Y.
if
(p.x >
160
&&
digitalRead
(A5)
==
1
)
{
Serial
.
println
(
"Reset"
);
if
(state ==
1
){
state =
2
;
tft.fillRect(
0
,
160
, tft.
width
(),
80
, CYAN);
tft.
setCursor
(
15
,
165
);
tft.setTextColor(RED); tft.
setTextSize
(
10
);
tft.
println
(
"RESET"
);
Jika kordinat x tersentuh dengan tertentu, maka layar akan mngeluarkan text “RESET” pada layar. Dimana ukuran yang terbentuk adalah 160x80 dan text yang muncul sebesar 10dp.
if
(state ==
0
){
startTime =
millis
();
state =
1
;
tft.fillRect(
0
,
160
, tft.
width
(),
80
, CYAN);
tft.
setCursor
(
45
,
165
);
tft.setTextColor(RED); tft.
setTextSize
(
10
);
tft.
println
(
"STOP"
);
Setelah tombol reset tersentuh maka akan berjalan waktu timer, dan terdapat tombol dengan tulisan “STOP” berwarna merah. Jika tombol stop ini di tekan akan mengehentikan timer.
if
(Min <
10
)
tft.
print
(
"0"
);
tft.
print
(Min);
tft.
print
(
":"
);
sec = (
int
)((elapsedTime /
1000
L) %
60
);
if
(sec <
10
)
tft.
print
(
"0"
);
tft.
print
(sec);
tft.
print
(
"."
);
tft.
setTextSize
(
5
);
fractional = (
int
)((elapsedTime %
1000
L)/
10
);
if
(fractional <
10
)
tft.
print
(
"0"
);
tft.
println
(fractional);
}
Kode di atas digunakan untuk menampilkan waktu pada timer dimana jika menit kurang dari 10 maka akan ter cetak pada layar LCD Min : Sec. Dimana terdapat menit dan detik pada layar. Dengan text sebesar 5dp.