Modul Praktikum Mikro (Unit 1 - 4)
Modul Praktikum Mikro (Unit 1 - 4)
MIKROPROSESOR – MIKROKONTROLER
D3 TEKNOLOGI ELEKTRO-MEDIS
PROGRAM VOKASI
UNIVERSITAS MUHAMMADIYAH YOGYAKARTA
2023/2024
DAFTAR ISI
DAFTAR ISI..............................................................................................................................ii
PERATURAN PELAKSANAAN PRAKTIKUM....................................................................iii
LEMBAR PRESENSI KEHADIRAN.....................................................................................iv
PRAKTIKUM UNIT 1 : DIGITAL INPUT – OUTPUT.......................................1
PRAKTIKUM UNIT 2 : ANALOG DIGITAL CONVERTER (ADC)..............10
PRAKTIKUM UNIT 3 : DISPLAY SEVEN SEGMENT & LCD.....................23
PRAKTIKUM UNIT 4 : TIMER COUNTER......................................................42
PRAKTIKUM UNIT 5 : PULSE WIDTH MODULATION (PWM)
....................
PRAKTIKUM UNIT 6 : KOMUNIKASI SERIAL
.............................................
PRAKTIKUM UNIT 7 : APLIKASI MIKROKONTROLER
...............................
UJIAN CAPAIAN PEMBELAJARAN PRAKTIKUM
.......................................................
PROJEK MATAKULIAH
...............................................................................................
PENILAIAN PROJEK
....................................................................................
FORMAT LAPORAN PROJEK
.....................................................................
ii
PERATURAN PELAKSANAAN PRAKTIKUM
MATAKULIAH MIKROPROSESOR -
MIKROKONTROLER
9. PRAKTIKAN DILARANG makan & minum di dalam kelas pada saat pelaksanaan
praktikum berlangsung.
10. PRAKTIKAN DILARANG membawa pulang modul praktikum ataupun komponen
pendukung praktikum lainnya.
11. Bagi Praktikan, apabila diketahui menyebabkan kerusakan pada modul praktikum
maupun alat bantu pengukuran akan mendapatkan pengurangan nilai serta harus
mengganti kerusakan yang telah disebabkan kelalaiannya.
i
LEMBAR PRESENSI KEHADIRAN
PRAKTIKUM MIKROPROSESOR – MIKROKONTROLER
NAMA MAHASISWA :
NIM :
KELAS :
TGL
NO. UNIT PARAF
NO JUDUL UNIT PRAKTIKUM PELAKSANAAN
PRAKTIKUM DOSEN/LABORAN
PRAKTIKUM
CATATAN :
LEMBAR INI WAJIB DIBAWA SETIAP PRAKTIKUM, SEBAGAI BUKTI
PELAKSANAAN PRAKTIKUM !
i
PRAKTIKUM UNIT 1
MIKROPROSESOR-MIKROKONTROLER DIGITAL INPUT-
PRAKTIKUM UNIT 1
DIGITAL INPUT – OUTPUT ARDUINO NANO
1
PRAKTIKUM UNIT 1
MIKROPROSESOR-MIKROKONTROLER DIGITAL INPUT-
void setup()
{
pindMode(3, OUTPUT);
}
Void loop()
{
digitalWrite(3, HIGH);
Penjelasan Program:
pinMode(D3, OUTPUT) maksudnya adalah pin D3 disetting sebagai luaran.
digitalWrite(D3, HIGH) maksudnya adalah luaran dari pin D3 adalah 5 volt atau
berlogika 1.
digitalWrite(D3, LOW) maksudnya adalah luaran dari pin D3 adalah 0 volt atau
berlogika 0.
void setup()
{
Penjelasan Program:
pindMode(3,
pinMode(D3, INPUT_PULLUP) maksudnya adalah pin D3 disetting sebagai input
INPUT_PULLUP);
pinMode(4, OUTPUT);
dengan mode pull-up, jika ingin
} menggunakan input dengan mode non
Void loop() pullup (toggle), maka cukup menulisnya
pinMode(D3, INPUT).
{
int tombol = maksudnya adalah membaca masukkan sinyal digital dari pin D3.
digitalRead(D3)
2
PRAKTIKUM UNIT 1
MIKROPROSESOR-MIKROKONTROLER DIGITAL INPUT-
Cara kerja keseluruhan dari code program diatas adalah jika nilai
variable tombol adalah0 (LOW), maka luaran pin D4 adalah HIGH (5
volt), sedangkan jika nilai variable tomboladalah 1 (HIGH), maka luaran
pin D4 adalah LOW (0 volt).
Tujuan Praktikum
1. Mahasiswa mampu mengetahui konfigurasi dan cara kerja input-
output digital padaArduino Nano.
2. Mahasiswa mampu mengaplikasikan fungsi input-output digital yang
ada pada Arduino Nano.
3. Mahasiswa mampu membuat sketch program input-output digital
pada Arduino Nanodengan software Arduino IDE.
Langkah Percobaan
1. Buka software Arduino IDE
3. Save (simpan) dengan nama file dan di folder yang telah ditentukan
4. Koneksikan Arduino Nano dengan PC dengan menggunakan kabel USB
5. Pilih Board Arduino Nano dan Port yang sesuai dengan port
Arduino Nano, sertapastikan Programmer nya adalah AVRISP mkll
6. Tulis sketch program
3
PRAKTIKUM UNIT 1
MIKROPROSESOR-MIKROKONTROLER DIGITAL INPUT-
Percobaan
1. Menggunakan Luaran Digital Arduino Nano untuk
menghidupkan/mematikan LED
void setup()
{
pindMode(LED_1,
OUTPUT);
pindMode(LED_2,
OUTPUT);
pindMode(LED_3,
OUTPUT);
Void loop()
digitalWrite(LED_1,
HIGH); delay(1000);
digitalWrite(LED_1,
LOW); delay(1000);
digitalWrite(LED_2,
HIGH); delay(1000);
digitalWrite(LED_2,
LOW); delay(1000);
digitalWrite(LED_3,
HIGH); delay(1000);
4
PRAKTIKUM UNIT 1
MIKROPROSESOR-MIKROKONTROLER DIGITAL INPUT-
Skematik:
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{
previousMillis =
currentMillis; if (ledState
5
PRAKTIKUM UNIT 1
MIKROPROSESOR-MIKROKONTROLER DIGITAL INPUT-
Skematik:
void setup()
{
pinMode(TOMBOL,
INPUT_PULLUP); pinMode(LED,
OUTPUT);
void loop()
{
int posisi_tombol =
digitalRead(TOMBOL); if(posisi_tombol
6
PRAKTIKUM UNIT 1
MIKROPROSESOR-MIKROKONTROLER DIGITAL INPUT-
Skematik:
void setup()
pinMode(TOMBOL,
INPUT_PULLUP); pinMode(LED,
OUTPUT);
void loop()
7
PRAKTIKUM UNIT 1
MIKROPROSESOR-MIKROKONTROLER DIGITAL INPUT-
Pertanyaan
(Sertakan dalam Laporan Praktikum, dapat digabung dengan analisis ataupun
dibuat terpisah)
1. Apakah maksud dari const int dan apakah perbedaannya dengan int ?
2. Apa dampaknya jika pada digitalWrite(LED, LOW); di samping,
LOW atau HIGH diganti 0 atau 1? serta jelaskan mengapa demikian
pada aturan syntax program tersebut !
3. Jelaskan tentang fungsi millis() secara umum dan khusus pada
program yang dipraktikumkan pada unit ini !
4. Bagaimana alur bekerja timer menggunakan millis() pada program
yang dipraktikumkan di atas?
5. Di percobaan diatas ada pernyataan ledMenyala = not ledMenyala,
apakah kegunaan dari kata not tersebut dan jelaskan secara alur
program?
6. Apa perbedaan dari satu sama-dengan (“=”) dan dua sama-dengan (“==”)?
7. Apakah fungsi dari operator != ?
8
PRAKTIKUM UNIT 1
MIKROPROSESOR-MIKROKONTROLER DIGITAL INPUT-
NAMA MAHASISWA :
NIM :
KELAS :
Yogyakarta, ……………………………
Mahasiswa Praktikan Dosen / Laboran / Asisten
(…………...………………………….) (……………………………………..…….)
CATATAN :
9 SEBAGAI BUKTI PELAKSANAAN PRAKTIKUM !
LEMBAR INI WAJIB DIBAWA SETIAP UNIT PRAKTIKUM,
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
PRAKTIKUM UNIT 2
ANALOG TO DIGITAL CONVERTER
Teori Singkat
A. Analog Digital Converter (ADC)
Board Arduino berisi multichannel dari 10-bit analog ke digital converter. Ini berarti
akan memetakan tegangan input antara 0 dan tegangan operasi (5V atau 3.3V) menjadi
nilai integer antara 0 dan 1023. Pada Arduino UNO, misalnya, ini menghasilkan resolusi
antara pembacaan: 5 volt / 1024 unit atau , 0,0049 volt (4,9 mV) per unit.
Tabel di bawah menunjukkan pin yang dapat digunakan, tegangan operasi, dan resolusi
maksimum untuk beberapa board Arduino. Rentang input dapat diubah menggunakan
analogReference(), sedangkan resolusi dapat diubah (hanya untuk papan Zero, Due dan
MKR) menggunakan analogReadResolution().
Syntax
analogRead(pin)
Parameter
pin: nama pin input analog yang akan dibaca (A0 hingga A5 pada sebagian besar papan, A0
hingga A6 pada papan MKR, A0 hingga A7 pada Mini dan Nano, A0 hingga A15 pada Mega).
Returns
Pembacaan analog pada pin. Meskipun terbatas pada resolusi konverter analog ke digital (0-1023
untuk 10 bit atau 0-4095 untuk 12 bit). Tipe data: integer (int).
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
B. Serial Monitor
Serial Monitor adalah alat penting saat membuat proyek dengan Arduino.
Ini dapat digunakan sebagai alat debugging, menguji konsep atau untuk
berkomunikasi langsung dengan board Arduino.
Pertukaran data ini terjadi melalui kabel USB yang biasa kita gunakan
untuk proses upload sketch dari laptop/PC ke Arduino. Lebih jelas tentang
cara kerja dari serial monitor adalah sebagai berikut.
1) Arduino ke PC/Laptop merupakan proses menerima data yang
dikirim oleh Arduino ke PC/Laptop dan menampilkan data tersebut
pada layar monitor. Proses ini biasa digunakan untuk debugging
dan monitoring
Arduino IDE 2.0 memiliki alat Serial Monitor yang terintegrasi dengan editor,
yang berarti tidak ada jendela eksternal yang terbuka saat menggunakan
Serial Monitor. Ini berarti Anda dapat membuka banyak jendela, masing-
masing dengan Serial Monitor-nya sendiri.
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
Tujuan Praktikum
1. Mahasiswa mampu memahami karakteristik dan cara
mengaplikasikan fungsi ADCpada arduino dan penerapannya
menggunakan sensor suhu.
1. Notebook/laptop/Personal Computer
2. Web Browser
(ThinkerCAD) Bahan:
1. Modul Praktikum
2. Arduino Nano
3. Potensiometer
4. Sensor Suhu
5. Kabel Jumper
Percobaan
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
Sketch program:
void setup()
{
3.Serial.begin(9600);
Verify/Compile Program & Upload program ke Board Arduino (Modul
analogReference(INTERNAL);
Praktikum) Jalankan simulasi thinkerCAD (Web browser –
}
ThinkerCAD)
void loop()
{4. Buka Tab serial monitor pada Arduino IDE / ThinkerCAD
int data_adc;
5.float
Putar Potensio dan perhatikan serial monitor serta perhatikan
data_tegangan;
data_adc
voltmeter= (user ThinkerCAD)
analogRead(A0);
data_tegangan = float
(data_adc)*1.1/1023;Serial.print("data adc: ");
Serial.print(data_adc);
Serial.print(" data tegangan: ");
Serial.println(data_tegangan); delay(500);
}
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
void setup()
{
3. Verify/Compile Program & Upload program ke Board Arduino (Modul
Serial.begin(9600);
Praktikum) Jalankan simulasi thinkerCAD (Web browser – ThinkerCAD)
analogReference(EXTERNAL);
4. Buka
} Tab serial monitor pada Arduino IDE / ThinkerCAD
5. Putar Potensio dan perhatikan serial monitor serta perhatikan
void loop()
voltmeter (user ThinkerCAD)
{
int data_adc;
float data_tegangan; data_adc =
D. Percobaan 4 (Membaca nilai ADC dari Sensor Suhu)
analogRead(A0); data_tegangan =
float(data_adc)*3.3/1023;
Serial.print("data adc: ");
Serial.print(data_adc);
Serial.print(" datategangan: ");
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
Langkah Percobaan:
2 Masuk Circuits
Buatlah rangkaian seperti skematik
3 Create new Circuit
2 di bawah ini dengan memperhatikan
konfigurasi Pinout Sensor Buatlah rangkaian seperti skematik
4 di bawah ini dengan memperhatikan
konfigurasi Pinout Sensor
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
1
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
2
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
2
PRAKTIKUM UNIT 2
MIKROPROSESOR-MIKROKONTROLER DIGITAL ANALOG CONVERTER
NAMA MAHASISWA :
NIM :
KELAS :
Yogyakarta, ……………………………
Mahasiswa Praktikan Dosen / Laboran / Asisten
(…………...………………………….) (……………………………………..…….)
CATATAN :
LEMBAR INI WAJIB DIBAWA SETIAP UNIT PRAKTIKUM, SEBAGAI BUKTI PELAKSANAAN PRAKTIKUM !
2
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
PRAKTIKUM UNIT 3
DISPLAY SEVEN SEGMENT & LCD
Teori Singkat
A. Seven Segment
Seven Segment Display (7 Segment Display) dalam bahasa Indonesia disebut
dengan Layar Tujuh Segmen adalah komponen Elektronika yang dapat
menampilkan angka desimal melalui kombinasi-kombinasi segmennya. Seven
Segment Display pada umumnya dipakai pada Jam Digital, Kalkulator,
Penghitung atau Counter Digital, Multimeter Digital dan juga Panel Display
Digital seperti pada Microwave Oven ataupun Pengatur Suhu Digital.
Seven Segment Display memiliki 7 Segmen dimana setiap segmen dikendalikan
secara ON dan OFF untuk menampilkan angka yang diinginkan. Angka-angka
dari 0 (nol) sampai
9 (Sembilan) dapat ditampilkan dengan menggunakan beberapa kombinasi
Segmen. Selain 0 – 9, Seven Segment Display juga dapat menampilkan Huruf
Hexadecimal dari A sampai F. Segmen atau elemen-elemen pada Seven
Segment Display diatur menjadi bentuk angka “8” yang agak miring ke kanan
dengan tujuan untuk mempermudah pembacaannya. Pada beberapa jenis
Seven Segment Display, terdapat juga penambahan “titik” yang menunjukan
angka koma decimal. Terdapat beberapa jenis Seven Segment Display,
diantaranya adalah Incandescent bulbs, Fluorescent lamps (FL), Liquid Crystal Display
(LCD) dan Light Emitting Diode (LED).
2
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
terhubung menjadi 1 Pin ini merupakan Terminal Negatif (-) atau Ground
sedangkan Signal Kendali (Control Signal) akan diberikan kepada masing-
masing Kaki Anoda Segmen LED.
2
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
Pada prinsipnya, menampilkan bilangan 0-9 bahkan huruf A-F pada seven
segmen cukup sederhana. Beberapa segmen dinyalakan secara bersamaan
hingga membentuk bilangan atau huruf yang ingin ditampilkan. Adapun
secara lengkap seperti pada tabel di bawah untuk menampilkan bilangan.
SEGMENT
ANGKA h g f e d c b a
0 0 0 1 1 1 1 1 1
1 0 0 0 0 0 1 1 0
2 0 1 0 1 1 0 1 1
3 0 1 0 0 1 1 1 1
4 0 1 1 0 0 1 1 0
5 0 1 1 0 1 1 0 1
6 0 1 1 1 1 1 0 1
7 0 0 0 0 0 1 1 1
8 0 1 1 1 1 1 1 1
9 0 1 1 0 1 1 1 1
Keterangan: 1 = ON (High); 0 = OFF (Low)
2
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
2
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
sudah merupakan Sinyal Digital, maka Dekoder akan menanganinya sendiri tanpa
harus menggunakan ADC.
Fungsi daripada Blok Driver adalah untuk memberikan arus listrik yang cukup
kepada Segmen/Elemen LED untuk menyala. Pada Tipe Dekoder tertentu,
Dekoder sendiri dapat mengeluarkan Tegangan dan Arus listrik yang cukup
untuk menyalakan Segmen LED maka Blok Driver ini tidak diperlukan. Pada
umumnya Driver untuk menyalakan 7 Segmen ini adalah terdiri dari 8
Transistor Switch pada masing-masing elemen LED.
Modul TMP1637
TM-1637 (juga disebut Grove 4-Digit Display oleh Seeed Studio) adalah layar
7-segmen 4-digit yang dapat dengan mudah dikontrol dengan beberapa kabel
pada Arduino.
PIN CLK dan DIO dapat diatur ke pin apa saja di Arduino. Untuk mengatur
kecerahan, berikan nilai antara 0-7 ke tm.set().
Selanjutnya, menampilkan karakter dalam fungsi loop dengan 2 metode:
tm.display(<posisi>, <karakter>); akan menampilkan karakter di layar. Posisi
mengacu pada angka yang ingin Anda ubah. Yang pertama adalah 0 dan
yang terakhir adalah 3.
2
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
B. LCD
Selain seven segment, modul penampil informasi atau display yang populer
digunakan adalah LCD (Liquid Crystal Display) yang umumnya pada aplikasi
Arduino jenisnya LCD text. Jenis lain dari LCD adalah LCD grafis, selain
menampilkan text juga dapat menampilkan grafis seperti tampilan gambar.
LCD text dibedakan berdasarkan ukuran display, yaitu jumlah kolom dan
barisnya. Ada LCD 20×4 (20 kolom 4 baris), LCD 8×2 (8 kolom 2 baris) , LCD
16×2 (16 kolom 2 baris). Semuanya mempunyai pin koneksi yang sama yaitu
16 pin dibagian atas LCD.
Tidak semua pin LCD yang jumlahnya 16 pin dihubungkan ke Arduino, cukup
beberapa saja :
2
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
Jadi cukup 6 pin saja yang terhubung dengan Arduino, yaitu pin RS, E, D4, D5,
D6 dan D7. Untuk tegangan LCD cukup dihubungkan dengan pin 5V dan GND
Arduino. Pin x maksudnya pin 0 – pin 13 pada Arduino UNO, namun pin
berapapun dapat digunakan, bahkan pin A0 – A5 juga juga dapat digunakan.
Adapun cara menghubungakan tidak perlu berurutan, yang utama pada
program Arduino disesuaikan koneksinya.
Jika tanpa I2C maka sebuah LCD text akan memerlukan 6 pin Arduino (RS, E,
D4, D5, D6, D7), sedangkan jika memakai koneksi I2C cukup 2 pin saja : SDA
dan SCL. Kapan memerlukan koneksi I2C ?, ketika pada aplikasi Arduino
jumlah pin tidak cukup untuk sambungan LCD secara normal maka kita perlu
memakai modul tambahan yaitu modul Backpack I2C Module LCD.
2
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
Tujuan Praktikum
Alat:
1. Notebook/laptop/Personal Computer
2. Web Browser
(Wokwi.com) Bahan:
1. Modul Praktikum
2. Arduino Nano
3. Seven Segment TM1637
4. Modul LCD Display
5. Kabel Jumper
PERHATIAN !
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
Setelah membuat project (menentukan board), klik pada library manager. Pada Icon
+, ketikkan library yang ingin digunakan yaitu Grove 4-Digit Display. Jika
muncul pilihan pada hasil pencarian, klik pada nama library. Library sudah
dapat digunakan.
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
9. Capture
void hasil
setup() { percobaan, lakukan analisis penggunaan TM1637 sebagai
// put your setup code here, to run
penampil
once: angka & karakter huruf dan
tm.init(); sertakan flowchart algoritma
program.
//set brightness;
0-7 tm.set(2);
}
void loop() {
// Menampilkan "12:ab"
// tm.display(position,
character); tm.display(0, 1);
tm.display(1, 2);
tm.point(1);
tm.display(2,
10);
tm.display(3,
11);
delay(1000);
// Menampilkan:
"1234"
displayNumber(1234);
delay(1000);
}
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
//set brightness;
0-7 tm.set(2);
}
void loop() {
tm.point(1);
tm.display(3, seconds % 10);
tm.display(2, seconds / 10 %
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
6. Verify/Compile Program & Upload program ke Board Arduino (Modul
LiquidCrystal_I2C lcd Klik
Praktikum) atau = LiquidCrystal_I2C(0x27, 16,
Tombol Play pada Wokwi.com, amati hasil
simulasi
2); int adc; percobaan.
float tegangan;
7. Hapuslah skrip program berikut, lakukan simulasi kemudian amati hasil
simulasi.
void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
lcd.print("Praktikum Unit 3");
lcd.setCursor(0, 1);
lcd.print("Mikrokontroler");
delay(1000); Hapus 2 baris
lcd.clear(); kode
}
8. Capture hasil percobaan, lakukan analisis penggunaan sketch program
void loop() {
adc diatas
= analogRead(A1);
dan sertakan flowchart algoritma program.
tegangan = float (adc) * 5 /
1023; lcd.setCursor(0, 0);
lcd.print("Percobaan LCD");
lcd.setCursor(0, 1);
lcd.print("ADC:");
lcd.print(adc);
lcd.setCursor(9,
1);
lcd.print("V:");
lcd.print(tegangan)
; delay(500);
lcd.clear();
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
3
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
Sketch program:
#include
<LiquidCrystal.h>
#define pin_tombol1 8
#define pin_tombol2 9
LiquidCrystal
lcd(2,7,3,4,5,6); boolean
kondisi=LOW;
String teks="";
void setup(){
pinMode(pin_tombol1,
INPUT_PULLUP);
pinMode(pin_tombol2,
INPUT_PULLUP); lcd.begin(16,2);
Serial.begin(38400);
lcd.print("Membuat Menu");
lcd.setCursor(0,1);
4
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
menu_dua:
tombol1=digitalRead(pin_tombol1);
tombol2=digitalRead(pin_tombol2);
if(tombol1==LOW)
{
lcd.clear();
goto
menu_satu;
delay(200);
}
if(tombol2==LOW)
{
intensitas+
+;
delay(200);
}
lcd.setCursor(0,0);
lcd.print("Pilih
4
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
PERTANYAAN
(Sertakan dalam Laporan Praktikum, dapat digabung dengan analisis ataupun dibuat
terpisah)
Apa fungsi dan bagaimana cara kerja dari script di atas, sehingga
dapat menghasilkan nilai tampilan yang dikehendaki ? (Lengkapi
dengan perhitungan dari simulasi nilai yang ditampilakan)
4
PRAKTIKUM UNIT 3
MIKROPROSESOR-MIKROKONTROLER DISPLAY SEVEN SEGMENT &
NAMA MAHASISWA :
NIM :
KELAS :
Yogyakarta, ……………………………
Mahasiswa Praktikan Dosen / Laboran / Asisten
(…………...………………………….) (……………………………………..…….)
CATATAN :
LEMBAR INI WAJIB DIBAWA SETIAP UNIT PRAKTIKUM, SEBAGAI
4 BUKTI PELAKSANAAN PRAKTIKUM !
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
PRAKTIKUM UNIT 4
TIMER/COUNTER
Teori Singkat
A. Timer/Counter
Timer/Counter adalah seperangkat pencacah biner (binary counter) yang
terhubung langsung ke saluran data mikrokontroler, sehingga mikrokontroler bisa
membaca kondisi pencacah dan bila diperlukan mikrokontroler dapat pula
merubah kondisi pencacah tersebut.
Saat sinyal clock yang diberikan sudah melebihi kapasitas pencacah, maka
pencacah akan memberikan sinyal overflow/limpahan. Limpahan pencacah ini
dicatat dalam suatu register.
Timer pada dasarnya hanya menghitung pulsa clock. Frequensi pulsa clock yang
dihitung tersebut sama dengan frequensi kristal yang dipasang atau dapat
diperlambat menggunakan prescaler dengan faktor 8, 64, 256 atau 1024.
Pada firmware Arduino semua timer memiliki konfigurasi frekuensi 1 kHz dengan
enable interrupt. Berikut ini timer khusus untuk Arduino.
Selain tiga pewaktu tersebut, terdapat juga Timer3, Timer4, dan Timer5,
semuanya 16 bit, untuk board Arduino Mega.
4
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
Register-register Timer :
4
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
Bit CS12, CS11, CS10 dalam TCCR1B menetapkan nilai prescaler. Prescaler
digunakan untuk mengatur kecepatan clock timer. Arduino Uno memiliki
prescaler 1, 8, 64, 256, 1024.
4
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
Keterangan:
Clock Speed – Clock Utama Mikrokontroler, 16 Mhz untuk Atmega 328 pada
arduino Uno dan Nano
Prescaler Value – nilai pembagi Clock Utama, yaitu faktor 8, 64, 256, atau 1024
Mode Normal - Timer digunakan untuk menghitung saja, membuat delay, menghitung
selang waktu.
CTC (clear timer on compare match) - Pada mode CTC, nilai timer yang ada
pada TCNTn akan dinolkan lagi jika TCNTn sudah sama dengan nilai yang
ada pada register OCRn, sebelumnya OCR diset dulu, karena timer 0 dan 2
maksimumnya 255, maka range OCR 0-255.
Fast PWM - Memberikan pulsa PWM frekuensi tinggi. Fast PWM berbeda
dengan mode PWM lain, fast PWM berdasarkan operasi single slope.
Counter menghitung dari BOTTOM hingga TP kemudian kembali lagi mulai
menghitung berawal dari BOTTOM.
4
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
B. Interupt (Interupsi)
Interupsi berguna untuk membuat sesuatu terjadi secara otomatis dalam
program mikrokontroler dan dapat membantu memecahkan masalah waktu.
Contoh penggunaan interupsi adalah membaca rotary encoder, atau memantau
masukan(input) pengguna. Menggunakan interupsi dapat membebaskan
mikrokontroler untuk menyelesaikan beberapa pekerjaan lain tanpa kehilangan
input. Interupsi dianalogikan sebagai perintah program dengan prioritas tinggi,
sehingga pada saat terjadi interpusi atau sistem menerima sinyal dari fitur
interupsi, maka akan di eksekusi lebih dahulu kemudian kembali ke rutin program
seperti sediakala. Fitur Timer diatas juga salah satu bagian dari interupsi, selain
timer terdapat interupsi eksternal melalui pin khusus yang ada di mikrokontroler
seperti pada tabel di bawah ini
Syntax
Parameters
interrupt: the number of the interrupt. Tipe data yang diperbolehkan int.
4
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
ISR: ISR untuk memanggil ketika interupsi terjadi; fungsi ini tidak boleh mengambil parameter
dan tidak mengembalikan apa pun. Fungsi ini kadang-kadang disebut sebagai rutinitas
layanan interupsi (interrupt service routine).
mode: menentukan kapan interupsi harus dipicu.Empat konstanta telah ditentukan sebelumnya
sebagai nilai yang valid:
ISR dalam hal ini dipanggil dari sebuah fungsi void blink(), sehigga setiap sinyal
interupsi yang diterima dengan mode CHANGE, akan mengaktifkan fungsi void
blink().
4
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
Tujuan Praktikum
1. Mahasiswa mampu memahami prinsip kerja dan cara kerja counter serta
fitur interupt (interupsi) pada mikrokontroler.
2. Mahasiswa mampu memahami prinsip kerja dan cara kerja fitur timer
(tanpa delay) pada mikrokontroler.
Bahan:
1. Modul Praktikum
2. Arduino Nano
3. Tombol
4. Lampu LED
5. Resistor
6. Kabel Jumper
PERHATIAN !
Langkah Percobaan:
1. Siapkan Alat dan Bahan serta catat spesifikasinya.
2. Buatlah rangkaian seperti skematik di bawah ini:
4
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
Pin Arduino
Komponen I/O Nano/Uno
Tombol 1 Pin D7
Tombol 2 Pin D6
LED 1 Pin D13
LED 2 Pin D12
LED 3 Pin D11
4
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
void setup()
{
Serial.begin(9600)
; pinMode(13,
OUTPUT);
pinMode(12,
OUTPUT);
pinMode(11,
OUTPUT);
pinMode(plus_state,
INPUT_PULLUP);
pinMode(minus_state,
INPUT_PULLUP);
}
void loop()
{
int tombol_plus= digitalRead(plus_state);
int tombol_minus=
digitalRead(minus_state);
if(tombol_plus==LOW){
nilai_counter++;
}
else
if(tombol_minus==LOW){
nilai_counter--;
}
if(nilai_counter>6){
nilai_counter=0;
}
if(nilai_counter>4){
digitalWrite(13,
HIGH);
digitalWrite(12,
LOW);
digitalWrite(11,
LOW);
}
5
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
5
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
const int
4. Verify/Compile Program & Upload program ke Board Arduino (Modul
interupt_pin=2; int
Praktikum) atau Jalankan
nilai_counter=0; simulasi thinkerCAD (Web browser –
ThinkerCAD)
void setup()
5. {Buka Tab serial monitor pada Arduino IDE / ThinkerCAD untuk melihat data
Serial.begin(9600)
6. Ambil Data Mode CHANGE dan isikan pada tabel berikut:
; pinMode(13,
OUTPUT);
pinMode(12,
OUTPUT);
pinMode(11,
OUTPUT);
pinMode(interupt_pin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interupt_pin),
counter_eksternal, CHANGE);
}
void loop(){
if(nilai_counter>4){
digitalWrite(13,
HIGH);
digitalWrite(12,
LOW);
digitalWrite(11,
LOW);
}
5
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
Mode: CHANGE
Kondisi [State] LED State Dokumentasi
No Data Counter
Tombol Interupsi (ON/OFF) LED (ON/OFF)
1 Tekan
2 Lepas
3 Tekan
4 Lepas
5 Tekan
6 Lepas
7 Tekan
8 Lepas
9 Tekan
10 Lepas
Mode: FALLING
Kondisi [State] LED State Dokumentasi
No Data Counter
Tombol Interupsi (ON/OFF) LED (ON/OFF)
1 Tekan
2 Lepas
3 Tekan
4 Lepas
5 Tekan
6 Lepas
7 Tekan
8 Lepas
9 Tekan
10 Lepas
5
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
Pin Arduino
Komponen I/O Nano/Uno
Tombol 1 Pin D7
Tombol 2 Pin D6
LED 1 Pin D13
5
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
void setup()
{
Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(7,INPUT_PULLUP); pinMode(6
noInterrupts(); interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = value; // disable all
TCCR1B |= (1 << CS10)|(1 << CS12); TIMSK1 |= (1 << TOIE1);
interrupt ISR interrupts();
// preload timer
// 1024 prescaler
// enable timer overflow
{
TCNT1 = value;// preload
timer
digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
}
void loop()
{
if(digitalRead(7) == LOW)
{
value = value+1000; //Incement preload value
}
if(digitalRead(6)== LOW)
{
value = value-1000;//Decrement preload value
}
Serial.print("TCNT1= "); Serial.print(TCNT1); Serial.print(" "); Serial.print(
5
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
Set
Interval Timer (Detik)
Preloader
Set Preloader = (65535 - ((16x10^6 Hz x Interval Timer)/Prescaler)
Nilai LED State
Detik (Stopwatch) Nilai TCNT
Preloader (ON/OFF)
1
2
3
4
5
6
7
8
9. Ambil 2 atau 3 Interval Waktu untuk analisa data dan cara kerja timer
dalam bentuk tabel seperti pada data pertama
5
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
Sketch program:
noInterrupts(
); TCCR1A =
0;
TCCR1B = 0;
TCNT1 = preloader_timer;
TCCR1B |= (1 << CS10) | (1 <<
CS12); TIMSK1 |= (1 << TOIE1);
interrupts();
}
ISR(TIMER1_OVF_vect)
{
TCNT1 =
preloader_timer;
detik++;
digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
}
void loop() {
5
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
5
PRAKTIKUM UNIT 4
MIKROPROSESOR-MIKROKONTROLER TIMER
NAMA MAHASISWA :
NIM :
KELAS :
Yogyakarta, ……………………………
Mahasiswa Praktikan Dosen / Laboran / Asisten
(…………...………………………….) (……………………………………..…….)
CATATAN :
LEMBAR INI WAJIB DIBAWA SETIAP UNIT PRAKTIKUM, SEBAGAI
5 BUKTI PELAKSANAAN PRAKTIKUM !