Modul Mikrokontroller 2023
Modul Mikrokontroller 2023
MIKROKONTROLLER
ARDUINO
Oleh:
TIM Laboratorium Mikrokontroller
LABORATORIUM MIKROKONTROLLER
JURUSAN TEKNOLOGI ELEKTRO-MEDIS
POLTEKKES KEMENKES SURABAYA
2023
PENGANTAR
Laboratorium Mikrokontroler
Gambar P3. Modul Multifunction Shield
Laboratorium Mikrokontroler
MATERI PRAKTIKUM
1 Kontrak Perkuliahan
2 LED&Switch
3 7 Segment
4 LCD Karakter 16x2
5 ADC
6 Servo
7 DHT11
8 Ujian Tengah Semester
9 PWM
10 Komunikasi Serial
11 Timer Interrupt (Counter)
12 Timer Interrupt (Timer)
13 Progres Projek
14 Progres Projek
15 Penilaian Projek
16 Ujian Akhir Semenster
Laboratorium Mikrokontroler
BAB 1
LED DAN SW
1.1. Tujuan
Mahasiswa 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 setup(){
Serial.begin(9600);
// LED Setup
pinMode(LED1, OUTPUT);
}
void loop(){
// LED OFF
digitalWrite(LED1, HIGH);
delay(1000);
// LED ON
digitalWrite(LED1, LOW);
delay(1000);
}
void loop(){
// LED OFF
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
delay(1000);
// LED ON
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
delay(1000);
}
void loop(){
if(digitalRead(A1) == LOW){
// turn LED on:
digitalWrite(13, LOW);
}
else if(digitalRead(A1) == HIGH){
// turn LED off:
digitalWrite(13, HIGH);
}
}
Laboratorium Mikrokontroler
Listing Program:
Listing Program:
Listing Program:
Laboratorium Mikrokontroler
Lembar kerja no.4: Rencanakan program apabila SW 1 ditekan maka LED D1 dan D2
akan menyala sedangkan D3 dan D4 mati. apabila saat SW 2 ditekan maka D1 dan D2
mati sedangkan D3 dan D4 menyala
Gambar rangkaian:
Listing Program:
Laboratorium Mikrokontroler
BAB 2
7 SEGMENT
2.1. Tujuan
Mahasiswa mampu menggunakan mikrokontroller Arduino untuk
mengendalikan display 7 segmen common anoda.
Digit 1 Digit 2 Digit 3 Digit4
2.2. Skematik
(a) (b)
Gambar 3.2. (a) Rangkaian common katoda dan (b)
Rangkaian common anoda
Laboratorium Mikrokontroler
/* Segment byte maps for numbers 0 to 9 */
const byte SEGMENT_MAP[] = {0xF9};
/* Byte maps to select digit 1 to 4 */
const byte SEGMENT_SELECT[] = {0xF1};
void setup(){
/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
}
/* Main program */
void loop(){
/* Update the display with the current counter value */
WriteNumberToSegment(0 , 0);
}
/* Write a decimal number between 0 and 9 to one of the 4 digits of the display */
void WriteNumberToSegment(byte Segment, byte Value){
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}
Listing program 2: Mencetak tulisan angka “1” dan “2” pada 7 segmen digit ke “1” dan
“2”
void setup(){
/* Set DIO pins to outputs */
pinMode(LATCH_DIO,OUTPUT);
pinMode(CLK_DIO,OUTPUT);
pinMode(DATA_DIO,OUTPUT);
}
/* Main program */
void loop(){
/* Update the display with the current counter value */
WriteNumberToSegment(0 , 0);
WriteNumberToSegment(1 , 1);
Laboratorium Mikrokontroler
}
/* Write a decimal number between 0 and 9 to one of the 4 digits of the display */
void WriteNumberToSegment(byte Segment, byte Value){
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}
Listing Program:
Lembar kerja no.2: Rencanakan program untuk cetak huruf A, b, C, d pada 7 segmen
Gambar rangkaian:
Listing Program:
Lembar kerja no.3: Rencanakan program untuk cetak huruf pada 7 segmen , cetak
huruf A,B,C,D bila SW1 ditekan, cetak angka 0,1,2,3 bila SW2 ditekan.
Gambar rangkaian:
Laboratorium Mikrokontroler
Listing Program:
Lembar kerja no.4: Rencanakan program untuk cetak huruf pada 7 segmen, cetak
singkatan nama kalian bila SW1 ditekan, cetak 4 angka terakhir NIM kalian bila SW2
ditekan, cetak huruf b,I,L,a bila SW3 ditekan dan cetak angka 2,0,2,3 bila SW4 ditekan
Gambar rangkaian:
Listing Program:
Laboratorium Mikrokontroler
BAB 3
LCD KARAKTER 2 X 16
3.1. Tujuan
Mahasiswa mampu menggunakan mikrokontroller Arduino untuk
mengoperasikan LCD karakter 2x16
3.2. Skematik
Laboratorium Mikrokontroler
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup(){
// initialize the LCD
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
}
void loop(){
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:
Laboratorium Mikrokontroler
Lembar kerja no.3: Rencanakan program untuk cetak huruf P, Q, R secara berurutan
pada LCD Karakter masing-masing dengan menggunakan tombol SW1 saja.
Gambar rangkaian:
Listing Program:
Laboratorium Mikrokontroler
BAB 4
ADC
4.1. Tujuan
Mahasiswa mampu menggunakan ADC pada mikrokontroller Arduino
menggunakan potensiometer pada shiled modul dengan tampilan ke 7
Segment.
4.2. Skematik
#define Pot1 0
int angka =0;
int PotValue;
void loop(){
PotValue = analogRead(Pot1);
WriteNumberToSegment(0 , PotValue / 1000);
WriteNumberToSegment(1 , (PotValue / 100) % 10);
Laboratorium Mikrokontroler
Listing program: Rencanakan program untuk mengambil tegangan analog A0 dan
ditampilkan pada 7 Segment
WriteNumberToSegment(2 , (PotValue / 10) % 10);
WriteNumberToSegment(3 , PotValue % 10);
}
void WriteNumberToSegment(byte Segment, byte Value){
digitalWrite(LATCH_DIO,LOW);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
digitalWrite(LATCH_DIO,HIGH);
}
Listing Program:
Lembar kerja no.2: Rencanakan program untuk mengambil tegangan analog A0 dan
ditampilkan pada 7 Segment dan serial monitor, dengan keadaan awal 7 Segment
kosong (blank), ketika switch 1 (pin A1) dapat menampilkan nilai ADC.
Gambar rangkaian:
Listing Program:
Laboratorium Mikrokontroler
Lembar kerja no.3: Rencanakan program untuk mengambil tegangan analog A0 dan
ditampilkan pada 7 Segment dan serial monitor, dengan keadaan awal 7 Segment
menampilkan nilai ADC, ketika nilai ADC <500 buzzer berbunyi
Gambar rangkaian:
Listing Program:
Lembar kerja no.4: Rencanakan program untuk mengambil tegangan analog A0 dan
ditampilkan pada 7 Segment, dengan keadaan awal 7 Segment menampilkan nilai
ADC, ketika nilai ADC >650 buzzer berbunyi. Ketika switch 3 (pin A3) ditekan, buzzer
berhenti berbunyi (walaupun nilai ADC >650).
Gambar rangkaian:
Listing Program:
Laboratorium Mikrokontroler
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
void setup() {
Servo1.attach(servoPin);
}
void loop() {
Servo1.write(0);
delay(1500);
Servo1.write(180);
delay(1500);
Laboratorium Mikrokontroler
}
void setup() {
Servo1.attach(servoPin);
}
void loop() {
adc=analogRead(0);
adcmap=map(adc, 0, 1023, 0, 180);
Servo1.write(adcmap);
}
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:
Laboratorium Mikrokontroler
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)
void setup() {
Serial.begin(9600);
}
void loop() {
float kelembaban = dht.readHumidity(); //menyimpan nilai Humidity pada
variabel kelembaban
float suhu = dht.readTemperature(); //menyimpan nilai Temperature pada
variabel suhu
serial.print(“Kelembapan : ”);
Laboratorium Mikrokontroler
serial.print(kelembaban);
serial.print(“Suhu : ”);
serial.println(suhu);
}
Listing Program:
Listing Program:
Laboratorium Mikrokontroler
Listing Program:
Laboratorium Mikrokontroler
BAB 7
PWM
7.1. Tujuan:
Mahasiswa mampu menggunakan fungsi PWM (pulse width modulation) untuk
mengendalikan daya pada LED.
Laboratorium Mikrokontroler
7.3. Listing Program
Listing program: rencanakan program untuk mengendalikan LED menggunakan
PWM sehingga nyala LED mulai dari redup menuju ke terang.
//Initializing LED Pin
int led_pin = 6;
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:
Lembar kerja no.2: rencanakan program PWM untuk mengendalikan terang redup
LED 1 dan LED 2 masing-masing dengan menggunakan ADC channel 0 dan channel
5 dengan potentiometer yang telah tersedia.
Gambar rangkaian:
Listing Program:
Laboratorium Mikrokontroler
BAB 8
SERIAL KOMUNIKASI (HC-05)
2.1. Tujuan
Mahasiswa mampu menggunakan mikrokontroller Arduino untuk
mengirimkan data melalui Bluetooth
2.2. Materi
Laboratorium Mikrokontroler
Tabel 2.1. Contoh AT COMMAND
Fungsi COMMAND
1. To return HC-05 to default settings: AT+ORGL AT+VERSION?
AT+NAME=MYBLUE
2. To get version of your HC-05 enter:
3. To change device name from the default AT+PSWD=2987
HC-05 to let's say MYBLUE enter:
4. To change default security code from
1234 to 2987 enter: AT+UART=115200,1,0
5. To change HC-05 baud rate from
default 9600 to 115200, 1 stop bit, 0
parity enter: AT+ROLE=0
6. To change role of bluetooth module (1=master/0=slave)
D9 To KEY
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
void setup()
{
pinMode(9, OUTPUT); // this pin will pull the HC-05 pin 34 (key pin)
HIGH to switch module to AT mode
digitalWrite(9, HIGH);
Serial.begin(9600); Serial.println("Enter
AT commands:");
BTSerial.begin(38400); // HC-05 default speed in AT command more
}
void loop(){
// Keep reading from HC-05 and send to Arduino Serial Monitor
if (BTSerial.available())
Serial.write(BTSerial.read());
// Keep reading from Arduino Serial Monitor and send to HC-05
if (Serial.available())
BTSerial.write(Serial.read());
}
Laboratorium Mikrokontroler
2.1. Percobaan Kendali LED melalui mobile phone
Pada percobaan ini akan dibuat sebuah komunikasi wireless
menggunakan koneksi bluetooth, dengan menggunakan Arduino
Nano dan Bluetooth HC05 atau HC06. Pada percobaan ini, sebuah
LED (BUILTIN) yang terhubung ke D13 pin Arduino akan
dikendalikan (ON/ OFF) melalui komunikasi bluetooth antara
bluetooth mobile phone dan bluethooth HC05.
1. Lakukan instalasi bluetooth terminal (dari: electrotoolbox)
melalui Google Play Store. Sebelum menghubungkan Arduino
dan bluetooth, perhatikan pin-pin sebagaimana yang
ditunjukkan pada Gambar 2.1.
Laboratorium Mikrokontroler
Table 2.3. Hubungan antara board Arduino dan Bluetooth module
Laboratorium Mikrokontroler
#include <SoftwareSerial.h>
SoftwareSerial BT(10, 11);
// creates a "virtual" serial port/UART
// connect BT module TX to D10
// connect BT module RX to D11
// connect BT Vcc to 5V, GND to GND
void setup(){
// set digital pin to control as an output
pinMode(13, OUTPUT);
// set the data rate for the SoftwareSerial port
BT.begin(9600);
// Send test message to other device
BT.println("Hello, This is from Arduino");
BT.println("Press 1=ON; 2=OFF");
}
char a; // stores incoming character from other
device void loop(){
if (BT.available())
// if text arrived in from BT serial...
{
a=(BT.read());
if (a=='1')
{
digitalWrite(13, HIGH);
BT.println ("LED on");
}
if (a=='2')
{
digitalWrite(13, LOW);
BT.println("LED off");
}
if (a=='?')
{
BT.println("Send '1' to turn LED on");
BT.println("Send '2' to turn LED on");
}
// you can add more "if" statements with other characters
}
}
Laboratorium Mikrokontroler
4. Jalankan program bluetooth terminal (from: ELECTROTOOLBOX)
pada smart phone anda (a), pilih pada menu Bluetooth devices
untuk memilih device HC05 yang sudah terkoneksi ke Arduino
untuk proses PAIRING (b). Tekan tombol reset pada Arduino
NANO,untuk memulai komunikasi sehingga akan muncul
tampilan seperti yang ditunjukkan pada Gambar 2.2 (c).
Laboratorium Mikrokontroler
BAB 9
TIMER INTERRUPT (COUNTER)
9.1 Tujuan:
Mahasiswa mampu menggunakan fungsi TIMER pada microcontroller
Arduino untuk mendeteksi clock yang masuk pada pin (4) atau (5).
Laboratorium Mikrokontroler
Gambar 9.3. Register TCCR0B
Laboratorium Mikrokontroler
9.2. Skematik
Laboratorium Mikrokontroler
9.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 mengambil data dari COUNTER 0
dan menampilkan ke LCD Karakter. Hubungkan rangkaian pembangkit oscillator
dengan IC 555. Program akan menampilkan data mulai dari 255 ke 0.
Gambar rangkaian:
Listing Program:
Lembar kerja no.2: rencanakan program untuk mengambil data dari COUNTER 0
dan menampilkan ke LCD Karakter. Hubungkan rangkaian pembangkit oscillator
dengan IC 555. Program akan menampilkan data mulai dari 100 ke 255.
Gambar rangkaian:
Listing Program:
Lembar kerja no.3: rencanakan program untuk mengambil data dari COUNTER 1
dan menampilkan ke LCD Karakter. Hubungkan rangkaian pembangkit oscillator
dengan IC 555. Program akan menampilkan data mulai dari 0 ke 65535.
Gambar rangkaian:
Listing Program:
Laboratorium Mikrokontroler
Lembar kerja no.4: rencanakan program untuk mengambil data dari COUNTER 1
dan menampilkan ke LCD Karakter. Hubungkan rangkaian pembangkit oscillator
dengan IC 555. Program akan menampilkan data mulai dari 0 ke 65535 dan
mencacah turun 65535 ke 0, setelah itu berhenti
Gambar rangkaian:
Listing Program:
Laboratorium Mikrokontroler
BAB 10
TIMER INTERRUPT (TIMER)
10.1. Tujuan
Mahasiswa memahami fungsi timer interrupt pada Arduino
10.2. Register TIMER 1
Laboratorium Mikrokontroler
Gambar 9.2. Pemilihan sumber clock untuk TIMER1
Laboratorium Mikrokontroler
10.3. Listing Program
Listing Program: rencanakan program mengedipkan LED yang terhubung ke PIN
13. Berkedip dengan frekuensi 2 Hz.
#define ledPin 13
void setup(){
pinMode(ledPin, OUTPUT);
// initialize Timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 34286; // preload timer 65536-16MHz/256/2Hz
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << TOIE1); // enable timer overflow interrupt
interrupts(); // enable all interrupts
}
void loop(){
// your program here…
}
Listing Program:
Laboratorium Mikrokontroler
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:
Laboratorium Mikrokontroler