Untitled

 avatar
unknown
plain_text
6 months ago
1.4 kB
3
Indexable
const byte numeral[11] = {
  B00000011, // 0
  B10011111, // 1
  B00100101, // 2
  B00001101, // 3
  B10011001, // 4
  B01001001, // 5
  B01000001, // 6
  B00011111, // 7
  B00000001, // 8
  B00001001, // 9
  B11111111, // blank display
};

const int segmentPins[8] = { 8, 7, 6, 11, 10, 9, 4, 5 }; //dp,g,f,e,d,c,b,a
#define Led_R 12
#define Led_Y 2
#define Led_G 3

void setup() {
  for (int i = 0; i < 8; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
  pinMode(Led_R, OUTPUT);
  pinMode(Led_Y, OUTPUT);
  pinMode(Led_G, OUTPUT);
}

void loop() {
  // Red light sequence
  digitalWrite(Led_R, LOW);
  digitalWrite(Led_Y, LOW);
  digitalWrite(Led_G, HIGH);
  for (int i = 5; i >= 1; i--) {
    tampilAngka(i);
    delay(1000);
  }
  
  // Yellow light sequence
  digitalWrite(Led_R, LOW);
  digitalWrite(Led_Y, HIGH);
  digitalWrite(Led_G, LOW);
  for (int i = 2; i >= 1; i--) {
    tampilAngka(i);
    delay(1000);
  }
  
  // Green light sequence
  digitalWrite(Led_R, HIGH);
  digitalWrite(Led_Y, LOW);
  digitalWrite(Led_G, LOW);
  for (int i = 9; i >= 1; i--) {
    tampilAngka(i);
    delay(1000);
  }
}

void tampilAngka(int number) {
  boolean isBitSet;
  for (int segment = 1; segment < 8; segment++) {
    isBitSet = bitRead(numeral[number], segment);
    digitalWrite(segmentPins[segment], isBitSet);
  }
  digitalWrite(segmentPins[0], HIGH); // Turn off decimal point
}
Editor is loading...
Leave a Comment