int red=2;
int yellow=3;
int green=4;
const byte numeral[10] =
{
//0 = led dalam seven segment yang tidak diberikan tagangan
//1 = led dalam seven segment yang diberikan tagangan masukan
B11110111, // angka 9
B11111111, // angka 8
B11100001, // angka 7
B10111111, // angka 6
B10110111, // angka 5
B01100111, // angka 4
B11110011, // angka 3
B11011011, // angka 2
B01100001, // angka 1
B11111101, // angka 0
};
//pin dari segment dp,G,F,E,D,C,B,A
const int segmentPins[8] = {9,13,12,11,10,8,7,6};
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}
void loop() {
digitalWrite(red, HIGH);
digitalWrite(yellow, LOW);
digitalWrite(green, LOW);
for(int i=0; i <= 10; i++)
{
showDigit(i);
delay(1000);
}
digitalWrite(red, LOW);
digitalWrite(yellow, HIGH);
digitalWrite(green, LOW);
delay(1000);
digitalWrite(red, LOW);
digitalWrite(yellow, LOW);
digitalWrite(green, HIGH);
for(int i=0; i <= 10; i++)
{
showDigit(i);
delay(1000);
}
}
void showDigit(int number)
{
boolean isBitSet;
for(int segment = 1; segment < 8; segment++)
{
if(number < 0 || number > 9)
{
isBitSet = 0; //turn off all segments
}
else
{
//isBitSet will be true if given bit is 1
isBitSet = bitRead(numeral[number], segment);
}
isBitSet = !isBitSet;
digitalWrite(segmentPins[segment], isBitSet);
}
}