Osoyoo Arduino 1桁LEDデジタル表示管1個

Arduino

Prev:LEDデジタル表示管で4桁の数字を表示する

今回は前回の少ないバージョンです。

本家が電流制限用の抵抗を付けてなかったの自分もつけませんでしたが、多分付けた方がいいと思う。けど、ちょっと電流が多目に流れる程度で壊れはしないので、大丈夫は大丈夫です。

では、接続図です。

ちなみに、7SEGLEDが実物と違って上下に端子が5本づつあるんですが、絵は4本分のサイズなので、図的にははみ出して接続されてますw

接続出来たら、下記のソースをArduinoに流し込みます。

/* this program will looping 0 to 9 in Nixie Tube
 * Copyright Yilun Yu
 * project tutorial : https://osoyoo.com/?p=214
 */
int a=7; 
int b=6; 
int c=5; 
int d=11; 
int e=10; 
int f=8; 
int g=9; 
int dp=4; 
//display number 1
void display1(void) 
{ 
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
} 
//display number2
void display2(void) 
{
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(g,HIGH);
  digitalWrite(e,HIGH);
    digitalWrite(d,HIGH);
} 
// display number3
void display3(void) 
{ 
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(g,HIGH);
  digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
} 
// display number4
void display4(void) 
{ 
    digitalWrite(f,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(g,HIGH);
  digitalWrite(c,HIGH);
  
} 
// display number5
void display5(void) 
{ 
    digitalWrite(a,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
  digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);
} 
// display number6
void display6(void) 
{ 
    digitalWrite(a,HIGH);
    digitalWrite(f,HIGH);
    digitalWrite(g,HIGH);
  digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);  
    digitalWrite(e,HIGH);  
} 
// display number7
void display7(void) 
{   
   digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(c,HIGH);
} 
// display number8
void display8(void) 
{ 
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(g,HIGH);
  digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);  
    digitalWrite(e,HIGH);  
  digitalWrite(f,HIGH);  
} 
void clearDisplay(void) 
{ 
    digitalWrite(a,LOW);
    digitalWrite(b,LOW);
    digitalWrite(g,LOW);
  digitalWrite(c,LOW);
    digitalWrite(d,LOW);  
    digitalWrite(e,LOW);  
  digitalWrite(f,LOW);  
} 
void display9(void) 
{ 
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
    digitalWrite(g,HIGH);
  digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);  
  digitalWrite(f,HIGH);  
} 
void display0(void) 
{ 
    digitalWrite(a,HIGH);
    digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
    digitalWrite(d,HIGH);  
    digitalWrite(e,HIGH);  
  digitalWrite(f,HIGH);  
} 
void setup() 
{ 
    int i;
    for(i=4;i<=11;i++) 
        pinMode(i,OUTPUT);
} 
void loop() 
{     
    int i;
    
    while(1) 
    {
        clearDisplay();
        switch(i)
        {
          case 0:
            display0(); 
            break;
          case 1:
             display1(); 
           break;
          case 2:
            display2(); 
            break;
          case 3:
            display3(); 
            break;
          case 4:
            display4(); 
            break;
          case 5:
            display5(); 
            break;
          case 6:
            display6(); 
            break;
          case 7:
            display7(); 
            break;
          case 8:
            display8(); 
            break;
          case 9:
            display9(); 
            break;
        }
        delay(2000);
        i++;
        if(i>9) i=0;
    }
}

ちなみに、本家ではswitch分を使ってないべた書きバージョンです。

本当なら関数ポインタテーブル作って回したいところですが、やめましたw

では、動画を

Next:

コメント

タイトルとURLをコピーしました