实现现象
数码管计时控制红、黄、绿LED灯循环显示交通灯,红灯亮5-10秒,依次黄灯亮3-5秒,依次绿灯亮5-10秒 ,然后循环显示。
电路毗连
电路毗连参考文章
【Arduino基础】一位数码管实验
源代码及注释
- #define LEDred 10//界说红灯引脚#define LEDyell 9//界说黄灯引脚#define LEDgree 11//界说绿灯引脚int LEDCount=8;//界说段码,这里是共阳段码,如果是共阴只需要在程序中把读到的值按位取反即可,使用“~”取反符号const unsigned char dofly_DuanMa[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};int LEDPins[] = {0,1,2, 3, 4, 5, 6, 7, }; // 对应的LED引脚void setup() { // 循环设置,把对应的LED都设置成输出 for (int thisLED = 0; thisLED < LEDCount; thisLED++){ pinMode(LEDPins[thisLED], OUTPUT); } pinMode(LEDred, OUTPUT);//红灯引脚为输出引脚 pinMode(LEDyell, OUTPUT);//黄灯引脚为输出引脚 pinMode(LEDgree, OUTPUT);//绿灯引脚为输出引脚}// 数据处理,把需要处理的byte数据写到对应的引脚端口。void deal(unsigned char value){ for(int i=0;i=0;i--){ analogWrite(LEDred,HIGH);//输出高电平,红灯亮 deal(dofly_DuanMa[i]);//读取对应的段码值 delay(1000); //调治延时,2 个数字之间的停留隔断 } analogWrite(LEDred,LOW);//输出低电平,红灯灭 // 循环显示2-0 数字 for(int i=2;i>=0;i--){ analogWrite(LEDyell,HIGH);//输出高电平,黄灯亮 deal(dofly_DuanMa[i]);//读取对应的段码值 delay(1000); //调治延时,2 个数字之间的停留隔断 } analogWrite(LEDyell,LOW);//输出低电平,黄灯灭 // 循环显示9-0 数字 for(int i=9;i>=0;i--){ analogWrite(LEDgree,HIGH);输出高电平,绿灯亮 deal(dofly_DuanMa[i]);//读取对应的段码值 delay(1000); //调治延时,2 个数字之间的停留隔断 } analogWrite(LEDgree,LOW);//输出低电平,绿灯灭}
复制代码 实验现象
红灯亮10s
依次黄灯亮3s
依次绿灯亮10s
相关文章
【Arduino】交通灯控制设计 四位数码管
来源:https://blog.csdn.net/weixin_43319452/article/details/112003802
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |