#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD, ganti jika diperlukan
int sevenSegmentPins[] = {22, 23, 24, 25, 26, 27, 28, 29}; // Pin untuk segmen a-g pada 7-segment
unsigned long previousMillis = 0;
const long interval = 1000; // Interval 1 detik
bool startCounting = false;
int countNumber = 0;
byte kiriatas [8] = {
B000000,
B000000,
B000000,
B000000,
B000000,
B000000,
B000011
};
byte tengahatas [8] = {
B000000,
B000000,
B001100,
B010010,
B010001,
B010000,
B011000,
B000000
};
byte kiribawah [8] = {
B010000,
B010000,
B011000,
B100000,
B010000,
B010000,
B100000,
B011111
};
byte tengahbawah [8] = {
B000000,
B000000,
B000000,
B000000,
B000000,
B000000,
B111111
};
byte kananbawah [8] = {
B100000,
B100000,
B100000,
B100000,
B100000,
B100000,
B100000
};
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.backlight();
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Revina"); // Ganti "Nama Anda" dengan nama Anda
lcd.createChar(0, kiriatas);
lcd.createChar(1, tengahatas);
lcd.createChar(2, kiribawah);
lcd.createChar(3, tengahbawah);
lcd.createChar(4, kananbawah);
lcd.setCursor(0,0);
lcd.write(byte(0));
lcd.setCursor(1,0);
lcd.write(byte(1));
lcd.setCursor(0,1);
lcd.write(byte(2));
lcd.setCursor(1,1);
lcd.write(byte(3));
lcd.setCursor(2,1);
lcd.write(byte(4));
// Menampilkan teks di Serial Monitor
Serial.println("Mikrokontroler: 23.11.5911");
// Mengatur pin 7-segment sebagai output
for (int i = 0; i < 7; i++) {
pinMode(sevenSegmentPins[i], OUTPUT);
}
}
void loop() {
// Memeriksa input dari Serial Monitor
if (Serial.available()) {
String command = Serial.readString();
command.trim();
if (command == "start") {
startCounting = true;
previousMillis = millis(); // Reset waktu
}
}
for (int i = 0; i < 10; i++) { // Tampilkan angka di 7-segment
lcd.setCursor(4, 1);
lcd.print("Count: ");
lcd.print(i); // Tampilkan angka yang sama di LCD
delay(1000); // Jeda 1 detik sebelum beralih ke angka berikutnya
}
}
// Jika "start" telah diketik di Serial Monitor
// if (startCounting) {
// // Menghitung waktu untuk memperbarui tampilan setiap detik
// unsigned long currentMillis = millis();
// if (currentMillis - previousMillis >= interval) {
// previousMillis = currentMillis;
// // Menampilkan count pada LCD
// lcd.setCursor(0, 1);
// lcd.print("Count: ");
// lcd.print(countNumber);
// lcd.print(" "); // Untuk menghapus karakter sisa
// // Menampilkan count pada Serial Monitor
// Serial.print("Count: ");
// Serial.println(countNumber);
// // Menampilkan count pada 7-segment display
// displayDigit(countNumber);
// // Menambahkan count dan reset saat mencapai 10
// countNumber = (countNumber + 1) % 11;
// }
// }
int segmentPins[] = {22, 23, 24, 25, 26, 27, 28}; // Pin 2-8 untuk segmen a-g
int digits[4][7] = {
{1,0,1,1,0,1,1}, // 5
{1,1,1,1,0,1,1}, // 9
{0,1,1,0,0,0,0}, // 1
{0,1,1,0,0,0,0}, // 1
};
// void displayDigit(int digit) {
// // Data segment untuk angka 0-9 pada Common Cathode
// byte segmentData[4][7] = {
// {1, 0, 1, 1, 0, 1, 1}, // 5
// {1, 1, 1, 1, 0, 1, 1}, // 9
// {0, 1, 1, 0, 0, 0, 0}, // 1
// {0, 1, 1, 0, 0, 0, 0} // 1
// };
void displayNumber(int num) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], digits[num][i]);
}
}
// for (int i = 0; i < 7; i++) {
// digitalWrite(sevenSegmentPins[i], segmentData[digit][i]);
// }