phone: +62852 5254 2414
e-mail: simonmurdani@gmail.com

Sistem Komputer - Dasar-dasar Mikrokontroler (Bab 6)(kelas X)


Bab VI
Dasar-dasar Mikrokontroler

Kompetensi Dasar
3.6 Menerapkan dasar-dasar mikrokontroler.
4.6 Manipulasi dasar-dasar mikrokontroler (port 10, clock, arsitektur RISK, general purpose RISK, stack pointer, SRAM, EEPROM, dan SREG).

Pendahuluan

Pada saat mendengar istilah mikrokontroler pasti di benak Anda terbayang sebuah peranti berukuran mini tetapi memiliki kemampuan setara komputer. Pada dasarnya, mikrokontroler merupakan miniatur sistem komputer yang memiliki memori, alat pemroses dan disk penyimpan data. Selain itu, mikrokontroler memiliki kelebihan dalam pengeksekusian instruksi yang lebih cepat. Bagaimana proses kerja dan bentuk mikrokontroler? Perhatikan dengan saksama materi pada Bab 6 berikut ini.

(A) Fungsi Mikrokontroler

Mikrokontroler merupakan perpaduan dua kata, yaitu micro dan controller. Micro berarti ukuran kecil sedangkan controller merupakan alat yang befungsi sebagai pengontrol sebuah sistem. Jadi, mikrokontroler merupakan alat pengontrol dengan ukuran kecil dan terintegrasi layaknya sebuah sistem komputer dalam sebuah chip.
Mikrokontroler 4 bit merupakan generasi pertama yang lahir pada tahun 1974 yang di-release oleh Texas Instruments dengan seri TMS 1000 dilengkapi dengan RAM dan ROM yang dikemas dalam sebuah chip. Dua tahun berikutnya, berkembang mikrokontroler 8 bit seri Intel 8748 yang diproduksi oleh vendor Intel. Pertama kali diperkenalkan oleh vendor Intel sekitar tahun 1976. Penggunaan teknologi chip (integrated circuit) pada mikrokontroler membuat alat ini dikategorikan sebagai single chip microcomputer tipe embedded computer.
Mikrokontroler dikatakan sebagai bentuk mini komputer karena dalam mikrokontroler memiliki bagian-bagian penting dalam komputer seperti berikut.
1. Processor atau yang dikenal sebagai CPU (central processing unit) bertugas untuk mengerjakan setiap instruksi yang diberikan.
2. RAM atau (Random Access Memory) yang dapat menyimpan memori selama dialiri arus listrik. Anda dapat mengubah isi memori secara berulang-ulang.
3. ROM (Read Only Memory) yang berfungsi membaca nilai memori yang tersimpan.
4. Port V/O (input output). Port ini merupakan terminal yang dapat digunakan sebagai jalur nilai yang di-input-kan pada mikrokontroler dan menghasilkan keluaran dalam bentuk sinyal.
Gambar 6.2 Mikrokontroler keluaran ATMEL.
Dengan bentuknya yang kecil, mikrokontroler mempunyai kelebihan dalam hal pemrosesan data layaknya sebuah komputer. Penggunaan mikrokontroler dalam rangkaian elektronika memiliki lima kelebihan, di antaranya sebagai berikut.
1. Bentuknya yang kecil dan praktis memudahkan dalam perancangan dan pemasangan pada rangkaian elektronika.
2. Kemudahan dalam mengubah fungsi dan alur logika program mikrokontroler.
3. Sistem rangkaian elektronika yang dibangun menjadi lebih efisien.
4. Tidak membutuhkan daya listrik yang besar.
5. Proses pencarian kerusakan atau gangguan fungsi rangkaian menjadi lebih mudah.
Oleh karena itu, mikrokontroler sering diimplementasikan dalam rangkaian elektronika yang dikendalikan secara otomatis seperti mesin cuci, remote control, pendeteksi kebakaran, pengatur lampu lalu lintas, dan rangkaian lampu kelap-kelip.
Tabel 6.1 Jenis mikrokontroler berdasarkan vendor.

(B) Arsitektur ATMega328P

Dipasaran saat ini terdapat dua jenis arsitektur mikrokontroler,

1. CISC (Complex Instruction Set Computer)
Ciri khas tipe CISC adalah kompleksitas dan fitur yang lengkap dalam memberikan set instruksi pada processor. Bahasa yang digunakan adalah tingkat rendah seperti assembler. Kekurangan dari CISC adalah performa yang kurang cepat karena penggunaan tingkat set instruksi yang lebih kompleks, tetapi lebih powerfull. Tipe CISC merupakan tipe multiclock yang menekankan penggunaan dan pemberian set instruksi pada perangkat keras. Meskipun ukuran kapasitas program yang digunakan kecil, CISC hanya bekerja pada kecepatan akses data yang rendah. Instruksi LOAD dan STORE merupakan dua set instruksi yang tidak terpisahkan.

2. RISC (Reduce Instruction Set Computer)
RISC merupakan jenis arsitektur processor yang mempunyai ragam set instruksi lebih sederhana dibandingkan dengan CISC. Tipe ini sudah mengadopsi dan mendukung penggunaan bahasa tingkat tinggi seperti bahasa pemrograman C. Dengan demikian, kompilasi program menghasilkan ukuran kapasitas file yang lebih besar dibandingkan tipe CISC, tetapi memiliki performa lebih baik. Di samping itu, RISC mengenal teknik pipeline dengan sebuah perintah tunggal yang dapat diberikan pada processor untuk mengerjakan beberapa proses sekaligus.
Mikrokontroler jenis Atmega328P merupakan salah satu varian produk keluaran ATMEL dengan karakteristik arsitektur RISC (Reduce Instruction Set Computer) dengan kelebihan eksekusi data lebih baik dibandingkan dengan arsitektur CISC.
Mikrokontroler ATMega328 mempunyai spesifikasi sebagai berikut.
1. Berkinerja tinggi dengan kebutuhan tegangan yang kecil.
2. Mendukung 131 set instruksi dalam sebuah siklus clock ketika dieksekusi.
3. Memiliki 32 x 8 general purpose working registers.
4. Mampu bekerja dengan speed 20 MIPS pada detak clock 20 MHz.
5. Menggunakan jenis EEPROM (Electrically Erasable Programmable Read Only Memory) berkapasitas 1 KB dengan kelebihan masih dapat menyimpan data meskipun tidak tersuplai arus listrik.
6. Tipe ATMega328P sering dipergunakan pada rangkaian Arduino Uno karena dilengkapi flash memory sebesar 32 KB dengan catatan 2 KB dari besar memori tersebut digunakan sebagai area penyimpanan boot loader Arduino.
7. Mempunyai 28 pin input-output yang enam di antaranya merupakan jenis pin bertipe pulse width modulation output.
8. Dilengkapi memori bertipe SRAM dengan kapasitas 2 KB.
9. Memiliki interface master/slave SPI Serial.
10. 8 kanal berukuran 10 bit ADC dalam paket TQFP dan QFN/MLF.
11. 6 kanal berukuran 10 bit ADC dalam paket PDIP.
12. Dilengkapi fitur Power-on serta Reset and Programmable Brown-out Detection.
13. Bekerja pada tegangan 1,8-5,5 V.
14. Mampu bertahan pada suhu antara -40°C sampai 85°C.
Gambar 6.3 Blok diagram AVR mikrokontroler ATMega328P.
Tugas utama AVR Core CPU dalam mikrokontroler adalah memastikan bahwa set instruksi yang diberikan padanya telah dieksekusi dengan benar. Oleh karena itu, CPU harus dapat mengakses memori dengan cepat, melakukan proses aritmetika, mengontrol peripheral, dan meng-handle setiap instruksi yang diberikan. Untuk meningkatkan kinerja dan eksekusi proses yang dilakukan secara paralel, AVR menggunakan konsep arsitektur Harvard yang memisahkan penggunaan alokasi memori dan bus untuk program dan data. Deretan set instruksi yang tersimpan dalam program memori akan dieksekusi dalam sebuah perintah tunggal dengan metode pipeline. Sistem paralel dalam CPU dapat dilihat ketika sebuah instruksi sedang dikerjakan, instruksi berikutnya sudah di-load dari alokasi program memori, yang keseluruhan proses ini terjadi dalam setiap clock cycle.
ATMega328P memiliki 32 general purpose register berukuran 8 bit yang bekerja dalam sebuah single clock cycle untuk mengerjakan proses ALU (Arithmetic Logic Unit). Karakteristik operasi ALU ini adalah dua jenis operand akan dihasilkan dari register file setelah set instruksi tersebut berhasil dikerjakan. Keluaran dari proses tersebut akan disimpan kembali dalam register file. Sebanyak 6 dari 32 register tersebut dapat difungsikan sebagai 16 bit pengalamatan tak langsung register pointer sebagai alamat data space. Hal itu bertujuan untuk meningkatkan kinerja pengaksesan address calculations. Salah. satu alamat pointer dapat digunakan sebagai rujukan untuk mencari lokasi flash dalam program memori.
Komponen ALU dalam processor mendukung operasi aritmetika dan logika yang terjadi antar-register atau antara konstanta dan register, bahkan mengizinkan terjadinya proses aritmetika pada sebuah register. Output dari operasi aritmetika dapat dilihat pada status register yang memberikan informasi tentang keluaran dari operasi tersebut. Pada umumnya, set instruksi AVR memiliki format 16 bit yang setiap alamat program memori terdiri atas 16 bit sampai 32 bit set instruksi.
Pada bagian alokasi memori, program flash dibagi menjadi dua bagian, yaitu boot program section dan application program section. Kedua bagian tersebut memiliki fungsi untuk mengunci nilai bit sebagai proteksi data pada saat proses write atau write/ read data. Selama melakukan proses interupsi dan pemanggilan modul subroutine, alamat program counter yang mengandung nilai output proses akan disimpan dalam stack. Besar nilai stack akan dialokasikan dalam SRAM dan selalu dibatasi ukurannya berdasarkan kapasitas SRAM.
Gambar 6.4 Konfigurasi pin mikrokontroler ATMega328P.
Fungsi setiap kelompok pin dalam chip mikrokontroler
ATMega328P adalah sebagai berikut.
1. VCC; berfungsi sebagai pin masukan sumber tegangan.
2. GND; merupakan singkatan ground yang berfungsi sebagai pin grounding atau massa (negatif).
3. PORT B (PB7:0) merupakan port input-output tipe 8 bit yang bekerja dua arah. Fungsi port ini tergantung dari pilihan jenis clock, yang dapat digunakan sebagai inputan inverting oscillator amplifier dan inputan internal clock operating circuit pada port PB6. Di samping itu, pada port PB7 dapat difungsikan sebagai keluaran nilai balik oscillator.
Tabel 6.2 Fungsi port B.
4. PORT C (PC5:0) adalah port input-output berukutan 7 bit yang bekerja dua arah. Port ini dapat digunakan sebagai ADC Input Channel dan 2-wire Serial Bus Data Input/Output Line.
Tabel 6.3 Fungsi port C.
5. PORT C (PC6/RESET), pada saat RSTDISBL fuse telah di-setting dalam program, maka port PC6 digunakan sebagai pin I/O. Namun jika tidak, PC6 difungsikan sebagai port reset. PORT D (PD7:0), merupakan port input-output 8 bit dua arah yang sering digunakan untuk analog comparator, external interruption, dan USART communication.
Tabel 6.4 Fungsi port D.
7. AVCC, merupakan pin sambungan sumber tegangan menuju A/D converter, serta port PC3:0 dan ADC7:6.
8. AREF, merupakan pin masukan sumber tegangan referensi A/D Converter.
9. ADC7::6 (TQFP and QFN/MLF Package Only), pada sistem paket TQFP and QFN/MLF, port ini melayani input analog menuju A/D converter.

Zona Aktivitas

A. Uji Pengetahuan (Nilai Pengetahuan 1)
1. Jelaskan konsep kerja mikrokontroler menurut pemahaman Anda?
2. Mengapa sebuah mikrokontroler dapat disebut sebagai mini komputer?
3. Tuliskan beberapa jenis varian mikrokontroler yang beredar di pasaran beserta vendor pembuatnya.
4. Apa perbedaan arsitektur CISC dengan RISC?
B. Tugas Praktikum (Nilai Praktik 1)
Lakukan analisis pada chip mikrokontroler Atmega328P, pin berapa sajakah yang merupakan sambungan ground dan pin masukan sumber tegangan referensi A/D converter?
C. Tugas Eksperimen (Nilai Proyek 1)
Pada tugas eksperimen ini, guru harus menyediakan chip Atmega328P atau Arduino board. Setelah itu, siswa menganalisis, memotret, dan mempresentasikan fungsi dari setiap kaki pin dalam mikrokontroler.

(C) Arduino

Arduino merupakan rangkaian elektronika yang berbasis. berasal dari Italia. Jenis yang dipaparkan pada materi ini adalah Arduino. Uno R3 yang bersifat open source hardware, yang orang lain. dapat mengembangkan sesuai keperluan mereka. Nama lain. Arduino adalah development board atau papan pengembangan. mikrokontroler yang memudahkan pengguna dalam membangun. rangkaian elektronika berbasis mikrokontroler dibandingkan membangun rangkaian mulai dari awal. Spesifikasi hardware dari Arduino Uno R3 antara lain sebagai berikut.
1. Berbasis chip mikrokontroler Atmega328P.
2. Beroperasi pada tegangan DC 5 V.
3. Input tegangan DC adalah 7 V-12 V.
4. Terdiri atas 14 digital I/O pin, yang 6 pin di antaranya merupakan sambungan PWM.
5. Memiliki 6 buah analog input pin.
6. Besar arus setiap pin I/O adalah 20 mA.
7. Besar arus DC pin pada tegangan 3,3 V adalah 50 mA.
8. Kapasitas memori flash adalah 32 KB yang 0 KB digunakan untuk bootloader program.
9. Kapasitas SRAM adalah 2 KB,
10. Ukuran EEPROM adalah 1 KB.
11. Mampu bekerja pada clock speed 16 MHz.
12. Dijual di pasaran dengan dimensi 68,6 mm x 53,4 mm dengan berat 25 g.
Gambar 6.5 Arduino Uno R3.
Pada sistem power supply, Arduino mempunyai dua koneksi, yaitu melalui USB (komputer) dan power supply. Jika menggunakan power supply, tegangan yang digunakan, yaitu tegangan DC (searah) seperti penggunaan adaptor maupun baterai. Biasanya koneksi ini menggunakan jack adaptor yang dimasukkan pada port input supply. Besar input tegangan berkisar 7V sampai 12V. Apabila tegangan yang diberikan kurang dari 7 V, dapat membuat rangkaian dalam board Arduino menjadi kurang stabil. Begitu pula jika tegangan yang dimasukkan lebih besar dari 12V Arduino menjadi lebih cepat panas sehingga cepat rusak. Sumber tegangan DC menggunakan port adaptor, sering dipakai Arduino jika telah diprogram dan dipasang langsung pada peranti elektronika. Di samping itu, port USB biasanya dipakai untuk koneksi ke komputer pada saat melakukan pemrograman Arduino sebelum dirangkaikan ke dalam sistem peralatan. Bagian-bagian board Arduino dapat dilihat pada gambar berikut.

Gambar 6.6 Bagian board Arduino.
Keterangan:
1. Tombol reset berguna untuk me-reset board Arduino sehingga setiap data dan program yang pernah di-load ke dalam board dan mikrokontroler akan dihapus atau dikosongkan.
2. ICSP atau In-Circuit Serial Programming adalah deretan pin yang memberikan fasilitas bagi user untuk melakukan pemrograman secara langsung pada mikrokontroler tanpa melalui boot loader Arduino.
3. Aref digunakan sebagai pin referensi input tegangan analog yang dapat diatur melalui fungsi program analogReference().
4. Ground sebagai sambungan ke ground tegangan.
5. Pin digital merupakan pin sebagai port input atau output yang penggunaannya dapat dilakukan oleh program menggunakan fungsi digitalWrite(), digitalRead(), dan pinMode(). Arus yang mengalir pada setiap pin memiliki batas maksimal 40 mA dengan nilai hambatan resistor pull-up 20 ohm hingga 50 ohm.
a. Pin 0 (RX) dimanfaatkan untuk menerima serial data TTL atau Transisto-transistor logic, sedangkan pin 1 (TX) digunakan untuk mengirimkan data TTL.
b. Pin 2 dan 3 dapat digunakan melalui program menggunakan fungsi attachInterrupt().
c. Pin 3,5,6,9,10 dan 11 dapat digunakan sebagai output PWM 8 bit dan dikonfigurasi menggunakan fungsi analogWrite().
d. Pin 10 (SS), 11 (MOSI), 12 (MISO) dan 13 (SCK) digunakan untuk mendukung proses komunikasi berbasis SPI.
e. Di dekat pin 13 terdapat LED yang akan menyala, ketika pin bernilai High. Namun ketika bernilai Low, maka pin akan padam.
6. Port USB berguna untuk memberikan catu daya dari komputer ke Arduino ketika memasukkan program ke mikrokontroler, sebagai media komunikasi secara serial antara board Arduino dengan komputer.
7. Jack adaptor tegangan DC berfungsi sebagai sambungan input sumber tegangan DC berupa jack, biasanya dari adaptor maupun baterai.
8. Pin power
a. Pin VIN, pada saat Arduino menggunakan sumber tegangan
dari luar board, Anda dapat memanfaatkan pin ini sebagai sumber tegangan peralatan yang akan dikontrol.
b. Pin 5V, merupakan keluaran tegangan maksimal 5 V yang secara otomatis diatur oleh regulator board Arduino.
c. Ping 3V3 merupakan pin sumber tegangan sebesar 3,3 V yang dikeluarkan regulator board Arduino dengan nilai arus listrik maksimal 50 mA.
d. GND merupakan pin untuk jalur sambungan grounding Arduino.
9. Pin analog, terdiri atas enam buah pin dengan urutan A, sampai A, Deretan pin ini sering digunakan untuk mendeteksi dan mengubah setiap tegangan yang dihasilkan oleh sensor analog. Contohnya sensor suhu ruangan yang memiliki nilai input pin berkisar antara 0 hingga 1023 dan sebagai referensi perubahan tegangan antara 0 V hingga 5 V.

(D) Pemrograman Mikrokontroler pada Arduino

Untuk melakukan pemrograman mikrokontroler pada Arduino, Anda harus memahami tentang konsep dan cara kerja penyusunan dan penulisan kode program Arduino. Bahasa pemrograman yang digunakan pada Arduino menggunakan bahasa pemrograman C. Struktur penulisan bahasa pemrograman C mempunyai bagian-bagian sebagai berikut.
1. Header
Header merupakan definisi file header yang disertakan dalam program sebagai file library sebagai rujukan setiap fungsi dan syntax yang digunakan dalam badan kode program C. Contohnya sebagai berikut.
2. Deklarasi
Deklarasi berfungsi untuk menetapkan daftar variabel maupun konstanta yang akan digunakan dalam badan program. Variabel adalah nama yang digunakan untuk menyimpan sebuah nilai yang dapat diatur besarannya selama program dieksekusi. Sementara itu, konstanta memiliki nilai yang tetap (konstan). Contohnya sebagai berikut.
3. Komentar
Komentar merupakan tambahan baris penjelasan dalam kode bahasa pemrograman C. Tujuannya memberikan keterangan tentang penggunaan kode, tetapi tidak dieksekusi oleh program. Komentar single line menggunakan kode //, sedangkan komentar lebih dari satu baris menggunakan kode /*..*/.
Contoh kode bahasa pemrograman C adalah sebagai berikut.
Karena Arduino menggunakan bahasa pemrograman C, maka tata cara penggunaan kode, serta penyusunan dan penulisannya juga mengikuti prosedur standar penulisan syntax bahasa C sebagai berikut.

1. Struktur Penulisan
Setiap penulisan kode program Arduino atau yang lebih dikenal dengan nama skecth harus memiliki dua buah fungsi antara lain sebagai berikut.
a. void setup() {}
Pada bagian ini, kode penulisan program diletakkan di antara dua kurung kurawal. Baris kode dalam kurung kurawal hanya dieksekusi sekali pada saat Arduino start.
b. void loop() {}
Baris kode dalam bagian loop akan dieksekusi setelah program menjalankan void setup. Fungsi loop akan selalu dijalankan oleh Arduino selama sumber tegangan masih tersambung.

2. Aturan Penulisan
a. Komentar satu baris, menggunakan kode //.
b. Komentar lebih dari satu baris menggunakan kode /**......*/.
c. Badan program selalu diletakkan dalam kurung kurawal {....}.
d. Setiap akhir baris penulisan baris kode program selalu diakhiri dengan tanda titik koma ( ;).

3. Variabel
Variabel merupakan nama buatan yang diberikan untuk menyimpan nilai secara sementara yang pada nilai tersebut dapat berubah-ubah sesuai alur programnya.

4. Tipe Data
Tipe data merupakan satuan besaran data yang dapat dideklarasikan pada variabel. Contohnya sebagai berikut.
a. Byte, memerlukan memori penyimpanan sebesar 8 bit atau 1 byte dengan nilai 0-255.
b. Int (integer), memerlukan memori penyimpanan sebesar 2 byte dengan kisaran desimal antara -32.768 hingga 32.767
c. Long, memerlukan 4 byte memori dan mempunyai rentang nilai dari -2.147.483.648 hingga 2.147.483.647
d. Boolean, merupakan tipe data yang hanya memiliki dua kemungkinan, yaitu true dan false sehingga hanya memerlukan 1 bit memori RAM.
e. Float, digunakan untuk menampung data bertipe desimal (floating point) sebesar 4 byte dengan rentang nilai -3.4028235E+38 sampai 3.4028235E+38.
f. Array, merupakan deretan nilai dalam sebuah variabel yang dapat diakses berdasarkan indeksnya. Contohnya:
g. Char, tipe data yang hanya mampu menyimpan sebuah karakter berdasarkan kode ASCII. Contohnya karakter "B" memiliki kode ASCII 66. Besar memori yang diperlukan adalah 1 byte.

5. Operasi Aritmetika
Operasi aritmetika adalah operasi yang dilakukan pada data bertipe numerik.
Tabel 6.5 Operator matematika.

6. Compound Assignment
Compound assignment merupakan salah satu teknik kombinasi operator aritmetika dengan variabel, yang sering diterapkan pada sistem perulangan. Contohnya adalah sebagai berikut.
z ++; // memiliki kesamaan operasi z = z + 1
z--; // memiliki kesamaan operasi z = z - 1
z = a; // memiliki kesamaan operasi z = z-a
z += a; // memiliki kesamaan operasi z = z + a
z *= a; // memiliki kesamaan operasi z = z* a
z /= a; // memiliki kesamaan operasi z = z/a

7. Operasi Perbandingan
Operasi perbandingan merupakan operasi yang dilakukan untuk membandingkan sebuah logika atau beberapa logika yang keluarannya adalah tipe data Boolean.
Tabel 6.6 Operator pembanding.

8. Operasi Logika
Operasi logika merupakan operasi yang dilakukan untuk membandingkan dua atau lebih ekspresi. Keluaran yang dihasilkan dapat bernilai true atau false. Dalam Arduino, ada tiga jenis operator logika, antara lain sebagai berikut.
a. &&
Operator AND akan bernilai true jika kedua operand-nya bernilai true.
b. ||
Operator OR akan bernilai true jika salah satu operand-nya bernilai true.
c. !
Operator NOT akan menghasilkan kebalikan dari nilai inputan-nya.

9. Operasi Seleksi
Dalam pemrograman Arduino, dikenal konsep operator seleksi menggunakan if...then sama seperti bahasa pemrograman yang lain.
a. Seleksi satu kondisi
Jika sebuah kondisi menggunakan operasi logika menghasilkan nilai true, baris kode program yang berada di bagian dalam kurung kurawal {...} akan dieksekusi. Namun jika bernilai false, akan diabaikan. Seleksi satu kondisi if...then menggunakan format sebagai berikut.
b. Seleksi banyak kondisi
Jika kondisi1 bernilai true, akan mengerjakan "baris kode program ke-1". Namun, jika bernilai false, seleksi akan dilanjutkan ke operasi logika kondisi2. Jika bernilai true, program akan mengerjakan "baris kode program ke-2". Namun jika bernilai false, akan mengerjakan "baris kode program ke-n". Susunan if...then...else dapat dilihat sebagai berikut.
c. Seleksi bersarang
Seleksi bersarang merupakan bentuk seleksi di dalam seleksi. Artinya di dalam percabangan terdapat cabang lagi.

10. Operasi Perulangan

a. Perulangan dengan for
Operasi perulangan dengan for dilakukan secara terbatas dengan nilai awalan dan maksimal banyaknya pengulangan yang telah ditentukan. Penulisan struktur perulangan for adalah sebagai berikut. for (inisialisasi; syarat perulangan; nilai peubah)
Sebagai contoh:

b. Perulangan dengan while
Perulangan while akan terjadi selama ekspresi (kondisi) bernilai true. Format penulisan perulangan while adalah sebagai berikut.

c. Perulangan dengan do...while
Perulangan do...while minimal terjadi satu kali, karena pada awal looping, program tidak memeriksa nilai kondisi benar atau salah. Perulangan akan terus berlangsung selama kondisi dalam while bernilai benar. Format penulisannya adalah sebagai berikut.

11. Input Output

a. pinMode(no_pin,mode)
Fungsi ini sering dipakai pada void setup() untuk menentukan konfigurasi sebuah pin sebagai input atau output. Contohnya sebagai berikut.
b. digitalRead(no_pin)
Fungsi ini dapat digunakan untuk membaca nilai sebuah pin sebagai sebuah masukan. Jika bernilai high, memperoleh tegangan 5 V. Namun, jika bernilai low, akan menjadi jalur ground. Contohnya sebagai berikut.
c. digitalWrite(no_pin, nilai)
Fungsi ini dapat diterapkan pada pin digital dari 0-13 dengan nilai high atau low. Contohnya sebagai berikut.
d. analogRead(no_pin)
Fungsi ini dapat dipakai untuk mengonfigurasi pin analog dari A0-A5 dengan output berupa angka 0 (refleksi tegangan 0 V) hingga angka 1023 (tegangan 5 V). Contohnya sebagai berikut.
e. analogWrite(no_pin, nilai)
Fungsi ini digunakan untuk men-setting nilai pada pin analog. Contohnya sebagai berikut.
f. delay(t)
Fungsi ini digunakan untuk memberikan jeda waktu (biasanya digunakan untuk menghentikan sementara program selama waktu tertentu (t) dalam satuan millisecond. Contohnya sebagai berikut.
g. millis()
millis() berfungsi untuk mengembalikan nilai waktu dalam satuan millisecond (1 detik 1.000 ms) dalam sebuah variabel bertipe data long. Contohnya sebagai berikut.
h. max(a,b)
Fungsi ini digunakan untuk membandingkan dua nilai data dalam dua variabel a dan b dengan hasil keluarannya adalah nilai variabel yang terbesar. Contohnya sebagai berikut.
i. min(a,b)
min(a,b) digunakan untuk membandingkan dua nilai data dalam dua variabel a dan b dengan hasil keluarannya adalah nilai variabel yang paling kecil. Contohnya sebagai berikut.

(E) Aplikasi Sederhana

Arduino setelah mempelajari tentang karakteristik mikrokontroler Atmega328P dan bagian-bagian penting Arduino, serta cara melakukan pemrogramannya, tahap berikutnya, yaitu menerapkan pengontrolan rangkaian elektronika menggunakan mikrokontroler dalam hal Arduino.

Contoh

Menyalakan sebuah LED dengan Arduino
Pada bagian materi ini, Anda akan memprogram Arduino untuk menyalakan lampu LED melalui pin 4. Untuk melakukan praktik ini, ikuti langkah-langkah berikut.
1. Pastikan komputer telah terpasang Sistem Operasi Windows, minimal Windows 7, 32 bit.
2. Sebelum melakukan pemrograman pada mikrokontroler dalam rangkaian Arduino, langkah awal yang harus dilakukan adalah mengenalkan driver Arduino pada komputer dengan memasang software IDE Arduino versi 1.83 yang dapat di-unduh dari situs https://www.arduino.cc/en/Main/Software.
3. Lakukan pemasangan software tersebut dan pastikan berjalan dengan sukses.
Gambar 6.7 Software IDE Arduino.
4. Koneksikan Arduino board dengan komputer melalui port USB menggunakan kabel USB serial.


Gambar 6.8 Kabel USB serial.
5. Jalankan control panel Windows, kemudian buka device manager dan cari port USB yang terkoneksi dengan Arduino. Pada contoh ini, Arduino terdeteksi menggunakan port serial COM11.
Gambar 6.9 Deteksi port serial Arduino dengan device manager.
6. Periksa bahwa port serial tersebut telah terdeteksi pada software IDE Arduino dengan cara pilih menu Tools. Jika konfigurasi device manager tidak mengalami masalah dan hasil pemasangan software Arduino berjalan dengan baik, pada submenu Tools akan menampilkan informasi port tempat Arduino dapat dikonfigurasi. Pada contoh ini, terdapat informasi Port: "COM11 (Arduino/Genuino Uno)".
Gambar 6.10 Port Arduino dalam menu Tools.
7. Sebelum membuat rangkaian Lampu LED dengan Arduino, siapkan terlebih dahulu alat dan bahan sebagai berikut.
a. 1 buah breadboard (papan sirkuit).
b. 1 buah Arduino.
c. 2 buah kabel jumper (disarankan warna merah untuk power dan warna hitam untuk sambungan ground).
d. 1 buah resistor berukuran 1 kΩ.
e. 1 buah LED 5 mm atau 3 mm.
8. Rangkai lampu LED dan sambungan kabel jumper dari Arduino ke breadboard seperti gambar berikut.
Gambar 6.11 Rangkaian Arduino untuk menyalakan LED.
9. Buka aplikasi Arduino 1.8.3 kemudian ketikkan kode program sebagai berikut.
Penjelasan program:
a. void setup() merupakan bagian sketch yang akan me-load progam pertama kali saat booting.
b. Baris kode pinMode(4, OUTPUT); merupakan instruksi untuk menetapkan pin 4 sebagai keluaran.
c. void loop() merupakan bagan program yang akan dieksekusi berulang-ulang selama Arduino dalam kondisi menyala.
d. DigitalWrite(4, HIGH); instruksi yang akan memberikan pin 4 sebuah tegangan untuk menyalakan LED.

10. Setelah selesai menuliskan baris kode program seperti langkah sebelumnya, upload file program dengan memilih menu Sketch - Upload atau dengan menekan kombinasi tombol keyboard Ctrl - U.
Gambar 6.12 Upload file program ke Arduino.
11. Tunggu hingga selesai dan pastikan lampu LED menyala setelah program berhasil di-upload.
Gambar 6.13 Rangkaian Arduino dalam menyalakan sebuah LED.
• Mengontrol 2 buah LED agar dapat menyala secara bergantian (flip-flop) dengan Arduino
Ikuti langkah-langkah berikut.
1. Siapkan alat dan bahan-bahan berikut:
a. 1 buah Arduino.
b. 1 buah breadboard (papan sirkuit).
c. 4 buah kabel jumper (disarankan warna merah untuk power dan warna hitam untuk sambungan ground).
d. 2 buah resistor berukuran 1 kQ.
e. 2 buah LED 5 mm atau 3 mm.
2. Rangkai komponen-komponen tersebut pada breadboard seperti gambar berikut.
Gambar 6.14 Rangkaian Arduino dengan 2 Lampu LED.
Hubungkan Arduino ke komputer. Selanjutnya, buka aplikasi Software Arduino 1.8.3. Tuliskan kode dalam sketch sebagai berikut.
Gambar 6.15 Source code flip-flop.
4. Upload file program sketch ke Arduino.
5. Pastikan bahwa kedua lampu LED nyala secara bergantian seperti tampak pada gambar berikut.
Gambar 6.16 Rangkaian lampu flip-flop dengan Arduino.

Zona Aktivitas

A. Uji Pengetahuan (Nilai Pengetahuan II)
1. Jelaskan perbedaan antara mikrokontroler dengan Arduino?
2. Jelaskan karakteristik mikrokontroler Atmega328P?
3. Gambarkan dan jelaskan bagian-bagian dalam Arduino.
4. Menurut Anda, Arduino dapat digunakan dalam peralatan apa saja? Jelaskan.
5. Apa perbedaan fungsi void setup() dengan void loop() dalam pemrograman Arduino?
6. Jelaskan struktur perulangan yang dapat diterapkan dalam Arduino.
7. Mengapa kemungkinan menghasilkan keluaran bernilai TRUE pada operator logika || lebih banyak daripada operator logika &&?
8. Jelaskan perbedaan penggunaan instruksi digitalRead(pin) dengan digitalWrite(pin, nilai).
B. Tugas Praktikum (Nilai Praktik II)
Buatlah kelompok dengan anggota maksimal empat siswa. Download aplikasi Fritzing 0.9.3 untuk merancang dan mendesain rangkaian pengontrol nyala tiga lampu LED dengan Arduino menggunakan pin 3, 4, dan 5. Lakukan presentasi hasilnya di depan kelas.
C. Tugas Eksperimen (Nilai Proyek II)
Setelah berhasil merancang dan mendesainnya, lakukan pemrogaman terhadap rangkaian Arduino tersebut (pada praktik sebelumnya, menyalakan tiga lampu LED secara bergantian) dan lakukan upload. Perhatikan hasilnya, apakah ketiga lampu LED menyala secara bergantian? Paparkan hasil kerja kelompok Anda di depan kelas.

Rangkuman

1. Mikrokontroler merupakan alat pengontrol dengan ukuran kecil dan terintegrasi layaknya sebuah sistem komputer dalam sebuah chip.
2. Mikrokontroler jenis Atmega328P merupakan salah satu varian produk keluaran ATMEL dengan karakteristik arsitektur RISC (Reduce Instruction Set Computer) dengan kelebihan eksekusi data lebih baik dibandingkan dengan arsitektur CISC.
3. Arduino adalah development board atau papan pengembangan mikrokontroler yang memudahkan pengguna dalam membangun rangkaian elektronika berbasis mikrokontroler dibandingkan membangun rangkaian mulai dari awal.
4. Untuk mengontrol kerja Arduino, Anda dapat memprogramnya dengan menggunakan aplikasi software IDE Arduino berbasis bahasa pemrograman C.

Ulangan Akhir Bab 6

Pilihlah salah satu jawaban yang tepat.
1. Bagian dalam mikrokontroler yang mampu menyimpan data ketika dialiri arus listrik dan akan terhapus ketika tidak disupplai tegangan adalah ....
a. CPU
b. ROM
c. flash
d. RAM
e. port 1/0
2. Berikut yang bukan keunggulan penggunaan mikrokontroler dalam rangkaian eletronika, yaitu
a. lebih efisien
b. bentuk minimalis
c. keperluan arus listrik kecil
d. ika rusak, sulit untuk dideteksi
e. sederhana dan mudah dalam mengubah kode program
3. Varian miktrokontroler yang merupakan keluaran vendor ATMEL adalah ....
a. 386EX
b. 68HC08
c. MARCH4
d. MPC 8240/8250
e. PPC 440EP/EPX/GRX
4. Banyak set instruksi yang didukung oleh mikrokontroler Atmega328P dalam sebuah proses aritmetika adalah ....
a. 130
b. 131
c. 132
d. 133
e. 141
5. Perhatikan gambar berikut.
Bagian Arduino yang berperan sebagai pin referensi input tegangan yang dapat diatur melalui fungsi program analogReference() adalah....
a. 5
b. 4
c. 3
d. 2
e. 1
6. Jumlah pin pada mikrokontroler Atmega328P dalam Arduino adalah ....
a. 14
b. 20
c. 28
d. 40
e. 42
7. Daftar pin digital dalam Arduino yang dapat digunakan sebagai output PWM 8 bit melalui fungsi analogWrite() adalah....
a. 3, 5, 6, 9, 10, dan 11
b. 3, 4, 5, 6, 10, dan 11
c. 3, 4, 6, 9, dan 10
d. 3, 4, 5, 6, 9, dan 10
e. 2 dan 3
8. Besar nilai desimal maksimal yang disediakan pada software IDE Arduino pada saat Anda mendefinisikan variabel x bertipe data byte adalah ....
a. 128
b. 255
c. 256
d. 32.767
e. 62.335
9. Operator aritmetika yang seharusnya digunakan untuk menentukan sebuah bilangan yang dihitung pembagiannya tersebut merupakan kategori bilangan ganjil adalah ....
a. +
b. -
c. %
d. &&
e. ||
10. Struktur perulangan yang melakukan satu kali perulangan dalam sebuah proses walaupun kondisi yang ditetapkan bernilai false dalam sketch, yaitu ....
a. while...do
b. for
c. case...of
d. repeat...until
e. do...while

B. Jawablah pertanyaan-pertanyaan berikut dengan benar.
1. Jelaskan alasan Anda bahwa mikrokontroler lebih populer disebut sebagai minimalis komputer.
2. Gambarkan dan jelaskan struktur atau bagian-bagian dalam Arduino.
3. Jelaskan karakteristik penulisan kode program Arduino.
4. Jelaskan perbedaan tipe perulangan for dengan do...while pada saat melakukan upload program dengan software Arduino.
5. Jelaskan fungsi digitalWrite(pin, nilai) pada saat mengontrol nyala lampu LED.

C. Praktik
Buatlah rancangan desain rangkaian seven segment display dengan Arduino menggunakan aplikasi Fritzing. Terapkan secara langsung pada komponen Arduino dan breadboard.

D. Laporan
Buatlah laporan dalam bentuk print out tentang analisis dari pengujian rangkaian seven segment display dengan Arduino.

0 komentar: