Arduino 入门到精通 例程16-数码管
- 格式:doc
- 大小:473.50 KB
- 文档页数:11
Arduino教程一: 数字输出Arduino, 教程11 Comments »Arduino的数字I/O被分成两个部分,其中每个部分都包含有6个可用的I/O管脚,即管脚2到管脚7和管脚8到管脚13。
除了管脚13上接了一个1K的电阻之外,其他各个管脚都直接连接到ATmega上。
我们可以利用一个6位的数字跑马灯,来对Arduino数字I/O 的输出功能进行验证,以下是相应的原理图:电路中在每个I/O管脚上加的那个1K电阻被称为限流电阻,由于发光二极管在电路中没有等效电阻值,使用限流电阻可以使元件上通过的电流不至于过大,能够起到保护的作用。
该工程对应的代码为:int BASE = 2;int NUM = 6;int index = 0;void setup(){for (int i = BASE; i < BASE + NUM; i ++){pinMode(i, OUTPUT);}}void loop(){for (int i = BASE; i < BASE + NUM; i ++) {digitalWrite(i, LOW);}digitalWrite(BASE + index, HIGH);index = (index + 1) % NUM;delay(100);}下载并运行该工程,连接在Arduino数字I/O管脚2到管脚7上的发光二极管会依次点亮0.1秒,然后再熄灭:这个实验可以用来验证数字I/O输出的正确性。
Arduino上一共有十二个数字I/O管脚,我们可以用同样的办法验证其他六个管脚的正确性,而这只需要对上述工程的第一行做相应的修改就可以了:int BASE = 8;SEP01Arduino教程二: 数字输入Arduino, 教程3 Comments »在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。
Arduino从数字I/O管脚上只能读出高电平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成Arduino能够读取的高/低电平。
数码管驱动程序实例介绍数码管是一种常见的显示设备,通常用于显示数字和部分字母。
为了控制数码管的显示内容,我们需要编写一段驱动程序来控制数码管的工作。
本文将介绍一个数码管驱动程序的实例,包括硬件连接、代码编写和运行效果展示。
通过学习这个实例,你将了解到如何使用Arduino来驱动数码管进行数字显示。
硬件连接首先,我们需要准备以下硬件组件:•Arduino开发板•数码管(常见的有共阳极和共阴极两种类型)接下来,按照以下步骤进行硬件连接:1.将Arduino开发板与电脑连接,并打开Arduino IDE。
2.将数码管的引脚与Arduino开发板上的数字引脚相连。
具体连接方式取决于你使用的数码管类型,请参考相关资料或数据手册。
3.使用面包板或杜邦线等工具完成引脚连接。
代码编写完成硬件连接后,我们可以开始编写代码了。
以下是一个简单的数码管驱动程序示例:// 引入库#include <SevSeg.h>// 创建一个SevSeg对象并指定引脚SevSeg sevseg;void setup() {// 初始化数码管sevseg.begin(COMMON_CATHODE, 4, 3, 2, 1, 0, 6, 7, 5, 8);}void loop() {// 显示数字0-9for (int i = 0; i < 10; i++) {sevseg.setNumber(i);sevseg.refreshDisplay();delay(1000);}}代码解析:1.首先,我们引入了一个名为SevSeg的库,该库提供了控制数码管的函数和方法。
2.在setup()函数中,我们初始化了一个SevSeg对象,并指定了数码管的引脚连接方式。
这里使用的是共阳极数码管,如果你使用的是共阴极数码管,则需要将COMMON_CATHODE改为COMMON_ANODE。
3.在loop()函数中,我们通过一个循环来显示数字0-9。
单片机指令编程实例数码管显示程序设计在单片机的开发中,数码管是一种常见的输出设备。
通过编程控制数码管的显示,我们可以实现各种功能,如计时、计数、温度显示等。
本文将介绍一个简单的单片机指令编程实例,用于设计一个数码管显示程序。
一、概述数码管是一种由七段LED组成的显示器件,每个数码管可以显示0-9的数字。
通过合理的控制,可以将多个数码管连接起来并显示多位数值。
在这个实例中,我们将使用AT89C51单片机和共阳数码管进行程序设计。
二、硬件连接将数码管的七段LED引脚依次连接到单片机的GPIO引脚,并将共阳极引脚连接到单片机的VCC。
为了方便控制,可以利用74HC595芯片实现数码管的级联连接,这样只需要使用三个IO口即可控制多个数码管。
三、程序设计程序设计的主要逻辑是通过编写一系列的指令来控制数码管的显示。
以下是一个简单的实例程序:```#include <reg51.h>sbit SDA = P1^0; // 74HC595芯片的串行数据引脚sbit SCK = P1^1; // 74HC595芯片的时钟引脚sbit RCK = P1^2; // 74HC595芯片的输出使能引脚unsigned char code num[10] = {0xC0, // 数字0的显示码0xF9, // 数字1的显示码0xA4, // 数字2的显示码0xB0, // 数字3的显示码0x99, // 数字4的显示码0x92, // 数字5的显示码0x82, // 数字6的显示码0xF8, // 数字7的显示码0x80, // 数字8的显示码0x90 // 数字9的显示码};void delay(unsigned int t) {unsigned int i;while (t--) {for (i = 0; i < 1000; i++);}}void writeByte(unsigned char dat) {unsigned char i;for (i = 0; i < 8; i++) {SDA = (dat & 0x80) ? 1 : 0;dat <<= 1;SCK = 0;SCK = 1;}}void display(unsigned char n) {unsigned char i;for (i = 0; i < 8; i++) {writeByte(num[n]);RCK = 1;RCK = 0;delay(1); // 延时一段时间,使数码管显示出来}}void main() {unsigned char i;while (1) {for (i = 0; i < 10; i++) {display(i);delay(500); // 每个数字显示的时间间隔为500ms}}}```以上程序通过将各个数字的显示码存储在一个数组中,然后通过控制74HC595芯片的串行数据引脚、时钟引脚和输出使能引脚,来实现数码管的动态显示。
ARDUINO⼊门及其简单实验(7例)ARDUINO⼊门及其简单实验(7例) (1)1. Arduino硬件开发平台简介 (1)1.1 Arduino的主要特⾊ (2)1.2 Arduino的硬件接⼝功能描述 (3)1.3 Arduino的技术性能参数 (3)1.4 电路原理图 (4)2. Arduino软件开发平台简介 (5)2.1 菜单栏 (5)2.2 ⼯具栏 (6)2.3 Arduino 语⾔简介 (6)3. Arduino开发实例中所⽤部分器件 (8)1. LED简介 (8)2. 光敏电阻简介 (9)3. 直流电机简介 (9)4. 电位器简介 (10)4. Arduino平台应⽤开发实例 (10)4.1【实作项⽬⼀】利⽤LED作光敏电阻采样实验 (10)4.2【实作项⽬⼆】利⽤PWM信号控制LED亮度 (12)4.3【实作项⽬三】单键控制⼀只LED的亮灭 (15)4.4【实作项⽬四】利⽤PWM控制直流电机转速 (17)4.5【实作项⽬五】利⽤电位器⼿控LED亮度 (19)4.6【实作项⽬六】控制LED明暗交替 (21)4.7【实作项⽬七】利⽤光敏电阻控制LED的亮灭 (23)ARDUINO⼊门及其简单实验(7例)1. Arduino硬件开发平台简介Arduino硬件是⼀块带有USB的I/O接⼝板(其中包括13条数字I/O引脚,6通道模拟输出,6通道模拟输⼊),并且具有类似于Java、C语⾔的集成开发环境。
Arduino既可以扩展⼀些外接的电⼦元器件,例如开关、传感器、LED、直流马达、步进马达或其他输⼊、输出装置;Arduino也可以独⽴运⾏,成为⼀个可以跟交互软件沟通的接⼝装置,例如:Flash、Processing、Max/MSP、VVVV或其他互动软件。
Arduino开发环境IDE全部开放源代码,可以供⼤家免费下载、利⽤,还可以开发出更多激发⼈们制作欲望的互动作品。
如图1和图2所⽰,分别为Arduino硬件平台的实物图和电路布局图。
Arduino入门版使用教程i目录介绍篇 ........................................................................ . (1)一、Arduino 基础套装介绍 (2)1、什麽是Arduino 基础套装 (2)2、元件清单 ........................................................................ (2)二、Arduino 介绍 ........................................................................ (4)1、什麽是Arduino ................................................................... . (4)2、特色描述 ........................................................................ (4)3、性能描述 ........................................................................ (4)三、Arduino C 语言介绍 ........................................................................ .. 61、关键字和符号 ........................................................................ .. (6)2、结构 ........................................................................ .. (9)3、功能 ........................................................................ (9)四、Arduino 使用介绍 ........................................................................ . (11)1、准备好你的Arduino板 (11)2、下载Arduino 开发环境 (13)3、安装USB 驱动 ........................................................................ . (13)4、连接LED 灯电路 ........................................................................ .. (17)5、打开arduino 开发环境 (18)6、打开已有程式 ........................................................................ . (19)7、编译程式 ........................................................................ . (20)8、下载程式 ........................................................................ . (23)五、面包板使用介绍 ........................................................................ .. (30)1、面包板介绍 ........................................................................ . (30)2、面包板的使用 ........................................................................ (30)ii实验篇 ........................................................................ .. (34)第一节多彩led 灯实验 ........................................................................ .. 35一、发光二极管介绍 ........................................................................ .. (35)二、简单的控制一个led 灯的闪烁实验 (39)三、广告灯效果实验 ........................................................................ .. (41)第二节蜂鸣器实验 ........................................................................ (48)一、蜂鸣器介绍 ........................................................................ .. (48)二、蜂鸣器模拟救护车警笛声音实验 (50)第三节数码管实验 ........................................................................ (54)一、数码管介绍 ........................................................................ (54)二、数码管显示数字的实验 (56)第四节按键实验 ........................................................................ (63)一、按键介绍 ........................................................................ (63)二、按键控制led 等亮灭实验 (65)三、掷骰子实验 ........................................................................ (67)第五节倾斜开关实验 ........................................................................ (74)一、倾斜开关介绍 ........................................................................ (74)二、倾斜开关控制led 灯的亮灭 (75)第六节光控声音实验 ........................................................................ (79)一、光敏电阻介绍 ........................................................................ (79)二、光控声音实验 ........................................................................ (80)第七节火焰报警实验 ........................................................................ (84)一、火焰传感器介绍 ........................................................................ (84)二、火焰报警实验 ........................................................................ (85)第八节抢答器实验 ........................................................................ (90)第九节温度报警实验 ........................................................................ (98)一、温度传感器介绍 ........................................................................ (98)iii二、温度报警实验 ........................................................................ (99)第十节红外遥控 ........................................................................ . (103)一、红外接收头介绍 ........................................................................ . (103)二、红外遥控实验 ........................................................................ . (104)介绍篇一、Arduino 基础套装介绍1、什麽是Arduino基础套装Arduino基础套装是精心为初学者设计的一款学习工具。
数码管实验报告实验报告:数码管(LED数码管)的实验实验目的:1. 了解数码管的基本原理和工作方式;2. 掌握数码管的控制方法;3. 通过实验验证数码管的实际应用。
实验器材:1. 数码管模块;2. Arduino开发板;3. 杜邦线。
实验原理:数码管是一种能够显示数字和某些字母符号的显示器件。
传统的数码管由7个发光二极管(LED)组成,可以显示0-9的数字,以及A、B、C、D、E、F六个字母和一些符号。
当输入不同的控制信号时,数码管的不同LED会被点亮,从而显示出所需的数字或字母符号。
实验步骤:1. 将Arduino开发板连接到计算机,并打开Arduino IDE软件;2. 在Arduino IDE中新建一个程序,并编写代码;3. 将数码管模块的引脚与Arduino开发板的数字引脚相连接;4. 在Arduino IDE中将编写好的程序上传到Arduino开发板;5. 观察数码管显示的结果,验证程序的正确性;6. 修改程序,尝试显示其他数字或字母符号;7. 根据实际需要,设计并实现更复杂的数码管显示效果。
实验结果:在本次实验中,我们成功地通过Arduino开发板控制了数码管的显示。
通过编写简单的代码,我们可以实现在数码管上显示任意数字或字母符号的功能。
实验总结:本次实验通过实际操作,加深了对数码管工作原理和控制方法的理解。
我们掌握了使用Arduino开发板编写代码控制数码管显示的基本技能,并且可以根据实际需要设计出更复杂的显示效果。
数码管作为一种常见的显示器件,在很多电子设备中都有广泛的应用,如计算器、时钟、温度计等。
掌握数码管的使用方法对于我们今后的学习和工作都具有重要意义。
因此,我们应该进一步学习和探索数码管的更多应用,并加以实践。
Arduino入门基础教程•Arduino教程Lesson 1 -- 驱动安装及下载Blink程序 3 •Arduino教程Lesson 2 -- LED灯闪烁28 •Arduino教程Lesson 3 -- 做一个S.O.S求救信号灯35 •Arduino教程Lesson 4 -- 互动交通信号灯44 •Arduino教程Lesson 5 -- 呼吸灯56 •Arduino教程Lesson 6 -- 炫彩RGB LED61 •Arduino教程Lesson 7 -- 报警器68 •Arduino教程Lesson 8 -- 温度报警器70 •Arduino教程Lesson 9 -- 震动探测80 •Arduino教程Lesson 10 -- 感光灯87 •Arduino教程Lesson 11 --舵机初动92 •Arduino教程Lesson 12 -- 可控舵机97 •Arduino教程Lesson 13 -- 彩灯调光台102 •Arduino教程Lesson 14 -- 自制风扇105 •Arduino教程Lesson 15 -- 红外接收111 •Arduino教程Lesson 16 -- 遥控灯116 •Arduino教程Lesson 17 -- 数码管显示121全网最简单的入门教程,通俗易懂,易掌握,由易到难,循序渐进,你能学习到“传感器的感知”,”控制器的处理”,”声光电设备的反馈“等。
每篇教程结构清晰,从硬件连接——>输入代码——>代码回顾——>硬件回顾。
不同于其他教程,本教程认真讲解arduino代码释义和用法,让你真正掌握arduino编程。
Arduino教程Lesson 1 -- 驱动安装及下载Blink程序拿到了盼望已久的Arduino入门套件是不是有立马想试一试的冲动,但。
同样又面对不知如何下手的困扰呢?我们这里就从头开始教大家。
那就开始吧!STEP 1:下载Arduino IDE打开网页输入网址/en/Main/SoftwareArduino IDE老版本下载链接:/en/Main/OldSoftwareReleases进入到页面后,找到下图显示部分。
arduino四位数码管的点-回复关于Arduino四位数码管的点,以下是一篇回答该主题的文章。
标题:Arduino四位数码管的点:具体操作步骤引言:Arduino是一种开源的电子平台,可以用于开发各种项目。
在很多电子项目中,数码管是一种常见的显示设备。
而四位数码管则是常用的一种数码管类型。
本文将一步一步介绍Arduino中如何使用这种具有点的四位数码管。
第一部分:材料准备首先,我们需要准备一些必要的材料才能开始使用Arduino四位数码管。
你将需要以下物品:1. Arduino开发板2. 四位数码管(带有点的)3. 杜邦线(用于连接数码管与Arduino)4. 面包板(用于连接电路)5. 220欧姆电阻(用于保护数码管)6. 电源(如9V电池或者USB线连接计算机)第二部分:电路连接接下来,我们将连接电路,使得Arduino可以控制四位数码管显示。
请按照以下步骤进行连接:1. 将Arduino与面包板连接,确保它们的电源接口相连。
2. 在面包板上连接220欧姆电阻,其中一个引脚与数字引脚连接,另一个引脚通过杜邦线与数码管的共阴极引脚相连。
3. 将数码管的四个分阴极引脚分别与Arduino的数字引脚相连。
根据你的连接方式,可以使用杜邦线或者面包板进行连接。
4. 最后,将数码管的对应段与Arduino的数字引脚连接。
第三部分:编程一旦电路连接完成,我们可以编写Arduino代码,以控制四位数码管的显示。
以下是编写代码的步骤:1. 打开Arduino集成开发环境(IDE)。
2. 在IDE中,创建一个新的项目。
3. 引入数码管库,以便在代码中使用库的方法和功能。
4. 在setup()函数中,设置数码管的数字引脚作为输出引脚。
5. 在loop()函数中,编写代码以实现数码管显示不同的数字和字符。
6. 通过使用库中的函数,控制数码管的每个段的亮灭,实现所需的显示效果。
7. 编译和上传代码到Arduino开发板。
基于Arduino的PWM电机调速+数码管档位显示实例教程0 引言本实例适用于Arduino/机器人编程(创客)爱好者完成初级知识学习后,通过实际的综合项目训练,达到融会贯通解决实际问题的能力。
实例和代码均经本人测试无误,供有兴趣的朋友参考探讨。
1功能对直流电机转速进行PWM调节控制,设为九档(档位通过1位数码管进行显示),红色按键每按下一次加一档;黑色按键每按下一次减一档。
2 工作原理通过Arduino端口的脉宽调制输出功能,对直流电机的工作电压进行脉宽调制,从而改变电机的工作电压,达到调试目的。
本实例采用Arduino UNO自带5V电源,分为九档,并通过一位数码管显示出来。
3 需要的组件Arduino uno x1;直流小电机 x1;按键x2;一位数码管x1;ULN2003电机驱动芯片x1;导线若干4连线数码管:定义数字接口9 连接a 段数码管,数字接口11连接b 段数码管,数字接口4 连接c 段数码管,数字接口5 连接d 段数码管,数字接口6 连接e 段数码管,数字接口12 连接f 段数码管,数字接口13连接g 段数码管,小数点位该项目不用,直接接高电平5v即可。
ULN2003:电机负极接到驱动芯片in4引脚,in4再接到Arduino UNO的数字10端口。
按键:加速按键(红色)使用数字口7,减速按键(黑色)使用数字口8。
5代码int a= 9;//定义数字接口9 连接a 段数码管int b= 11;// 定义数字接口11连接b 段数码管int c= 4;// 定义数字接口4 连接c 段数码管int d= 5;// 定义数字接口5 连接d 段数码管int e= 6;// 定义数字接口6 连接e 段数码管int f= 12;// 定义数字接口12 连接f 段数码管int g= 13;// 定义数字接口13连接g 段数码管//int dp=3;// 该项目不用,直接接高电平5v即可int motor = 10; //电机负极接到驱动板in4,in4再接到数字10int key = 7; //加速按键使用数字口7int key2 = 8; //减速速按键使用数字口8int val = 0,val_0 = 0; //加速按键松开检测状态量int val2 = 0,val2_0 = 0; //减速按键松开检测状态量int speed_0,n=0;void setup(){int i;//定义变量for(i=4;i<=6;i++)pinMode(i,OUTPUT);//设置4~6 引脚为输出模式int j;//定义变量for(j=11;j<=13;j++)pinMode(j,OUTPUT);//设置11~13 引脚为输出模式pinMode(9, OUTPUT);pinMode(motor, OUTPUT);pinMode(key, INPUT);pinMode(key2, INPUT);Serial.begin(9600);}void display(int num){switch(num){default:{digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e, HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);break; }case 0:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,HIGH);break; }case 1:{digitalWrite(a,HIGH);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);break;}case 2:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,LOW);break; }case 3:{digitalWrite(g,LOW);digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(f,HIGH);digitalWrite(e,HIGH);break; }case 4:{digitalWrite(c,LOW);digitalWrite(b,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW); digitalWrite(a,HIGH);digitalWrite(e,HIGH);digitalWrite(d,HIGH);break;}case 5:{digitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e, HIGH);digitalWrite(f,LOW);digitalWrite(g,LOW);break;}case 6:{digitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);break; }case 7:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,HIGH);digitalWrite(e, HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);break; }case 8:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);break; }case 9:{digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,HIGH);digitalWrite(f,LOW);digitalWrite(g,LOW);break; }}}void loop(){//加速按键模块val=digitalRead(key);if(val!=val_0){delay(500);if(val==1){n++;}if(n>=9) n = 9;}val_0=digitalRead(key);//减速按键模块val2 = digitalRead(key2); if(val2!=val2_0){delay(500);if(val2==1){n--;}if(n<=0) n = 0;}val2_0=digitalRead(key2);Serial.println(n);display(n);delay(20);speed_0 = n *(252 / 9);analogWrite(motor, speed_0); //驱动电机旋转 }6 实物运行。
Arduino 入门教程(17)—数码管显示数码管,常见的用来显示数字的,比如像计算器。
这回我们就要来好好研究一下数码管,看看它是如何工作的。
数码管,其实也算是LED 中的一种。
数码管的每一段,都是一个独立的 LED,通过数字引脚来控制相应段的亮灭就能达到显示数字的效果。
这个项目要实现的是循环显示数字0~9。
所需材料1×八段数码管8×220 欧电阻 STEP 1:硬件连接按下图连线图连接,注意数码管各段所对应的引脚。
右边引脚说明图上为什么画这么几个箭头呢?个人觉得,这样看起来更方便。
可以给你作为参考。
我们从上面一排看,红色箭头的方向,从右往左,b a f g 的顺序正好对应,下面红色箭头逆时针顺序b --> a --> f --> g。
蓝色箭头也是表达的同样的意思。
还特意在连接图上,对数码管所连接的引脚做了标示。
这样就能更清楚的知道哪个引脚控制哪一段了。
这 8 个电阻同样是起限流的作用。
STEP 2:输入代码1. void setup(){2. for(int pin = 2 ; pin <= 9 ; pin++){ // 设置数字引脚2~9为输出模式3. pinMode(pin, OUTPUT);4. digitalWrite(pin, HIGH);5. }6. }7.8. void loop() {9. // 显示数字010. int n0[8]={0,0,0,1,0,0,0,1};11. //数字引脚2~9依次按数组n0[8]中的数据显示12. for(int pin = 2; pin <= 9 ; pin++){13. digitalWrite(pin,n0[pin-2]);14. }15. delay(500);16.17. // 显示数字118. int n1[8]={0,1,1,1,1,1,0,1};19. // 数字引脚2~9依次按数组n1[8]中的数据显示20. for(int pin = 2; pin <= 9 ; pin++){21. digitalWrite(pin,n1[pin-2]);22. }23. delay(500);24.25. // 显示数字226. int n2[8]={0,0,1,0,0,0,1,1};27. // 数字引脚2~9依次按数组n2[8]中的数据显示28. for(int pin = 2; pin <= 9 ; pin++){29. digitalWrite(pin,n2[pin-2]);30. }31. delay(500);32.33. // 显示数字334. int n3[8]={0,0,1,0,1,0,0,1};35. // 数字引脚2~9依次按数组n3[8]中的数据显示36. for(int pin = 2; pin <= 9 ; pin++){37. digitalWrite(pin,n3[pin-2]);38. }39. delay(500);40.41. // 显示数字442. int n4[8]={0,1,0,0,1,1,0,1};43. // 数字引脚2~9依次按数组n4[8]中的数据显示44. for(int pin = 2; pin <= 9 ; pin++){45. digitalWrite(pin,n4[pin-2]);46. }47. delay(500);48.49. // 显示数字550. int n5[8]={1,0,0,0,1,0,0,1};51. // 数字引脚2~9依次按数组n5[8]中的数据显示52. for(int pin = 2; pin <= 9 ; pin++){53. digitalWrite(pin,n5[pin-2]);54. }55. delay(500);56.57. // 显示数字658. int n6[8]={1,0,0,0,0,0,0,1};59. // 数字引脚2~9依次按数组n6[8]中的数据显示60. for(int pin = 2; pin <= 9 ; pin++){61. digitalWrite(pin,n6[pin-2]);62. }63. delay(500);64.65. // 显示数字766. int n7[8]={0,0,1,1,1,1,0,1};67. // 数字引脚2~9依次按数组n7[8]中的数据显示68. for(int pin = 2; pin <= 9 ; pin++){69. digitalWrite(pin,n7[pin-2]);70. }71. delay(500);72.73. // 显示数字874. int n8[8]={0,0,0,0,0,0,0,1};75. // 数字引脚2~9依次按数组n8[8]中的数据显示76. for(int pin = 2; pin <= 9 ; pin++){77. digitalWrite(pin,n8[pin-2]);78. }79. delay(500);80.81. // 显示数字982. int n9[8]={0,0,0,0,1,1,0,1};83. // 数字引脚2~9依次按数组n9[8]中的数据显示84. for(int pin = 2; pin <= 9 ; pin++){85. digitalWrite(pin,n9[pin-2]);86. }87. delay(500);88. }89.完成下载后,数码管就会循环显示0~9 的数字。
Arduino 入门到精通例程17这次我们进行的实验是使用arduino驱动一块共阴四位数码管。
驱动数码管限流电阻肯定是必不可少的,限流电阻有两种接法,一种是在d1-d4阳极接,总共接4颗。
这种接法好处是需求电阻比较少,但是会产生每一位上显示不同数字亮度会不一样,1最亮,8最暗。
另外一种接法就是在其他8个引脚上接,这种接法亮度显示均匀,但是用电阻较多。
本次实验使用8颗220Ω电阻(因为没有100Ω电阻,所以使用220Ω的代替,100欧姆亮度会比较高)。
4位数码管总共有12个引脚,小数点朝下正放在面前时,左下角为1,其他管脚顺序为逆时针旋转。
左上角为最大的12号管脚。
下图为数码管的说明手册下面是硬件连接图下面是程序;//显示1234//设置阴极接口int a = 1;int b = 2;int c = 3;int d = 4;int e = 5;int f = 6;int g = 7;int dp = 8;//设置阳极接口int d4 = 9;int d3 = 10;int d2 = 11;int d1 = 12;//设置变量long n = 1230;int x = 100;int del = 55; //此处数值对时钟进行微调void setup(){pinMode(d1, OUTPUT);pinMode(d2, OUTPUT);pinMode(d3, OUTPUT);pinMode(d4, OUTPUT);pinMode(a, OUTPUT);pinMode(b, OUTPUT);pinMode(c, OUTPUT);pinMode(d, OUTPUT);pinMode(e, OUTPUT);pinMode(f, OUTPUT);pinMode(g, OUTPUT);pinMode(dp, OUTPUT);}///////////////////////////////////////////////////////////// void loop(){Display(1, 1);Display(2, 2);Display(3, 3);Display(4, 4);}/////////////////////////////////////////////////////////////// void WeiXuan(unsigned char n)//{switch(n){case 1:digitalWrite(d1,LOW);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH);break;case 2:digitalWrite(d1, HIGH);digitalWrite(d2, LOW);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH);break;case 3:digitalWrite(d1,HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, LOW);digitalWrite(d4, HIGH);break;case 4:digitalWrite(d1, HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, LOW);break;default :digitalWrite(d1, HIGH);digitalWrite(d2, HIGH);digitalWrite(d3, HIGH);digitalWrite(d4, HIGH);break;}}void Num_0(){digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(f, HIGH);digitalWrite(g, LOW);digitalWrite(dp,LOW);}void Num_1(){digitalWrite(a, LOW);digitalWrite(b, HIGH);digitalWrite(c, HIGH);digitalWrite(d, LOW);digitalWrite(e, LOW);digitalWrite(f, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW);}void Num_2(){digitalWrite(a, HIGH);digitalWrite(b, HIGH);digitalWrite(c, LOW);digitalWrite(d, HIGH);digitalWrite(e, HIGH);digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_3(){digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_4(){digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_5(){digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_6(){digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH);digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_7(){digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(dp,LOW); }void Num_8(){digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Num_9(){digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(dp,LOW); }void Clear() //清屏{digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW);digitalWrite(g, LOW);digitalWrite(dp,LOW);}void pickNumber(unsigned char n)//选数{switch(n){case 0:Num_0();break;case 1:Num_1();break;case 2:Num_2();break;case 3:Num_3();break;case 4:Num_4();break;case 5:Num_5();break;case 6:Num_6();break;case 7:Num_7();break;case 8:Num_8();break;case 9:Num_9();break;default:Clear();break;}}void Display(unsigned char x, unsigned char Number)//显示x为坐标,Number为数字{WeiXuan(x);pickNumber(Number);delay(1);Clear() ; //消影}把下面代码复制下载到控制板中,看看效果图。
3 Arduino,按键,LED3.1 问题描述:如何采用Arduino控制器和按键同时控制LED的闪烁在前面的2个例子中,都是简单地通过将程序烧录到Arduino控制板,然后由控制板来控制LED灯的闪烁,缺乏人情味。
那能不能在Arduino控制的过程中,再加上与人的互动呢?答案是肯定的。
在这个实验中,我们将增加一个新的材料按键按钮来和Arduino一起控制灯的闪烁。
3.2 所需材料表3-1:所需材料序号名称数量作用备注1 Arduino软件1套提供IDE环境最新版本1.052 Arduino UNO开发板1块控制主板各种版本均可3 USB线1条烧录程序随板子配送4 杜邦线若干条连接组件5 发光二极管(LED)1个 LED闪烁6 电阻(10,200Ω)2个限流7 多功能面包板1块连接8 按键按钮1个开关在进行实验之前,我们先介绍按键按钮的相关属性。
按键按钮按键是一种经常使用的设备,通过按键可以输入指令和数据来控制电路的开与关,从而达到控制某些设备的运行状态。
在本实验中,通过给按键输入高低电平来控制LED灯的闪烁。
开关的种类繁多复杂,比如厨房用的单孔开关,卧房用的双控开关,楼道用的声控开关等等,均属于开关的范畴。
在我们实验中,主要是用微型开关,但其种类也很多,如图3-1所示。
图3‐1 微型按键开关种类在本实验中采用的微型开关大致为6*6*5mm的四脚开关。
如图3-2所示。
图3-2 本实验用的按键值得注意的是,1和2是一边的,3和4是一边的,中间有道痕分开。
其原理如图3-3所示,当按键按下去时,1,2,3,4四个管脚接合在一起,2根导线连通,变成一根导线。
电路导通,起到触发(关)作用。
当松开按钮,1,2,3,4四个管脚断开,起到开的作用。
图3‐3 按键按钮原理图3.3 实验原理图当按键按钮按下,获取一个高电平,触发在Arduino控制下的LED闪烁。
当然,我们也可以设置为按键按下是LED灯不亮,当松开按键时,LED灯闪烁,请看后面的代码分析。
Arduino 入门到精通例程16
数码管显示实验
数码管是一种常见的普遍的显示数字的显示器件,日常生活中例如:电磁炉,全自动洗衣机,太阳能水温显示,电子钟…..等等数不甚数。
说以掌握数码管的显示原理,是很有必要的。
数码管是一种半导体发光器件,其基本单元是发光二极管。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),本实验所使用的是八段数码管。
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM 接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
数码管的每一段是由发光二极管组成,所以在使用时跟发光二极管一样,也要连接限流电阻,否则电流过大会烧毁发光二极管的。
本实验用的是共阴极的数码管,共阴数码管在应用时应将公共极接到GND,当某一字段发光二极管的阳极为低电平时,相应字段就点熄灭。
当某一字段的阳极为高电平时,相应字段就点亮。
介绍完原理,
我们开始准备实验用元器件。
八段数码管*1
220Ω直插电阻*8
面包板*1 面包板跳线*1 扎
我们参考实物连接图按原理图连接好电路。
数码管共有七段显示数字的段,还有一个显示小数点的段。
当让数码管显示数字时,只要将相应的段点亮即可。
例如:让数码管显示数字1,则将b、c 段点亮即可。
将每个数字写成一个子程序。
在主程序中每隔2s 显示一个数字,让数码管循环显示1~8 数字。
每一个数字显示的时间由延时时间来决定,时间设置的大些,显示的时间就长些,时间设置的小些,显示的时间就短。
参考程序源代码:
//设置控制各段的数字IO 脚
int a=7;//定义数字接口7 连接a 段数码管
int b=6;// 定义数字接口6 连接b 段数码管int c=5;// 定义数字接口5 连接c 段数码管int d=10;// 定义数字接口10 连接d 段数码管int e=11;// 定义数字接口11 连接e 段数码管int f=8;// 定义数字接口8 连接f 段数码管int g=9;// 定义数字接口9 连接g 段数码管int dp=4;// 定义数字接口4 连接dp 段数码管void digital_0(void) //显示数字5
{
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(b,HIGH);
digitalWrite(c,HIGH);
digitalWrite(d,HIGH);
digitalWrite(e,HIGH);
digitalWrite(f,HIGH);
digitalWrite(g,LOW);
digitalWrite(dp,LOW);
}
void digital_1(void) //显示数字1
{
unsigned char j;
digitalWrite(c,HIGH);//给数字接口5 引脚高电平,点亮c 段digitalWrite(b,HIGH);//点亮b 段
for(j=7;j<=11;j++)//熄灭其余段
digitalWrite(j,LOW);
digitalWrite(dp,LOW);//熄灭小数点DP 段
}
void digital_2(void) //显示数字2
{
unsigned char j;
digitalWrite(b,HIGH);
digitalWrite(a,HIGH);
for(j=9;j<=11;j++)
digitalWrite(j,HIGH);
digitalWrite(dp,LOW);
digitalWrite(c,LOW);
digitalWrite(f,LOW);
}
void digital_3(void) //显示数字3
{
digitalWrite(g,HIGH);
digitalWrite(a,HIGH);
digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(dp,LOW); digitalWrite(f,LOW); digitalWrite(e,LOW);
}
void digital_4(void) //显示数字4 {
digitalWrite(c,HIGH); digitalWrite(b,HIGH); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW); digitalWrite(a,LOW); digitalWrite(e,LOW); digitalWrite(d,LOW);
}
void digital_5(void) //显示数字5 {
unsigned char j;
digitalWrite(a,HIGH);
digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e, LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW);
}
void digital_6(void) //显示数字6 {
unsigned char j;
for(j=7;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(c,HIGH); digitalWrite(dp,LOW); digitalWrite(b,LOW);
}
void digital_7(void) //显示数字7 {
unsigned char j;
for(j=5;j<=7;j++)
digitalWrite(j,HIGH);
for(j=8;j<=11;j++) digitalWrite(j,LOW);
}
void digital_8(void) //显示数字8 {
unsigned char j;
for(j=5;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW);
}
void digital_9(void) //显示数字5 {
unsigned char j;
digitalWrite(a,HIGH); digitalWrite(b,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(e, LOW); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW);
}
void setup()
{
int i;//定义变量
for(i=4;i<=11;i++)
pinMode(i,OUTPUT);//设置4~11 引脚为输出模式}
void loop()
{
while(1)
{
digital_0();//显示数字1
delay(1000);//延时1s
digital_1();//显示数字1
delay(1000);//延时1s
digital_2();//显示数字2
delay(1000); //延时1s
digital_3();//显示数字3
delay(1000); //延时1s
digital_4();//显示数字4
delay(1000); //延时1s
digital_5();//显示数字5
delay(1000); //延时1s
digital_6();//显示数字6
delay(1000); //延时1s
digital_7();//显示数字7
delay(1000); //延时1s
digital_8();//显示数字8
delay(1000); //延时1s
digital_9();//显示数字8
delay(1000); //延时1s
}
}
实验现象:数码管显示0-9 循环显示。