MIKROKONTROLLER
ARDUINO
Oleh:
TIM Laboratorium Mikrokontroller
LABORATORIUM MIKROKONTROLLER
JURUSAN TEKNIK ELEKTROMEDIK
POLTEKKES KEMENKES SURABAYA
2019
PENGANTAR
1.1. Tujuan
Mehasiswa mampu menggunakan Arduino untuk mengendalikan LED
melalui saklar push button.
1.2. Skematik
(a) (b)
Gambar 1.1. (a) Rangkaian koneksi LED dan (b) Rangkaian koneksi Saklar
SW
void loop()
{
digitalWrite(2, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(3, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(2, LOW); // turn the LED off by making the voltage LOW
digitalWrite(3, LOW); // turn the LED off
delay(1000); // wait for a second
}
void loop()
{
if (digitalRead(9) == LOW)
{
// turn LED on:
digitalWrite(2, HIGH);
}
else if (digitalRead(9) == HIGH)
{
// turn LED off:
//digitalWrite(2, LOW);
}
}
1.4. Lembar Kerja Praktikum
Lakukan kegiatan praktikum sesuai dengan lembar kerja berikut, salin
LISTING PROGRAM hasil percobaan tersebut dengan tulisan tangan (masing-
masing dikerjakan perorangan) lembar kertas F4. Beri nama, NIM, kelompok
praktek.
Lembar kerja no.1: Rencanakan program untuk mengedipkan 4 buah LED
secara terus menerus pada D0, D1, D2, D3
Gambar rangkaian : (contoh)
R3 D1
D0
220 LED
R4 D2
D1
220 LED
R5 D3
D2
220 LED
R18 D4
D3
220 LED
0
Listing Program:
Listing Program:
Lembar kerja no.3: Rencanakan program untuk mengendalikan dua buah
LED D0, D1 masing-masing dengan menggunakan S1 dan S2.
Gambar rangkaian:
Listing Program:
Listing Program:
BAB 2
7 SEGMEN
2.1. Tujuan
Mahasiswa mampu menggunakan mikrokontroller Arduino untuk
mengendalikan display 7 segmen common anoda.
2.2. Skematik
Digit 4
Digit 3
Digit 2
Digit 1
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(A1, 1);
digitalWrite(A2, 1);
digitalWrite(A3, 1);
digitalWrite(A4, 0);
//
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
}
Listing program 2: Mencetak tulisan angka “1” dan “2” pada 7 segmen digit
ke “1” dan “2”
void setup() {
// put your setup code here, to run once:
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(A1, 1);
digitalWrite(A2, 1);
digitalWrite(A3, 1);
digitalWrite(A4, 0);
//
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
//
delay(200);
digitalWrite(A1, 1);
digitalWrite(A2, 1);
digitalWrite(A3, 0);
digitalWrite(A4, 1);
//
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 0);
//
delay(200);
}
Listing Program:
Listing Program:
Lembar kerja no.3: Rencanakan program untuk cetak huruf pada 7
segmen 1, cetak karakter A bila SW1 ditekan, cetak huruf b bila SW2
ditekan.
Gambar rangkaian:
Listing Program:
Listing Program:
BAB 3
LCD KARAKTER 2 X 16
3.1. Tujuan
Mahasiswa mampu menggunakan mikrokontroller Arduino untuk
mengoperasikan LCD karakter 2x16
3.2. Skematik
void loop() {
// put your main code here, to run repeatedly:
lcd.setCursor(0,1);
lcd.print("MIKROKONTROLLER");
}
3.4. Lembar Kerja Praktikum
Lakukan kegiatan praktikum sesuai dengan lembar kerja berikut, salin
LISTING PROGRAM hasil percobaan tersebut dengan tulisan tangan (masing-
masing dikerjakan perorangan) lembar kertas F4. Beri nama, NIM, kelompok
praktek.
Lembar kerja no.1: Rencanakan program untuk cetak angka 1, 2, 3 dan 4
pada lcd karakter yang masing-masing pada lokasi (0,0); (16,0); (0,1); dan
(16,1).
Gambar rangkaian:
Listing Program:
Lembar kerja no.2: Rencanakan program untuk cetak huruf “A”, bila SW1
ditekan, cetak huruf “B” bila SW2 ditekan.
Gambar rangkaian:
Listing Program:
Listing Program:
Lembar kerja no.4: Rencanakan program untuk cetak huruf P pada LCD
Karakter, bila SW1 ditekan maka karakter akan bergeser ke kanan dan bila
SW2 ditekan maka karakter akan bergeser ke kiri. (Gunakan fungsi shift di
library LCD)
Gambar rangkaian:
Listing Program:
Lembar kerja no.5: Rencanakan program untuk cetak huruf P pada LCD
Karakter, bila SW2 ditekan maka karakter akan bergeser ke kanan dan bila
SW3 ditekan maka karakter BLANK. (Gunakan fungsi shift di library LCD)
Gambar rangkaian:
Listing Program:
BAB 4
ADC
4.1. Tujuan
Mahasiswa mampu menggunakan ADC pada mikrokontroller Arduino
dengan menggunakan tampilan ke LCD atau 7 Segmen.
4.2. Skematik
void setup() {
// put your setup code here, to run once:
lcd.begin(16,2);
}
void loop() {
// put your main code here, to run repeatedly:
sensorValue = analogRead(0);// A0
lcd.setCursor(0,0);
lcd.print("Value is");
lcd.setCursor(10,0);
lcd.print(sensorValue);
delay(50);
lcd.clear();
sensorValue = analogRead(5);
lcd.setCursor(0,1);
lcd.print("Value is");
lcd.setCursor(10,1);
lcd.print(sensorValue);
delay(50);
lcd.clear();
}
Listing Program:
Listing Program:
Lembar kerja no.3: Rencanakan program untuk mengambil tegangan
analog A0 dan ditampilkan pada 7 segmen.
Gambar rangkaian:
Listing Program:
Listing Program:
Listing Program:
BAB 5
SERVO
5.1. Tujuan
Mahasiswa mampu mengoperasikan motor servo dengan menggunakan
mikrokontroller Arduino
5.2. Skematik
(a) (b)
(c)
Gambar 5.1. (a) pin pada PCB, (b) modul fisik, dan (c) konfigurasi pin
Listing Program:
Lembar kerja no.2: Rencanakan program untuk mengambil tegangan
analog A0, gunakan tegangan analog ini untuk mengatur posisi servo putar
kanan atau kiri. Jika dataADC>500 maka servo putar kanan, dan jika
dataADC<500 maka servo akan putar kiri.
Gambar rangkaian:
Listing Program:
BAB 6
DHT 11
6.1 Tujuan
Mahasiswa mampu menggunakan mikrokontroller Arduino untuk
melakukan pengukuran kelembaban dan suhu dengan sensor DHT11.
6.2. Skematik
(a) (b)
Gambar 6.1. (a) koneksi ke board dan (b) koneksi ke pin
void loop()
{
float kelembaban = dht.readHumidity(); //menyimpan nilai Humidity pada
variabel kelembaban
float suhu = dht.readTemperature(); //menyimpan nilai Temperature pada
variabel suhu
lcd.setCursor(0, 0);
lcd.print("Humidity: ");
lcd.setCursor(15, 0);
lcd.print("%");// print a message
lcd.setCursor(10, 0);
lcd.print(kelembaban);
lcd.setCursor(0, 1);
lcd.print("Temp: "); // print a message
lcd.setCursor(12, 1);
lcd.print("C");
lcd.setCursor(6, 1);
lcd.print(suhu);
}
Listing Program:
Listing Program:
Lembar kerja no.3: rencanakan program pembacaan sensor DHT11 pada
untuk parameter KELEMBABAN ke LCD karakter. Bila kelembaban diatas
60 maka akan muncul tulisan di LCD karakter “Kelembaban LEBIH” dan
bila dibawah 60 maka akan muncul tulisan “Kelembaban NORMAL”.
Gambar rangkaian:
Listing Program:
Listing Program:
Listing Program:
BAB 7
PWM
7.1. Tujuan:
Mahasiswa mampu menggunakan fungsi PWM (pulse width modulation)
untuk mengendalikan daya pada LED.
void setup() {
//Declaring LED pin as output
pinMode(led_pin, OUTPUT);
}
void loop() {
//Fading the LED
for(int i=0; i<255; i++){
analogWrite(led_pin, i);
delay(5);
}
void setup() {
pinMode(led_pin, OUTPUT);
}
void loop() {
//Reading from potentiometer
output = analogRead(pot_pin);
//Mapping the Values between 0 to 255 because we can give output
//from 0 -255 using the analogwrite funtion
led_value = map(output, 0, 1023, 0, 255);
analogWrite(led_pin, led_value);
delay(1);
}
7.4. Lembar Kerja Praktikum
Lakukan kegiatan praktikum sesuai dengan lembar kerja berikut, salin
LISTING PROGRAM hasil percobaan tersebut dengan tulisan tangan (masing-
masing dikerjakan perorangan) lembar kertas F4. Beri nama, NIM, kelompok
praktek.
Lembar kerja no.1: rencanakan program PWM untuk mengendalikan
terang redup sebuah LED. Bila SW1 ditekan maka LED akan semakin
terang dan sebaliknya bila SW2 ditekan maka LED akan semakin redup.
Gambar rangkaian:
Listing Program:
Listing Program:
BAB 8
TIMER INTERRUPT (COUNTER)
8.1 Tujuan:
Mahasiswa mampu menggunakan fungsi TIMER pada microcontroller
Arduino untuk mendeteksi clock yang masuk pada pin (4) atau (5).
8.2. Skematik
Gambar 8.1. Konfigurasi pin pada Arduino nano (ATMEGA328)
#include <LiquidCrystal.h>
LiquidCrystal lcd(16, 17, 18, 20, 21, 22, 23); // lcd initialization
int data; // variable to read sensor value
void setup()
{
Listing Program:
Listing Program:
Listing Program:
Listing Program:
BAB 9
TIMER INTERRUPT (TIMER)
9.1. Tujuan
Mahasiswa memahami fungsi timer interrupt pada Arduino
9.2. Register TIMER 1
void setup()
{
pinMode(ledPin, OUTPUT);
// initialize Timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
void loop()
{
// your program here…
}
Listing Program:
Lembar kerja no.2: rencanakan program jam digital untuk bagian DETIK
saja dengan menggunakan sistem interupsi TIMER1. Tampilkan hitungan
detik dari 00 sd. 59 selanjutnya akan kembali lagi ke 00.
Gambar rangkaian:
Listing Program:
BAB 10
TIMER INTERRUPT (EXTERNAL)