#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD I2C (sesuaikan alamat I2C jika diperlukan)
LiquidCrystal_I2C lcd(0x27, 16, 2);
int count = 0;
bool startCounting = false;
unsigned long previousMillis = 0;
const long interval = 1000; // Interval 1 detik
void setup() {
// Set up Serial Monitor
Serial.begin(9600);
Serial.println("Mikrokontroler : 23.11.5901");
// Set up LCD
lcd.begin();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LCD Ready");
// Set up 7-Segment Display Pins
for (int i = 2; i <= 8; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
}
void loop() {
// Cek input dari Serial Monitor
if (Serial.available() > 0) {
String input = Serial.readStringUntil('\n');
input.trim(); // Menghapus spasi kosong atau karakter baru
if (input == "start") {
startCounting = true;
count = 0; // Reset count ke 0
}
}
if (startCounting) {
unsigned long currentMillis = millis();
// Tampilkan angka 5901 bergantian tiap detik di 7-Segment
int angka[] = {5, 9, 0, 1}; // Array angka yang akan ditampilkan
int digit = (currentMillis / 1000) % 4; // Ganti digit setiap detik
tampilkan7Segment(angka[digit]);
// Tampilkan teks pada LCD dan count dari 0 hingga 10 tiap detik
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Tampilkan di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.write(byte(0)); // Icon khusus pada LCD
lcd.print("michael");
lcd.setCursor(0, 1);
lcd.print("count: ");
lcd.print(count);
// Tampilkan count di Serial Monitor
Serial.print("Count: ");
Serial.println(count);
// Increment count
count++;
if (count > 10) {
count = 0; // Reset count setelah mencapai 10
}
}
}
}
// Fungsi untuk menampilkan angka pada 7-segment
void tampilkan7Segment(int angka) {
// Mapping angka ke segmen
byte segmen[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
for (int i = 0; i < 7; i++) {
digitalWrite(2 + i, segmen[angka][i]);
}
}