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);
angka = 5;
}
void loop() {
tempil4Segmen(angka);
if (digitalRead(A3)==0)
{
if (angka > 0) angka--;
Serial.println(angka);
delay(100);
}
else if (digitalRead(A4)== 0)
{
if (angka < 9) angka++;
Serial.println(angka);
delay(100);
}
else if (digitalRead(A5)==0)
{
angka = 5;
Serial.println(angka);
delay(100);
}
}
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 tempil4Segmen(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(25);
digitalWrite(segmenSatuan, LOW);
digitalWrite(segmenPuluhan, LOW);
digitalWrite(segmenRatusan, LOW);
digitalWrite(segmenRibuan, LOW);
tampilSegmen(ratusan);
digitalWrite(segmenRatusan, HIGH);
delay(25);
digitalWrite(segmenSatuan, LOW);
digitalWrite(segmenPuluhan, LOW);
digitalWrite(segmenRatusan, LOW);
digitalWrite(segmenRibuan, LOW);
tampilSegmen(puluhan);
digitalWrite(segmenPuluhan, HIGH);
delay(25);
digitalWrite(segmenSatuan, LOW);
digitalWrite(segmenPuluhan, LOW);
digitalWrite(segmenRatusan, LOW);
digitalWrite(segmenRibuan, LOW);
tampilSegmen(satuan);
digitalWrite(segmenSatuan, HIGH);
delay(25);
}