const byte PIN_LED[] = {2, 3, 4, 5, 6, 7, 8, 9};
const byte NYALA_LED[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0X80, 0X90}; //4
byte angka;
#define segmenSatuan 10
#define segmenPuluhan 11
#define segmenRatusan 12
#define segmenRibuan 13
void setup() {
// put your setup code here, to run once:
for (int i = 0; i < 8; i++)
{
pinMode(PIN_LED[i], OUTPUT);
}
pinMode(segmenSatuan, OUTPUT);
pinMode(segmenPuluhan, OUTPUT);
pinMode(segmenRatusan, OUTPUT);
pinMode(segmenRibuan, OUTPUT);
pinMode(A3, INPUT);
pinMode(A4, INPUT);
pinMode(A5, INPUT);
Serial.begin(115200);
}
void loop() {
for (angka = 0; angka <= 9999; angka++)
{
for (byte ulangi = 0; ulangi < 12; ulangi++)
{
tampil4Segmen(angka);
delay(1);
}
}
}
void tampilSegmen(int ledke)
{
for (int i = 0; i < 8; i++) {
// Membaca bit ke-i dari data (0-7)
// Bit 0 (LSB) ke pin 2, Bit 7 (MSB) ke pin 9
int bitValue = bitRead(NYALA_LED[ledke], i);
// Menulis nilai bit ke pin (2 + i)
digitalWrite(PIN_LED[i], bitValue);
}
}
void tampil4Segmen(int angkanya)
{
byte ribuan = angkanya / 1000;
byte ratusan = (angkanya / 100) % 10;
byte puluhan = (angkanya % 100) / 10;
byte satuan = angkanya % 10;
digitalWrite(segmenSatuan, LOW);
digitalWrite(segmenPuluhan, LOW);
digitalWrite(segmenRatusan, LOW);
digitalWrite(segmenRibuan, LOW);
tampilSegmen(ribuan);
digitalWrite(segmenRibuan, HIGH);
delay(5);
digitalWrite(segmenSatuan, LOW);
digitalWrite(segmenPuluhan, LOW);
digitalWrite(segmenRatusan, LOW);
digitalWrite(segmenRibuan, LOW);
tampilSegmen(ratusan);
digitalWrite(segmenRatusan, HIGH);
delay(5);
digitalWrite(segmenSatuan, LOW);
digitalWrite(segmenPuluhan, LOW);
digitalWrite(segmenRatusan, LOW);
digitalWrite(segmenRibuan, LOW);
tampilSegmen(puluhan);
digitalWrite(segmenPuluhan, HIGH);
delay(5);
digitalWrite(segmenSatuan, LOW);
digitalWrite(segmenPuluhan, LOW);
digitalWrite(segmenRatusan, LOW);
digitalWrite(segmenRibuan, LOW);
tampilSegmen(satuan);
digitalWrite(segmenSatuan, HIGH);
delay(5);
}