arduino学习笔记七 数码管、按键

数码管在使用时请接一定的电阻,以免数码管造成不必要的牺牲

这里数码管a、b、c、d、e、f、g、dp段分别对应端口7.6.5.11.10.8.9.4

int a=7;

int b=6;

int c=5;

int d=11;

int e=10;

int f=8;

int g=9;

int dp=4;

//显示数字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);

  digitalWrite(dp,HIGH);//熄灭小数点DP

}

//显示数字2

void digital_2(void)

{

  unsigned char j;

  digitalWrite(b,LOW);

  digitalWrite(a,LOW);

  for(j=9;j<=11;j++)

    digitalWrite(j,LOW);

  digitalWrite(dp,HIGH);

  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(dp,HIGH);

  digitalWrite(f,HIGH);

  digitalWrite(e,HIGH);

}

//显示数字4

void digital_4(void)

{

  digitalWrite(c,LOW);

  digitalWrite(b,LOW);

  digitalWrite(f,LOW);

  digitalWrite(g,LOW);

  digitalWrite(dp,HIGH);

  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(dp,HIGH);

  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(dp,HIGH);

  digitalWrite(b,HIGH);   

}

//显示数字7

void digital_7(void)

{

  unsigned char j;

  for(j=5;j<=7;j++)

    digitalWrite(j,LOW);

  digitalWrite(dp,HIGH);

  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);

  digitalWrite(dp,HIGH);

}

void setup()

{

  int i;//定义变量

  for(i=4;i<=11;i++)

    pinMode(i,OUTPUT);//设置411引脚为输出模式

}

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);   

  }

}

--------------------------------------------------------------------------------------------------------------------------

按键实例

按键是一种常用的控制电器元件,常用来接通或断开电路,从而达到控制电机或者其他设备运行的开关。

本次实验使用按键来控制led的亮或者灭。
一般情况是直接把按键开关串联在led的电路中来开关,这种应用情况比较单一。
这次实验通过间接的方法来控制,按键接通后判断按键电路中的输出电压,如果电压大于4.88V,就使给LED电路输出高电平,反之就输出低电平。使用逻辑判断的方法来控制LED亮或者灭,此种控制方法应用范围较广。
本次连接方法如下图。按键开关两段一端连接5V接口,一端连接模拟5号口。LED长针脚串联220Ω电阻连接数字7号口,短针脚连接GND

int key=7;//设置LED的数字IO

void setup()

{

  pinMode(key,OUTPUT);//设置数字IO引脚为输出模式

}

void loop()

{

  int i;//定义变量

  while(1)

  {

    i=analogRead(5);//读取模拟5口电压值

    if(i>1000)//如果电压值大于1000(即4.88V

      digitalWrite(key,HIGH);//设置第七引脚为高电平,点亮led

    else

      digitalWrite(key,LOW);//设置第七引脚为低电平,熄灭led 

  }

}

以下是一个简单的Arduino四位数按键数码管计数器的代码示例: ``` #include <SevSeg.h> SevSeg sevseg; // 创建SevSeg对象 int counter = 0; // 计数器初始值为0 void setup() { byte numDigits = 4; // 数码管位数为4 byte digitPins[] = {2, 3, 4, 5}; // 数码管连接到Arduino的引脚 byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; // 数码管连接到Arduino的引脚 bool resistorsOnSegments = false; // 数码管是否需要电阻 bool updateWithDelays = false; // 是否使用延迟更新数码管 byte hardwareConfig = COMMON_CATHODE; // 数码管类型为共阴极 bool leadingZeros = false; // 是否显示前导零 bool disableDecPoint = true; // 是否禁用小数点 sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, updateWithDelays, leadingZeros, disableDecPoint); sevseg.setBrightness(90); // 数码管亮度为90 } void loop() { if (digitalRead(14) == HIGH) { // 当第一个按键按下 delay(50); // 延迟去抖动 if (digitalRead(14) == HIGH) { // 再次确认按键是否按下 counter++; // 计数器加1 if (counter > 9999) { // 如果计数器超出范围 counter = 0; // 重置计数器为0 } } } sevseg.setNumber(counter, 0); // 显示计数器数值 sevseg.refreshDisplay(); // 更新显示 } ``` 在上述代码中,我们使用了SevSeg库来控制数码管的显示。其中,数字位连接到Arduino的引脚2、3、4和5,数码管连接到Arduino的引脚6、7、8、9、10、11、12和13。第一个按键连接到Arduino的引脚14。 在setup函数中,我们初始化了SevSeg对象并设置了数码管的一些参数,如亮度、位数、类型等。 在loop函数中,我们通过读取第一个按键的状态来控制计数器的增加,如果计数器超过了9999,则重置为0。然后通过setNumber函数将计数器的值显示在数码管上,并通过refreshDisplay函数更新显示。 这是一个简单的四位数按键数码管计数器的示例代码,你可以根据需要进行修改和完善。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜航一直在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值