Arduino: 7 segment display (七段顯示器)

若要顯示3,則讓abgcd,五支腳位通電
=> 把全部腳位接線,以2~10接上控制線,再以function形式呈現1234567890
=> 接好控制線後,不做任何控制(HIGH or LOW),預設是全亮,所以會顯示8

– 為什麼當我們 digitalWrite(a, HIGH) 時,a卻是暗掉的呢?
=>
七段顯示器有共陽or共陰兩種,

此例就是共陽
所以當我們想要哪支腳位不亮,就把那支腳位設為HIGH,使他與高電位同電位,就不會有電流通過,即斷路,自然不會亮。
example:

int dp = 2;
int c = 3;
int d = 4;
int e = 5;
int b = 6;
int a = 7;
int f = 8;
int g = 9;

// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
}

void show0(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);
}
void show1(){
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}
void show2(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
}
void show3(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, LOW);
}
void show4(){
  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
void show5(){
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
void show6(){
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
void show7(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);
}
void show8(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}
void show9(){
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);
}

void setNumber(int number){
  switch(number){
  case 0: show0(); break;
  case 1: show1(); break;
  case 2: show2(); break;
  case 3: show3(); break;
    case 4: show4(); break;
    case 5: show5(); break;
    case 6: show6(); break;
    case 7: show7(); break;
    case 8: show8(); break;
    case 9: show9(); break;
  default: Serial.println(“Error”);
  }
}

// the loop routine runs over and over again forever:
void loop() {
  setNumber(1);
  delay(1000);
  setNumber(2);
  delay(1000);
  setNumber(3);
  delay(1000);
  setNumber(4);
  delay(1000);
  setNumber(5);
  delay(1000);
  setNumber(6);
  delay(1000);
  setNumber(7);
  delay(1000);
  setNumber(8);
  delay(1000);
  setNumber(9);
  delay(1000);
}



————————-

兩位數七段顯示器
 

作者

RongSon

Graduate Student of CCU COMM Game Development, Network Communication, macOS/Ubuntu/Android, Arduino/Raspberry Pi/Intel Edison, Java/Python/C/C++

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *