#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD
const int ledPin = 3; // Pin LED
const int buttonPin = 7; // Pin Tombol untuk mengubah baud rate
const int inputButtonPin = 2; // Pin Tombol untuk input user
int baudRates[] = {9600, 19200, 38400, 57600, 115200}; // Pilihan Baud Rate
int baudIndex = 0; // Index Baud Rate saat ini
int prev = 0; // Variabel untuk menyimpan status tombol sebelumnya
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Gunakan resistor pull-up internal
pinMode(inputButtonPin, INPUT_PULLUP); // Gunakan resistor pull-up internal untuk tombol input user
Serial.begin(baudRates[baudIndex]); // Inisialisasi dengan baud rate pertama
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Baud Rate: ");
lcd.setCursor(0, 1);
lcd.print(baudRates[baudIndex]);
}
void loop() {
// Cek perubahan tombol baud rate
if (digitalRead(buttonPin) == LOW) { // Tombol ditekan
delay(50); // Debounce delay
if (digitalRead(buttonPin) == LOW) {
baudIndex = (baudIndex + 1) % 5; // Ganti ke baud rate berikutnya
Serial.begin(baudRates[baudIndex]);
lcd.setCursor(0, 1);
lcd.print(" "); // Hapus baris
lcd.setCursor(0, 1);
lcd.print(baudRates[baudIndex]);
while (digitalRead(buttonPin) == LOW); // Tunggu tombol dilepas
delay(50); // Debounce delay
}
}
// Cek tombol input user
int press = !digitalRead(inputButtonPin);
if (press != prev) {
if (press) Serial.print("1");
else Serial.print("0");
}
prev = press;
// Baca data dari serial port dan tampilkan di LCD, serta kontrol LED
if (Serial.available() > 0) {
digitalWrite(ledPin, HIGH); // Nyalakan LED
char receivedChar = Serial.read(); // Baca karakter yang diterima
lcd.setCursor(0, 0);
lcd.print("Data: ");
lcd.setCursor(6, 0);
lcd.print(receivedChar); // Tampilkan karakter di LCD
// Mengatur LED berdasarkan data yang diterima
if (receivedChar == '1') {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
delay(100); // Tunda sebentar untuk menandakan LED menyala
digitalWrite(ledPin, LOW); // Matikan LED
}
}