Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
MIKROKONTROLLER
OLEH :
NIM : 1915313013
ABSEN : 04
KELAS : IV A - TL
TAHUN 2021
PERCOBAAN DASAR INPUT/OUTPUT DAN PERCOBAAN MENGGUNAKAN
MENGGUNAKAN KOMUNIKASI SERIAL
Pengendali mikro (bahasa Inggris: microcontroller) adalah sistem mikroprosesor lengkap yang
terkandung di dalam sebuah chip. Mikrokontroler berbeda dari mikroprosesor serba guna yang
digunakan dalam sebuah PC, karena di dalam sebuah mikrokontroler umumnya juga telah berisi
komponen pendukung sistem minimal mikroprosesor, yakni memori dan antarmuka I/O,
sedangkan di dalam mikroprosesor umumnya hanya berisi CPU saja.
Berbeda dengan CPU serba-guna, mikrokontroler tidak selalu memerlukan memori eksternal,
sehingga mikrokontroler dapat dibuat lebih murah dalam kemasan yang lebih kecil dengan
jumlah pin yang lebih sedikit.
Central processing unit – mulai dari prosesor 4-bit yang sederhana hingga prosesor
kinerja tinggi 64-bit,
Input/output antarmuka jaringan seperti port serial (UART),
Antarmuka komunikasi serial lain seperti I²C, Serial Peripheral Interface and Controller
Area Network untuk sambungan system,
Periferal seperti timer dan watchdog,
RAM untuk penyimpanan data,
ROM, EPROM, EEPROM atau Flash memory untuk menyimpan program computer,
Pembangkit clock – biasanya berupa resonator rangkaian RC,
Pengubah analog-ke-digital.
sistem minimal (system minimum) adalah sebuah rangkaian mikrokontroler yang sudah dapat
digunakan untuk menjalankan sebuah aplikasi. Sebuah IC mikrokontroler tidakakan berarti bila
hanya berdiri sendiri. Pada dasarnya sebuah sistem minimal mikrokontroler memiliki prinsip
yang sama.
Untuk membuat sistem minimal paling tidak dibutuhkan sistem clock dan reset, walaupun pada
beberapa mikrokontroler sudah menyediakan sistem clock internal, sehingga tanpa rangkaian
eksternal pun mikrokontroler sudah beroperasi.
ATMega328 adalah mikrokontroller keluaran dari atmel yang mempunyai arsitektur RISC
(Reduce Instruction Set Computer) yang dimana setiap proses eksekusi data lebih cepat dari pada
arsitektur CISC (Completed Instruction Set Computer).
Mikrokontroller ini memiliki beberapa fitur antara lain :
130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock,
32 x 8-bit register serba guna,
Kecepatan mencapai 16 MIPS dengan clock 16 MHz.,
32 KB Flash memory dan pada arduino memiliki bootloader yang menggunakan 2 KB
dari flash memori sebagai bootloader,
Memiliki EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar
1KB sebagai tempat penyimpanan data semi permanent karena EEPROM tetap dapat
menyimpan data meskipun catu daya dimatikan,
Memiliki SRAM (Static Random Access Memory) sebesar 2KB,
Memiliki pin I/O digital sebanyak 14 pin 6 diantaranya PWM (Pulse Width Modulation)
output,
Master / Slave SPI Serial interface.
Mikrokontroller ATmega 328 memiliki arsitektur Harvard, yaitu memisahkan memori untuk
kode program dan memori untuk data sehingga dapat memaksimalkan kerja dan parallelism.
Apakah arduino? Arduino adalah merupakan sebuah board minimum system mikrokontroler
yang bersifat open source. Didalam rangkaian board arduino terdapat mikrokontroler AVR seri
ATMega 328 yang merupakan produk dari Atmel.
Struktur
Arduino menggunakan pemrograman dengan bahasa C. setiap program arduino yang biasa
disebut sketch mempunyai dua buah fungsi yang harus ada, yaitu:
void setup() { }
o Semua kode di dalam kurung kurawal akan di jalankan hanya satu kali ketika
program arduino di jalankan untuk pertama kalinya.
void loop() { }
o Fungsi ini akan di jalankan setelah setup (fungsi void setup) selesai. Setelah di
jalankan satu kali fungsi ini akan di jalankan lagi, dan terus berulang sampai catu
daya di lepaskan.
Syntax
Berikut ini adalah elemen bahasa C yang di butuhkan untuk format penuisan:
Variable
Sebuah program secara garis besar dapat didefinisikan sebagai instruksi untuk memindahkan
angka dengan cara yang cerdas. Variable inlah yang digunakan untuk memindahkannya.
Int (integer)
o Digunakan untuk menyimpan angka dalam 2 byte (16 bit) tidak mempunyai
angka desimal dan menyimpan nilai dari -32.768 sampai 32.767.
Long (long)
o Digunakan ketika integer tidsk mencukupi lagi. Memakai 4 byte (32 bit) dari
memori (RAM) dan mempunyai rentang dari -2.147.483.648 sampai
2.147.483.647.
Boolean (Boolean)
o Variable sederhana yang di gunakan untuk menyimpan nilai TRUE (benar) atau
FALSE (salah). Sangat berguna karena hanya menggunakan 1 bit dari RAM.
Float (float)
o Digunakan untuk angka desimal (floating point) memakai 4 byte (32 bit) dari
RAM dan mempunyai rentang dari -3,4028235E+38.
Char (char)
o Menyimpan 1 karakter menggunakan kode ASCII (misalnya ‘A’ = 65). Hanya
memakai 1 byte (8 bit) dari RAM.
Operator Matematika
Operator yang digunakan untuk memanipulasi angka (bekerja sperti matematika yang
sederhana), diantaranya:
=(sama dengan)
o Membuat sesuatu menjadi sama dengan nilai yang lain
%(presentase)
o Menghasilkan sisa dari hasil pembagian suatu angka dengan angka yang lain
(misalnya : 12%10, ini akan menghasilkan angka 2)
+(tanda tambah)
o Penjumlahan
-(tanda kurang)
o Pengurangan
*(tanda bintang)
o perkalian
/(tanda slash)
o Pembagian
Operator pembanding
Digunakan untuk membandingkan nilai logika.
==
o Sama dengan (misalnya : 12 ==10 adalah FALSE (salah) atau 12 ==12 adalah
TRUE (benar))
!=
o Tidak sama dengan (misalnya : 12 != 10 adalah TRUE (benar) atau 12 !=12 adalah
FALSE (salah))
<
o Lebih kecil dari (misalnya : 12 < 10 adalah FALSE (salah) atau 12 < 14 adalah
TRUE (benar))
>
o Lebih besar dari (misalnya : 12 > 10 adalah TRUE (benar) atau 12 > 12 adalah
FALSE (salah) atau 12 > 14 adalah FALSE (salah))
Struktur Pengaturan
Program sangat tergantung pada pengaturan apa yang akan dijalankan berikutnya,
berikut ini adalah elemen dasar pengaturan :
Analog
Arduino adalah mesin digital tetapi mempunyai kemampuan untuk beroperasi di dalam
alam analog.
1. analogWrite(pin,value)
Beberapa pin pada Arduino mendukung PWM (pulse width modulation) yaitu pin 3,
5,6,9,10,11. Ini dapat merubah pin hidup (on) atau mati (off) dengan sangat cepat
sehingga membuatnya dapat berfungsi layaknya keluaran analog. Value (nilai) pada
format kode tersebut adalah angka. Antara 0 (0% duty cycle – 0 volt) dan 225 (100%
duty cycle – 5 volt).
2. analogRead(pin)
Ketika pin analog ditetapkan sebagai INPUT, tegangan keluarannya dapat dibaca berupa
angka antara 0 (untuk 0 volt) dan 1024 (untuk 5 volt).
Pada pin 2 LCD diberikan tegangan sebesar 5vdc dan pin 3 berfungsi sebagai pengaturan
kontras LCD. Sedangkan pin 15 adalah pengatur backlight pada LCD. Pin 4 (RS)
merupakan register selector yang berfungsi untuk memiliki register control atau register
data. Registrel control di gunakan untuk mengkonfigurasi LCD. Register data digunakan
untuk menulis data karakter ke memori display LCD. Pin LCD nomor 5 (R/W) di gunakan
untuk memilih aliran data read atau whrite. Karena kebanyakan fungsi hanya untuk
menampilkan data ke LCD dan hanya perlu menulis data saja ke LCD, maka kaki ini di
hubungkan ke GND (write). Pin LCD nomor 6 (enable) digunakan untuk mengaktifkan
LCD pada proses penulisan data ke register control dan register data LCD. Untuk D4
sampai D7 adalah komunikasi data bus yang dikirim oleh mikrokontroler dan
ditampilkan berupa informasi. Data yang ditampilkan bukan beberapa bilangan biner.
#include <LiquidCrystal.h>
LiquidCrystal lcd (12, 11, 5, 4, 3, 2) ; // (RS,Enable,D4,D5,D6,D7)
Void setup () {
lcd.begin (16, 2) ;
lcd.print (“hello,world”) ;
}
Void loop() {
lcd.setCursor (0, 1) ;
lcd.print (millis()/1000) ;
}
1.4 Alat dan Bahan
Adapun alat dan bahan yang digunakan dalam praktikum, yaitu :
void setup() {
pinMode(led, OUTPUT);
void loop() {
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}
2. Flip_Flop
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
void loop() {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2,HIGH);
delay(1000);
}
3. Simulasi Traffic Light
int merahPin=13;
int kuningPin=12;
int hijauPin=11;
void setup() {
pinMode(merahPin, OUTPUT);
pinMode(kuningPin, OUTPUT);
pinMode(hijauPin, OUTPUT);
void loop() {
digitalWrite(kuningPin,LOW);
digitalWrite(hijauPin, LOW);
delay(3000);
digitalWrite(kuningPin, HIGH);
delay(1000);
digitalWrite(hijauPin, LOW);
delay(1000);
digitalWrite(merahPin, LOW);
digitalWrite(kuningPin, LOW);
digitalWrite(hijauPin, HIGH);
delay(3000);
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //rs, en, d4, d5, d6, d7)
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
}
1.7 Analisa Data
void setup() merupakan code yang harus ada dalam pembuatan program di arduino yang
fungsinya untuk mendefinisikan perintah-perintah dari suatu variabel, atau mendefinisikan
perilaku dari suatu objek. kode yang ditulis setelah void setup() harus diawalin dengan kurung
kurawal "{" dan diakhiri "}". pendefinisian ini hanya berjalan satu kali pada saat arduino
dijalankan atau ketika arduino di reset.
pinMode(led, OUTPUT);
ini mengartikan pin no. 13 pada arduino diatur agar berperilaku sebagai OUTPUT.
single line coment bermanfaat untuk menjelaskan pernyataan – pernyataan yang pendek yang
hanya bersisi satu baris kalimat tidak bisa lebih. Dalam pembuatan single line coment. Garis
miring ke garis miring selanjutnya tidak boleh mengunakan jarak atau spasi
void loop() merupakan kode utama yang pasti ada dalam pembuatan program di arduino yang
fungsinya untuk menjalankan perintah-perintah yang telah diupload secara berulang-ulang dan
terus-menerus selama arduino diberi daya. kode yang ditulis setelah void loop() harus diawalin
dengan kurung kurawal "{" dan diakhiri "}".
single line coment bermanfaat untuk menjelaskan pernyataan – pernyataan yang pendek yang
hanya bersisi satu baris kalimat tidak bisa lebih. Dalam pembuatan single line coment. Garis
miring ke garis miring selanjutnya tidak boleh mengunakan jarak atau spasi.
>> Selanjutnya didalam kurung kurawal void loop() terdapat kode :
delay(500);
ini mengartikan di pin digital no. 13 arduino mengalir tegangan 5V atau 3.3V (HIGH) yang
artinya menyuruh LED untuk ON dan diberi jeda/delay selama 500 milidetik (0.5 detik) sebelum
menjalankan perintah selanjutnya.
digitalWrite(13, LOW);
delay(1000);
ini mengartikan di pin digital no. 13 arduino mengalir tegangan 0V atau kurang dari 3.3V (LOW)
yang artinya menyuruh LED untuk OFF dan diberi jeda/delay selama 500 milidetik (0.5 detik)
sembelum kembali ke looping awal.
int led1 = 9, led2=10 adalah deklarasi variabel yaitu mendeklarasikan variabel “led1” sebagai
pin 9 dan variable “led2” sebagai pin 10.
void setup() merupakan code yang harus ada dalam pembuatan program di arduino yang
fungsinya untuk mendefinisikan perintah-perintah dari suatu variabel, atau mendefinisikan
perilaku dari suatu objek. kode yang ditulis setelah void setup() harus diawalin dengan kurung
kurawal "{" dan diakhiri "}". pendefinisian ini hanya berjalan satu kali pada saat arduino
dijalankan atau ketika arduino di reset.
ini mengartikan variabel led1 pin no. 9 pada arduino diatur agar berperilaku sebagai OUTPUT
dan variabel led2 pin no. 10 pada arduino diatur agar berperilaku sebagai OUTPUT.
void loop() merupakan kode utama yang pasti ada dalam pembuatan program di arduino yang
fungsinya untuk menjalankan perintah-perintah yang telah diupload secara berulang-ulang dan
terus-menerus selama arduino diberi daya. kode yang ditulis setelah void loop() harus diawalin
dengan kurung kurawal "{" dan diakhiri "}".
delay(1000);
delay(1000);
LED yang terpasang pada pin 9 dan mematikan LED yang terpasang pada pin 10 selama 1000
milidetik, kemudian kondisi ini dibalik dengan menyalahkan LED pada pin 10 dan mematikan
LED pada pin 9 selama 1000 milidetik. Program ini akan berulang tak terhingga (infinite loop)
single line coment bermanfaat untuk menjelaskan pernyataan – pernyataan yang pendek yang
hanya bersisi satu baris kalimat tidak bisa lebih. Dalam pembuatan single line coment. Garis
miring ke garis miring selanjutnya tidak boleh mengunakan jarak atau spasi.
3. Percobaan dengan menggunakan Simulasi Traffic Light
>> int merahPin=13;
int kuningPin=12;
int hijauPin=11;
inisilasi variabel dalam hal ini inisialisasi variabel bernama ledPi dengan type data
integer da nada 3 buah nilai yaitu merahPin dengan nilai 13, kuningPin dengan nilai 12 , dan
hijauPin dengan nilai 11.
>>void setup() {
pinMode(merahPin, OUTPUT);
pinMode(kuningPin, OUTPUT);
pinMode(hijauPin, OUTPUT);
// put your setup code here, to run once:
}
Fungsi void setup () dalam sebuah program arduino adalah semua perintah yang akan di
baca sekali . keterarangan pada penulisan program diatas yaitu menjadikan pin 13 (merahPin),
12 (hijaupPin) sebagai OUTPUT.
>>digitalWrite(kuningPin, HIGH);
delay(1000);
digitalWrite(hijauPin, LOW);
delay(1000);
// put your main code here, to run repeatedly:
}
digitalWrite(merahPin, LOW);
digitalWrite(kuningPin, LOW);
digitalWrite(hijauPin, HIGH);
delay(3000);
}
Fungsi void loop () dalam sebuah program arduino adalah semua perintah yang akan di
baca berulang-ulang. Untuk bagian pertama program ini yaitu yaitu merahPin akan menyala
karena HIGH, kuningPin dan hijauPin akan mati karena LOW dengan waktu delay selama 3000
milisekon. Selanjutnya pada bagian kedua kuningPin akan hidup selama 1000 milisekon dengan
hijauPin mati.Lalu pada bagian akhir merahPin dan kuningPin akan mati namun hijauPin akan
hidup selama 3000 milisekon. Kondisi seperti ini akan berulang-ulang dan seperti simulasi pada
Trafic Light.
>>LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //rs, en, d4, d5, d6, d7)
Header di atas menerangkan bahwa masukan pada Liquid Crystal yaitu menggunakan
alamat pada kaki-kaki rs, en, d4, d5, d6, d7
>>void setup() {
lcd.begin(16, 2);
lcd.print("hello, world!");
Fungsi setup di atas digunakan untuk men-setup hal-hal umum agar program siap
dijalankan baris pertama yaitu digunakan untuk mensetup baris dan kolom yang digunakan
yaitu sebanyak 16 baris dan 2 kolom. Pada baris kedua merupakan perintah untuk mencetak
data pada LCD dengan tulisan “hello, world”.
>>void loop() {
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
Fungsi loop() function adalah program utama yang dipanggil secara continue selama
Arduino menyala. Set posisi awal kursor diawali dengan kolom 0 dan baris 1.
1.8 Kesimpulan
1. Dasar-dasar Arduino didalamnya terdapat kode-kode program yang ada pada "void
setup" dan “void loop". Semua kode program yang ada dalam "void setup" akan dibaca
sekali oleh Arduino. Biasanya isinya berupa kode perintah untuk menentukan fungsi
pada sebuah pin. Juga semua kode program yang ada di “void loop" akan dibaca setelah
"void setup" dan akan dibaca terus menerus oleh Arduino. Isinya berupa kode-kode
perintah kepada pin INPUT dan OUTPUT pada Arduino.
2. Penerapan program Arduino pada bahan-bahan elektronika adalah dirancang untuk
memudahkan penggunaan elektronik menjadi peralatan elektronik interaktif
berdasarkan hardware dan software yang fleksibel dan mudah digunakan dalam
berbagai bidang dengan bahasa program yang mudah dimengerti.
1.9 Dokumentasi/Lampiran