Arduino初初教程2——I/O口輸出應用

Arduino除了能驅動LED以外,還能夠經過I/O輸出驅動蜂鳴器和數碼管。
LED(發光二極管),能將電能轉化爲光能,其也具備單向導電性,反向擊穿電壓約5V。它的正向伏安特性曲線很陡,使用時必須串連限流電阻,在5V的電路中通常使用400歐左右的電阻。
LED的兩根引腳中較長的一根爲正極。有兩種接法,一、當led的正極經過限流電阻與Arduino的I/O口相連,另外一端接地,此時Arduino輸出高電平時led點亮,輸出低電平時led熄滅。二、當led的負極與Arduino的I/O口相連,另外一端經過限流電阻接5V電壓,此時Arduino輸出低時led點亮,輸出高電平時led熄滅。
蜂鳴器是一種一體化結構的電子訊響器,採用直流電壓供電。也能夠採用上面說到兩種接法,不一樣的是不須要接限流電阻。
數碼管能夠當作是多個led的集合,led的公共腳接在一塊兒,若公共腳是正極的稱爲共陽極數碼管,公共腳是負極的稱爲公陰極數碼管。按段數分爲七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個小數點。
接下來咱們使用一個公陽極的數碼管循環顯示1到8 八個數字。電路鏈接上數碼管的公共引腳接5V電壓,其餘引腳串連限流電阻接到Arduino的I/O口上。數碼管上7個短線段分別用A、B、C、D、E、F、G表示。以下
    a
      —
f  |   g   | b
      —
e |   d   | c
      —
Arduino的鏈接對應關係以下(引腳輸出低電亮數碼段)
a ——  7引腳
b ——  6引腳
c ——  5引腳
d ——  11引腳
e ——  10引腳
f ——  8引腳
g ——  9引腳
程序以下(直接粘貼到Arduino開發環境下就可直接應用):
//設置控制各段的數字IO腳
int a=7;
int b=6;
int c=5;
int d=11;
int e=10;
int f=8;
int g=9;
//顯示數字1
void digital_1(void)
{
  unsigned char j;
  digitalWrite(c,LOW);//給數字5引腳低電平,點亮c段
  digitalWrite(b,LOW);//點亮b段
  for(j=7;j<=11;j++)//熄滅其他段
    digitalWrite(j,HIGH);
}
//顯示數字2
void digital_2(void)
{
  unsigned char j;
  digitalWrite(b,LOW);
  digitalWrite(a,LOW);
  for(j=9;j<=11;j++)
    digitalWrite(j,LOW);
digitalWrite(c,HIGH);
  digitalWrite(f,HIGH);
}
//顯示數字3
void digital_3(void)
{
  unsigned char j;
  digitalWrite(g,LOW);
  digitalWrite(d,LOW);
  for(j=5;j<=7;j++)
    digitalWrite(j,LOW);
digitalWrite(f,HIGH);
  digitalWrite(e,HIGH);
}
//顯示數字4
void digital_4(void)
{
  digitalWrite(c,LOW);
  digitalWrite(b,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
digitalWrite(a,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(d,HIGH);   
}
//顯示數字5
void digital_5(void)
{
  unsigned char j;
  for(j=7;j<=9;j++)
    digitalWrite(j,LOW);
  digitalWrite(c,LOW);
  digitalWrite(d,LOW);
digitalWrite(b,HIGH);
  digitalWrite(e,HIGH);
}
//顯示數字6
void digital_6(void)
{
  unsigned char j;
  for(j=7;j<=11;j++)
    digitalWrite(j,LOW);
  digitalWrite(c,LOW);
digitalWrite(b,HIGH);
}
//顯示數字7
void digital_7(void)
{
  unsigned char j;
  for(j=5;j<=7;j++)
    digitalWrite(j,LOW);
for(j=8;j<=11;j++)
    digitalWrite(j,HIGH);
}
//顯示數字8
void digital_8(void)
{
  unsigned char j;
  for(j=5;j<=11;j++)
    digitalWrite(j,LOW);
}
void setup()
{
  int i;//定義變量
  for(i=5;i<=11;i++)
    pinMode(i,OUTPUT);//設置5~11引腳爲輸出模式
}
void loop()
{  
  while(1)
  {
    digital_1();//數字1
    delay(2000);//延時2s
    digital_2();
    delay(2000);
    digital_3();
    delay(2000);
    digital_4();
    delay(2000);
    digital_5();
    delay(2000);
    digital_6();
    delay(2000);
    digital_7();
    delay(2000);
    digital_8();
    delay(2000);   
  }
}
[ 本帖最後由 晨光熹微 於 2011-6-25 19:40 編輯 ] git

附件

20110625_64a3194d9b55bc32aef28coGtSjsqfnC  20110625_d4625e1aac4646b8ce1dxDVHoCJC98Z3 20110625_d22c58b8e01f00e91fd7iAsdTMKZPhsJ

相關文章
相關標籤/搜索