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
R 18 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");
}
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
Gambar 4.1. Konektor yang menghubungkan ke ADC Arduino (channel 0
atau channel 5)
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:
Listing Program:
Lembar kerja no.4: Rencanakan program untuk mengambil tegangan
analog A0 dan ditampilkan pada 7 segmen pada saat tombol SW1 ditekan.
Pada saat tombol belum ditekan maka tampilan 7 segmen BLANK (mati).
Gambar rangkaian:
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:
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:
Listing Program:
Lembar kerja no.4: rencanakan program pembacaan sensor DHT11
pada untuk parameter SUHU ke LCD karakter. Bila suhu diatas 40 maka
akan muncul tulisan di LCD karakter “SUHU LEBIH” dan bila dibawah 40
maka akan muncul tulisan “Kelembaban NORMAL”.
Gambar rangkaian:
Listing Program:
Listing Program:
BAB 7
PWM
7.1. Tujuan:
Mahasiswa mampu menggunakan fungsi PWM (pulse width modulation)
untuk mengendalikan daya pada LED.
Gambar 7.1. Duty cycle pada PWM
7.2. Skematik
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);
}
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).
Gambar 8.1. Prescaler untuk Timer/Counter 0 dan 1
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:
BAB 9
TIMER INTERRUPT (TIMER)
9.1. Tujuan
Mahasiswa memahami fungsi timer interrupt pada Arduino
9.2. Register TIMER 1
Gambar 9.1. Register TCCR1A
Gambar 9.2. Pemilihan sumber clock untuk TIMER1
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 mengedipkan LED yang
terhubung ke PIN 0, berkedip dengan frekuensi 1 Hz, gunakan TIMER0
dan kedipkan LED yang terhubung ke PIN 1, berkedip dengan frekuensi 2
Hz, gunakan TIMER1.
Gambar rangkaian:
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)