#include <LedControl.h> // Library untuk MAX7219 LED Matrix
// Pin definisi untuk TM1637
#define CLK 2 // Pin CLK TM1637
#define DIO 3 // Pin DIO TM1637
// Inisialisasi LedControl untuk MAX7219 LED Matrix
LedControl lc = LedControl(12, 11, 10, 1); // DIN = 12, CLK = 11, CS = 10, 1 unit 8x8 matrix
// Emoticon byte array
byte smiley[8] = {
B00111100,
B01000010,
B10100101,
B10000001,
B10100101,
B10011001,
B01000010,
B00111100
};
byte sadFace[8] = {
B00111100,
B01000010,
B10100101,
B10000001,
B10011001,
B10100101,
B01000010,
B00111100
};
byte neutralFace[8] = {
B00111100,
B01000010,
B10100101,
B10000001,
B10111101,
B10000001,
B01000010,
B00111100
};
void setup() {
// Setup LED Matrix
lc.shutdown(0, false); // Inisialisasi LED Matrix
lc.setIntensity(0, 8); // Atur kecerahan LED Matrix
lc.clearDisplay(0); // Bersihkan layar
}
void loop() {
// Bagian Emoticon LED Dot Matrix
displayEmoticon(smiley);
delay(1000);
displayEmoticon(sadFace);
delay(1000);
displayEmoticon(neutralFace);
delay(1000);
// Bagian TM1637 7-segment display (angka bergerak)
for (int i = 0; i < 100; i++) {
displayTM1637(i);
delay(500);
}
}
// Fungsi untuk menampilkan emoticon pada LED Matrix
void displayEmoticon(byte character[8]) {
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, character[i]);
}
}
// Fungsi untuk menampilkan angka di TM1637
void displayTM1637(int number) {
int tens = number / 10; // Hitung puluhan
int units = number % 10; // Hitung satuan
// Tampilkan puluhan
sendToTM1637(tens);
delay(5); // Delay antara tampilan
// Tampilkan satuan
sendToTM1637(units);
}
// Fungsi untuk mengirim data ke TM1637
void sendToTM1637(int value) {
// Kirim data ke TM1637
digitalWrite(CLK, LOW); // Start signal
digitalWrite(DIO, LOW); // Set DIO low to send data
// Kirim data
for (int i = 0; i < 8; i++) {
digitalWrite(CLK, LOW); // Prepare clock signal
digitalWrite(DIO, (value >> i) & 1); // Send bit
digitalWrite(CLK, HIGH); // Send clock signal
}
digitalWrite(DIO, HIGH); // Stop signal
}