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

相关文章
相关标签/搜索