int ledm = 13;
int ledk = 12;
int ledb = 11;
int buzzer = 10;
int btn = 9;
const byte numeral[10] =
{
// 0 = led dalam seven segment yang tidak diberikan tagangan
// 1 = led dalam seven segment yang diberikan tagangan masukan
B11111101, // angka 0
B01100001, // angka 1
B11011011, // angka 2
B11110011, // angka 3
B01100111, // angka 4
B10110111, // angka 5
B10111111, // angka 6
B11100001, // angka 7
B11111111, // angka 8
B11110111, // angka 9
};
// pin dari segment dp,G,F,E,D,C,B,A
const int segmentPins[8] = {1,8,7,6,5,4,3,2};
void setup() {
//Put your setup code here, to run once:
pinMode(ledm, OUTPUT);
pinMode(ledk, OUTPUT);
pinMode(ledb, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(btn, INPUT_PULLUP);
digitalWrite(ledm, LOW);
digitalWrite(ledk, LOW);
digitalWrite(ledb, LOW);
for(int i=0; i < 8; i++)
{
pinMode(segmentPins[i], OUTPUT);
}
}
void loop(){
if (digitalRead(btn) == LOW) {
digitalWrite(ledm, HIGH);
tone(buzzer, 5000);
// Count down from 9 to 0
for (int i = 9; i >= 0; i--) {
showDigit(i);
delay(1000); // Wait for 1 second
}
noTone(buzzer);
digitalWrite(ledm, LOW);
delay(2000);
digitalWrite(ledk, HIGH);
//tone(buzzer, 5000);
// Count down from 9 to 0
for (int i = 5; i >= 0; i--) {
showDigit(i);
delay(1000); // Wait for 1 second
}
noTone(buzzer);
digitalWrite(ledk, LOW);
delay(2000);
digitalWrite(ledb, HIGH);
tone(buzzer, 1000);
// Count down from 9 to 0
for (int i = 9; i >= 0; i--) {
showDigit(i);
delay(1000); // Wait for 1 second
}
noTone(buzzer);
digitalWrite(ledb, LOW);
delay(2000);
}
/*if(digitalRead(btn) == LOW){
digitalWrite(ledm, HIGH);
tone(buzzer, 5000);
delay(3000);
digitalWrite(ledm, LOW);
noTone(buzzer);
delay(1000);
digitalWrite(ledm, HIGH);
tone(buzzer, 5000);
delay(3000);
digitalWrite(ledm, LOW);
noTone(buzzer);
digitalWrite(ledk, HIGH);
delay(2000);
digitalWrite(ledk, LOW);
delay(1000);
digitalWrite(ledk, HIGH);
delay(2000);
digitalWrite(ledk, LOW);
digitalWrite(ledb, HIGH);
tone(buzzer, 1000);
delay(2000);
digitalWrite(ledb, LOW);
noTone(buzzer);
delay(1000);
digitalWrite(ledb, HIGH);
tone(buzzer, 1000);
delay(2000);
digitalWrite(ledb, LOW);
noTone(buzzer);
}*/
}
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);
}
}