Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
ARDUINO UNO
Ferry Satria
SOFTWARE ARDUINO
Arduino Uno dapat diprogram dengan perangkat lunak Arduino. Pada ATMega328 di
Arduino terdapat bootloader yang memungkinkan Anda untuk meng-upload kode baru untuk
itu tanpa menggunakan programmer hardware eksternal.
IDE Arduino adalah software yang sangat canggih ditulis dengan menggunakan Java.
IDE Arduino terdiri dari:
1. Editor program, sebuah window yang memungkinkan pengguna menulis dan
mengeditprogram dalam bahasa Processing.
2. Compiler, sebuah modul yang mengubah kode program (bahasa Processing) menjadi
kode biner. Bagaimanapun sebuah mikrokontroler tidak akan bisa memahami bahasa
Processing. Yang bisa dipahami oleh mikrokontroler adalah kode biner. Itulah
sebabnya compiler diperlukan dalam hal ini.
3. Uploader, sebuah modul yang memuat kode biner dari komputer ke dalam memory
didalam papan Arduino.
Sebuah kode program Arduino umumnya disebut dengan istilah sketch. Kata“sketch”
digunakan secara bergantian dengan “kode program” dimana keduanya memiliki arti
yang sama. (http://www.arduino.cc)
(http://www.arduino.cc)
Gambar Tampilan IDE Arduino dengan sebuah sketch
B. TUJUAN
1. Mahasiswa dapat mengetahui dan memahami dasar-dasar pemrograman
menggunakan Arduino Uno.
C. LANGKAH KERJA
D. ANALISA
1. Buat program menampilkan counter modulo 124 dan memiliki mode up atau down
counter.
Program :
void setup() {
pinMode (3,INPUT);
pinMode (4,OUTPUT);
pinMode (5,OUTPUT);
pinMode (6,OUTPUT);
pinMode (7,OUTPUT);
pinMode (8,OUTPUT);
pinMode (9,OUTPUT);
pinMode (10,OUTPUT);
pinMode (11,OUTPUT);
pinMode (12,OUTPUT);
pinMode (13,OUTPUT);
}
void loop() {
int j,angka,interupt,data=0;
int tampil,tampil1;
while(1){
for(j=0;j<60;j++){
angka = 0;
pindahcommon(angka);
tampil = data/100;
pindahkarakter(tampil);
delay(5.55);
angka = 1;
pindahcommon(angka);
tampil1 = data/10;
tampil = tampil1%10;
pindahkarakter(tampil);
delay(5.55);
angka = 2;
pindahcommon(angka);
tampil = data%10;
pindahkarakter(tampil);
delay(5.55);
}
interupt = digitalRead(3);
if(interupt == 0){
data = data+1;
if(data==124)
data = 0;
}
else
data = data-1;
if(data==-1)
data = 123;
}
}
Rangkaian Schematic :
Analisa :
Board Arduino uno yang telah terhubung dengan 3 buah 7 segment yang
digunakan pada praktikum ini dapat digambarkan seperti rangkaian schematic nya
seperti pada bagian gambar rangkaian schematic diatas. Dari rangkaian tersebut
diketahui bahwa pada board ini digunakan 11 pin i/o yang terdiri dari 10 pin output
yang terbagi menjadi 2. Tujuh pin (pin 7-13) tersambung pararel ke ketujuh segmen
masing masing 7 segment dan 3 pin (pin 4-6) output lainnya terhubung ke masing
masing port common 7 segment. Satu buah pin lainnya digunakan sebagai pin input
untuk interrupt. Dari rangkaian diatas juga terlihat bahwa 10 pin yang digunakan
terhubung ke kaki base sebuah transistor, hal ini menandakan bahwa setiap keluaran
yang dihasilkan pin i/o akan berfungsi mengatur forward atau tidaknya transistor yang
digunakan. Pada pin ouput yang terhubung ke segment digunakan transistor pnp
sehingga untuk mengaktifkan transistor nya diperlukan pemberian kondisi low (‘0’)
pada kaki base. Sebaliknya pada pin output yang terhubung ke common digunakan
transistor npn yang mengakibatkan pemberian kondisi high (‘1’) pada kaki base akan
mengaktifkan transistor. Dari pemahaman dasar terhadap board yang digunakan
selanjutnya dapat dirancang pemrograman yang berfungsi untuk menampilkan
keluaran yang diharapkan.
Pada awal program masing masing pin dideklarasi kan pada sebuah variable untuk
memudahkan saat mengakses setiap pin yang nantinya diperlukan.
int pin1[3] = {6,5,4}; //pin yang tersambung ke common
int pin2[7] = {7,8,9,10,11,12,13}; //pin yang tersambung ke segmen
Kode yang berfungsi untuk mengaktifkan 7 segment seperti karakter yang diinginkan
juga dideklarasikan pada awal program. Karakter yang mungkin muncul pada counter
modulo 124 yaitu angka 0 sampai dengan angka 9.
int karakter[10][7] = {
{1,0,0,0,0,0,0},{1,1,1,1,0,0,1},{0,1,0,0,1,0,0},{0,1,1,0,0,0,0},
{0,0,1,1,0,0,1},{0,0,1,0,0,1,0},{0,0,0,0,0,1,1},{1,1,1,1,0,0,0},
{0,0,0,0,0,0,0},{0,0,1,1,0,0,0}};
Setiap 7 bit merupakan data yang digunakan untuk menghasilkan keluaran suatu
angka pada 7 segment. Bit paling kiri akan mengatur segment g dan bit paling kanan
akan mengatur segment a. Seperti yang telah dijelaskan pada paragraph sebelumnya
bahwa transistor yang terhubung ke 7 segment akan aktif ketika diberi kondisi low.
Selanjutnya deklarasi juga dilakukan terhadap kode yang diperlukan untuk
mengaktifkan common 7 segment.
int common[3][3] = {{1,0,0},{0,1,0},{0,0,1}};
Pada common transistor yang digunakan aktif high sehingga dengan kode diatas maka
setiap saat hanya akan ada satu 7 segment yang aktif. Selanjutnya dilakukan
inisialisasi pada void setup, masing-masing pin Arduino yang digunakan diinisialisasi
menjadi input atau output.
Pemrograman utama dilakukan pada main program atau void loop, seperti
yang diminta pada soal bahwa counter akan selalu ditampilkan selama board menyala
sehingga pada bagian program akan menggunakan perintah while. Selanjutnya
terdapat perulangan for dengan batas 60. Ini digunakan untuk menampilkan keluaran
dengan kualitas 60 frame/s (60 fps). Hal yang pertama dilakukan adalah
memindahkan kode 100 dari variable common ke pin 6,5, dan 4 untuk mengaktifkan 7
segment pada pin 6 dimana 7 segment tersebut akan berfungsi untuk menampilkan
angka ratuasan dari counter yang dirancang. Selanjutnya dilakukan penentuan angka
ratusan yang hendak ditampilkan dengan menggunakan perintah tampil =
data/100; angka ratusan tersebut digunakan pada fungsi pindahkarakter . Dengan
adanya angka ratusan tersebut maka kode dari variable karakter dapat dirujuk yang
kemudian akan dikirim ke pin 7-13. Maka keluaran pada 7 segment sesuai dengan
angka ratusan yang diminta.
Hal ini juga dilakukan saat hendak menampilkan angka puluhan, kode
mengaktifkan 7 segment juga dipindahkan dari variable common, selanjutnya
melakukan pengambilan data puluhan dari ‘data’. Angka puluhan akan digunakan
kembali untuk merujuk array yang ada pada variable karakter. Hal yang sama juga
terjadi saat hendak menampilkan satuan. Masing-masing karakter di delay selama
5.55 ms untuk menghasilkan keluaran 60 fps.
60 frame/s
3 karakter/frame
180 karakter/s
180 karakter/1000ms
1 karakter/5.55ms
Delay dilakukan setiap kali selesai menampilkan satu karakter, delay yang sangat
singkat tidak dapat terdeteksi oleh mata sehingga seakan akan mata melihat counter
yang dihasilkan ditampilkan secara bersamaan.
Counter pada soal ini dirancang dapat diubah mode nya menjadi up counter
atau down counter. Oleh karena itu setiap selesai menampilkan 1 data, dilakukan
pengambilan data pada pin input yaitu pin 3 dengan perintah dibawah ini.
interupt = digitalRead(3);
Dengan demikian pada variable interrupt akan terdeteksi kondisi yang diberikan pada
pin 3 baik low ataupun high. Apabila berada pada kondisi low maka ‘data’ akan terus
bertambah 1 setiap saat dan ketika sudah mencapai 124 maka ‘data’ dikembalikan lagi
menjadi 0. Sebaliknya ketika variable interrupt berada pada kondisi high maka ‘data’
selalu berkurang 1 setiap saat dan akan diatur kembali menjadi 123 ketika ‘data’
sudah lebih kecil dari 0.
E. KESIMPULAN
Dari praktikum yang telah dilakukan dapat disimpulkan bahwa pemrograman dengan
menggunakan Arduino uno tidak jauh berbeda dengan yang dilakukan dengan
ATmega 8535. Keduanya menggunakan bahasa C sebagai bahasa pemrograman nya,
perbedaannya pada ATmega 8535 inisialisasi dilakukan langsung ke register yang
digunakan. Sedangkan pada Arduino uno inisialiasi atau deklarasi dilakukan terhadap
pin atau variable yang digunakan.