PRAKTIKUM MIKROKONTROLER
UNIT 5 KOMUNIKASI I2C
Nama : Fatahillah Furqon Abdulaziz NPM / Kelas : 10420475 / 3IB03
Hari / Tanggal : Selasa / 30 Mei 2023 PJ Shift / Shift : Kevin Warizky / IV Rekan Kerja : -
Praktikum Daring Mikrokontroler Unit 5 - 1 / 6
Data Percobaan Unit 5 Komunikasi I2C
Data Pengamatan Unit 5
Nama/NPM Paraf Asisten
Shift/Tanggal
Rekan Kerja
( )
Sebelum melakukan simulasi, harap untuk menambahkan library LCD khusus i2c dan pastikan juga ada library keypad.
A. Kalkulator sederhana menggunakan Arduino, LCD 12c, dan Keypad Langkah Kerja:
1. Rangkailah rangkaian berikut menggunakan software simulasi
2. Simulasikan rangkaian dengan listing program sesuai tabel di bawah.
3. Lengkapi tabel di bawah dengan penjelasan pada setiap line program.
PROGRAM PENJELASAN
Praktikum Daring Mikrokontroler Unit 5 - 2 / 6
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 2);
#include <Keypad.h> const byte ROWS = 4;
const byte COLS = 4;
char keys [ROWS] [COLS] = { {'7', '8', '9', '/'},
{'4', '5', '6', '*'}, {'1', '2', '3', '-'}, {'C', '0', '=', '+'}
Praktikum Daring Mikrokontroler Unit 5 - 3 / 6 };
byte rowPins[ROWS] = {2, 3, 4, 5}; byte colPins[COLS] = {6, 7, 8, 9};
Keypad myKeypad = Keypad(
makeKeymap(keys), rowPins, colPins, ROWS, COLS );
float presentValue = false; float next = false; float final = false;
String num1, num2; int answer = 0; char op;
void setup() { lcd.init();
lcd.backlight();
lcd.setCursor(5,0); lcd.print("UNIT 5");
lcd.setCursor(3,1);
lcd.print("Calculator"); delay(1000);
lcd.clear();
} void loop() {
char key = myKeypad.getKey();
if (key != NO_KEY && (key == '1' || key
== '2' || key == '3' || key == '4' || key == '5'
|| key == '6' || key == '7' || key == '8' || key
== '9' || key == '0')) { if (presentValue !=
true)
{ num1 = num1 + key; int numLength = num1.length();
lcd.setCursor(0, 0); lcd.print(num1);
} else
{ num2 = num2 + key; int numLength = num2.length(); int numLength1 = num1.length();
lcd.setCursor(1 + numLength1, 0);
lcd.print(num2); final = true;
} }
Praktikum Daring Mikrokontroler Unit 5 - 4 / 6
else if (presentValue == false && key !=
NO_KEY && (key == '/' || key == '*' || key
== '-' || key == '+')) { if (presentValue ==
false)
{ int numLength = num1.length();
presentValue = true; op = key;
lcd.setCursor(0 + numLength, 0);
lcd.print(op);
} }
else if (final == true && key != NO_KEY
&& key == '=') {
if (op == '+') {
answer = num1.toInt() + num2.toInt();
}
else if (op == '-') {
answer = num1.toInt() - num2.toInt();
}
else if (op == '*') {
answer = num1.toInt() * num2.toInt();
}
else if (op == '/') {
answer = num1.toInt() / num2.toInt();
}
lcd.clear(); lcd.setCursor(16, 1);
lcd.autoscroll(); lcd.print(answer);
lcd.noAutoscroll();
} else if (key != NO_KEY && key ==
'C')
{ lcd.clear();
presentValue = false; final = false; num1 = ""; num2 = "";
answer = 0; op = ' '; } }
Praktikum Daring Mikrokontroler Unit 5 - 5 / 6 Jelaskan bagaimana kesimpulan dari keluaran program setelah disimulasi?
Coba lakukan pengurangan, penjumlahan, perkalian dan pembagian sederhana, apakah hasilnya sudah sesuai?
Coba melakukan pembagian sederhana dengan hasil pecahan (cnth : 0.5 , 0.7 , ..), pastinya hasil hanya akan menunjukan angka 0. Kenapa hanya menampilkan 0, jelaskan?
Jika benar seperti itu, line koding yang mana sajakah yang harus diganti? Tulis semua line yang harus diganti dan jelaskan!
Praktikum Daring Mikrokontroler Unit 5 - 6 / 6
*hint : coba baca materi tentang Tipe data pada arduino