Modul III
Modul III
MIKROPROSESOR
MODUL III : KOMUNIKASI 12C, DIGITAL SENSOR DAN
KEYPAD
DISUSUN OLEH :
Yulianto Tri Atmojo
(18101107)
Partner Praktikum :
1. Wulan Tarru’ P (18101106)
2. Zianatul Khoeriyah (18101108)
Tanggal Praktikum : 14 Mei 2020
Asisten Praktikum :
1. Muhammad Alwi Adnan (17101066)
2. Melia Mispriatin (17101146)
3. Wahyu Junianto (17101121)
I. TUJUAN
1. Praktikan mampu memahami ap aitu komunikasi 12C dan mencari alamat dari
perangkat yang menggunakan komunikasi 12C
2. Praktikan mampu menambahkan sebuah library pada Arduino IDE
3. Praktikan mampu mengakses sebuah sensor digital DHT 11
4. Praktikan mampu membuat program sederhana yang memanfaatkan keypad 4X4
dan LCD 16X2.
2. DHT11
Untuk membaca atau mengetahui nilai temperature (suhu) biasanya kita
memakai thermometer. Jika pada aplikasi Arduino biasanya kita gunakan sensor
suhu LM35 seperti pada artikel “6 Channel Sensor Suhu dengan Arduino” .
Sedangkan untuk membaca besaran kelembaban udara, kita memakai alat
Higrometer, dan pada aplikasi Arduino biasanya memakai sensor DHT11, selain
murah harganya juga mudah diperoleh di toko – toko komponen elektronik. Ada
sih tipe yang lain seperti SHT11 atau DHT22. Kali ini kita pelajari dulu sensor
suhu dan kelembaban DHT11 dengan Arduino. Ya, selain dapat membaca
kelembaban, DHT11 juga mampu membaca temperatur linkungan.
Spesifikasi sensor suhu kelembaban DHT11 :
Tegangan input : 3,5 – 5 VDC
Sistem komunikasi : Serial (single – Wire Two way)
Range suhu : 00C – 500C
Range kelembaban : 20% – 90% RH
Akurasi : ±20C (temperature) ±5% RH (humidity) [2]
#include <LiquidCrystal.h>
LiquidCrystal LCD(12, 11, A5, A4, A3, A2);
void setup()
{ LCD.begin(16, 2);
LCD.print("hello, world!");
} void loop()
{
int tmp = analogRead(A0);
float voltage = (tmp * 5.0)/1024;
float milliVolt = voltage * 1000;
float tmpCel = (milliVolt-500)/10 ;
LCD.clear();
LCD.setCursor(0, 0);
LCD.print("Suhu:");
LCD.print(tmpCel);
LCD.print("C");
delay(1000);
}
Percobaan 2:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, A5, A4, A3, A2);
void setup()
{
lcd.begin(16, 2);
lcd.print("hello, world!");
}
void loop(){
int tmp = analogRead(A0);
float voltage = (tmp * 5.0)/1024;
float milliVolt = voltage * 1000;
float tmpCel = (milliVolt-500)/10 ;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu : ");
lcd.print(tmpCel);
lcd.print(" C");
delay(1000);
}
Percobaan 3 :
#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, A5, A4, A3, A2);
const byte ROWS = 4; // 4 Baris
const byte COLS = 4; // 4 Kolom
char keys[ROWS][COLS] = {
//Mendefinisikan char key sesuai dengan peta
posisi keypad
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {7, 6, 5, 4};
//Untuk Pin Baris Keypad
byte colPins[COLS] = {3, 2, 1, 0};
//Untuk Pin Kolom Keypad
Keypad keypad = Keypad( makeKeymap(keys),
rowPins, colPins, ROWS, COLS );
// Menginisialisasi atau menghubungkan tombol
keypad dengan keypad yang sudah didefinisikan
sebelumnya
void setup()
{
lcd.begin(16,2);
lcd.setCursor(0, 0);
lcd.print("Key Is : ");
}
void loop()
{
char key = keypad.getKey();
if (key)
{
lcd.setCursor(9, 0);
lcd.print(key);
}
}
Percobaan 4 :
Pada percobaan kedua, praktikan melakukan akses digital sensor DHT 11.
Rangkaian yang dibutuhkan hamir sama dengan yang sebelumnya hayna saja
ditambah dengan sensor DHT 11. Setelah praktiikan selesai membuat rangkaian,
selanjutnya praktikan melalukan program script pada Arduino IDE. Setelah
program selasai selanjutnya dijalankan untuk mendeteksi kelembaban dan suhu
dengan sensor DHT 11. Hasil pengukuran kelembaban dan suhu dari sensor
DHT11 akan ditampilkan pada LCD 16x2.
Pada program percobaan kali ini terdapat library LCD dan library keypad.
Kemudian untuk baris dan kolomnya sesuai dengan keypad dimana setiap baris dan
kolomnya mempunyai karakteristik sendiri denan dimensi 4x4. Untuk pin baris
dari pin 4 sampai pin 7, dan untuk pin kolom dari pin 0 sampai pin 3. Pada void
setup menampilkan kalimat “Key is :” pada baris ke nol dan kolom ke 0. Pada void
loop terdapat key yang berarti value nya karakter dari keypad, kemudian ketika key
itu value maka akan ditampilkan baris dan kolom ini berupa karakter di tekan dari
key.
Pada percobaan keempat, Praktikan melakukan percobaan rangkaian sistem
login sederhana. Pada Percobaan keempat ini menggunakan rangkaian yang sama
persis dengan percobaan 3, hanya saja dibedakan dengan program scriptya. Selain
itu, pada script terdapat juga inisialisasi matriks 4x4 untuk memberikan nilai pada
keypad ketika ditekan. Dan pada script juga terdapat data_pass nilai password
yaitu angka 123456 yang digunakan untuk password login. Setelah program selesai
selanjutnya dijalankan, LCD akan menampilkan tulisan output “Sistem
Keamanan” dan “PIN :” , yang selanjutkan kita masukan password tad yang
terdapat pada program. Jika password yang dimasukan benar maka akan berhasil
login, begitupun sebaliknya. Jika password yang dimasukan salah mka akan keluar
output tulisan “Password Salah!” pada LCD.
Untuk password di ambil dari karakter keypad, pada void setup menggunakan
LCD 16x2 dan terdapat reset yang berfungsi untuk menampilkan “Sistem
Keamanan” dan “PIN :” dengan keadaan state 0 dan code 0. Pada keadaan apabila
password salah atau gagal akan menampilkan output “Password Salah” dengan
delay 2 detik kemudian akan menampilkan reset atau tampilan awal lagi, lalu
apabila password berhasil atau sukses menampilkan output “Login Sukses”
Apabila key sama dengan pagar maka password yang kita masukkan sama dengan
6 digit sesuai dengan data pass program maka akan menampilkan sukses
sedangkan ketika tidak sama dengan 6 atau passwordnya tidak sama dari data pass
maka menampilkan tampilan gagal.
IV. DAFTAR PUSTAKA
perulangan yang dimulai dari nilai variable address = 1 dan berakhir saat
nilai variable address = 126
3. Jika I2C bisa mengalamatkan sampai 127 alamat. Pada alamat berapa I2C
yang digunakan terdeteksi?
Pada alamat 0x27 dalam hexadecimal atau 39 desimal
4. Apa fungsi dari modul I2C, apa bedanya dengan menggunakan dan tidak
menggunakan mpdul I2C pada LCD 16x2?
Mengubah jalur pengendalian modul LCD dari paralel menjadi serial.
5. Apa bedanya pada saat kemarin menggunakan LM35 dan sekarang
menggunakan DHT 11?
LM35 hanya bisa mengukur suhu sedangkan DHT 11 bisa mengukur
kelembaban dan suhu.
6. Kenapa DHT 11 disebut sensor digital? Dan kenapa LM35 disebut sensor
analog?
Karena output yang dihasilkan DHT 11 berupa digital sedangkan
LM35 analog.
If(key)
Mengecek sebuah kondisi apakah keypad sedang ditekan atau tidak
void setup() {
lcd.begin(16,2);
reset();
}
void reset()
{ lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistem Keamanan");
lcd.setCursor(0, 1);
lcd.print("PIN:");
state = 0;
code = 0;
}
void gagal()
{
lcd.setCursor(0, 0);
lcd.print("Password Salah!");
delay(2000);
lcd.clear();
reset();
}
void blokir()
{
f:
lcd.setCursor(0, 0);
lcd.print("PIN DIBLOKIR");
goto f;
}
void sukses()
{ a:
lcd.setCursor(0, 0);
lcd.print("Login Sukses..!");
lcd.setCursor(0, 1);
lcd.print("* : Logout");
char key = keypad.getKey();
if (key != '*')
{
goto a;
}
else
{
reset();
}
}
void loop() {
char key = keypad.getKey();
if (key)
{ if (key != '#')
{
lcd.setCursor(state + 5, 1);
if (data_pass[state] == key)
{ code++;
}
else
{
code--;
}
lcd.print("*");
delay(100);
state++;
}
else
{ if (code == 1)
{
lcd.clear();
sukses();
}
else
{
lcd.clear();
gagal();
x++;
if (x==3)
{
lcd.clear();
blokir();
}
}
}
}
}