Arduino教程及简明例程.docx
- 文档编号:1449688
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:44
- 大小:4.84MB
Arduino教程及简明例程.docx
《Arduino教程及简明例程.docx》由会员分享,可在线阅读,更多相关《Arduino教程及简明例程.docx(44页珍藏版)》请在冰豆网上搜索。
Arduino教程及简明例程
数字输出Arduino教程一:
11Comments?
Arduino教程,
。
除了管脚的数字Arduino7到管脚2I/O个可用的6I/O被分成两个部分,其中每个部分都包含有管脚,即管脚到管脚8和管脚13I/O1K上接了一个13来对位的数字跑马灯,6上。
ATmega其他各个管脚都直接连接到的电阻之外,我们可以利用一个Arduino数字的输出功能进行验证,以下是相应的原理图:
电阻被称为限流电阻,I/O电路中在每个管脚上加的那个1K使用限流电阻可由于发光二极管在电路中没有等效电阻值,以使元件上通过的电流不至于过大,能够起到保护的作用。
该工程对应的代码为:
intBASE=2;
intNUM=6;
intindex=0;
voidsetup()
{
++)BASE;=i(intfori+BASE { pinMode(i,OUTPUT); } } voidloop() { for(inti=BASE;i digitalWrite(i,LOW); } digitalWrite(BASE+index,HIGH); index=(index+1)%NUM; delay(100); } 2管脚I/O数字Arduino下载并运行该工程,连接在上的发光二极管会依次点亮7到管脚0.1秒,然后再熄灭: 1/28 这个实验可以用来验证数字I/O输出的正确性。 Arduino上一共有十二个数字I/O管脚,我们可以用同样的办法验证其他六个管脚的正确性,而这只需要对上述工程的第一行做相应的修改就可以了: intBASE=8; 01SEP Arduino教程二: 数字输入3Comments? Arduino,教程 在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。 Arduino从数字I/O管脚上只能读出高电平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成Arduino能够读取的高/低电平。 解决的办法是通过上/下拉电阻,按照电路的不同通常又可以分为正逻辑(PositiveLogic)和负逻辑(InvertedLogic)两种。 下拉电阻接地,输入信号从开关和电阻间引出。 当开关断开的时候,的在正逻辑电路中,开关一端接电源,另一端则通过一个10K输入信号被电阻“拉”向地,形成低电平(0V);当开关接通的时候,输入信号直接与电源相连,形成高电平。 对于经常用到的按压式开关来讲,就是按下为高,抬起为低。 在负逻辑电路中,开关一端接地,另一端则通过一个上拉电阻接电源,的输入信号同样也是从开关10K和电阻间引出。 当开关断开时,输入信号被电阻“拉”向电源,形成高电平(5V);当开关接通的时候,输入信号直接与地相连,形成低电平。 对于经常用到的按压式开关来讲,就是按下为低,抬起为高。 为了验证Arduino数字I/O的输入功能,我们可以将开关接在Arduino的任意一个数字I/O管脚上(13除外),并通过读取它的接通或者断开状态,来控制其它数字I/O管脚的高低。 本实验采用的原理图如下所示,其中开关接在数字I/O的7号管脚上,被控的发光二极管接在数字I/O的13号管脚上: Arduino教程三: 模拟输入5Comments? Arduino,教程2/28 Arduino的优势在于对数字信号的识别和处理,但我们所生活的真实世界并不是数字(digital)化的,简单到只要用0和1就能够表示所有的现象。 例如温度这一我们已经司空见惯的概念,它只能在一个范围之内连续变化,而不可能发生像从0到1这样的瞬时跳变,类似这样的物理量被人们称为是模拟(analog)的。 Arduino是无法理解这些模拟量的,它们必须在经过模数转换后变成数字量后,才能被Arduino进一步处理。 像温度这样的数据必须先被转换成微处理器能够处理的形式(比如电压),才能被Arduino处理,这一任务通常由各类传感器(sensor)来完成的。 例如,电路中的温度传感器能够将温度值转换成0V到5V间的某个电压,比如0.3V、3.27V、4.99V等。 由于传感器表达的是模拟信号,它不会像数字信号那样只有简单的高电平和低电平,而有可能是在这两者之间的任何一个数值。 至于到底有多少可能的值则取决于模数转换的精度,精度越高能够得到的值就会越多。 Arduino所采用的ATmega8微处理器一其有6个模数转换器(ADC,AnalogtoDigitalConverter),每一个模数转换器的精度都是10bit,也就是说能够读取1024(2^10=1024)个状态。 在Arduino的每一个模拟输入管脚上,电压的变化范畴是从0V到5V,因此Arduino能够感知到的最小电压变化是4.8毫伏(5/1024=4.8mV)。 电位计(potentiometer)是一种最简单的模拟输入设备,它实际上就是一个可变电阻箱,通过控制滑块所在的位置我们可以得到不同的电压值,而输入信号正是从滑块所在的位置接入到电路中的。 这一实验我们将通过改变电位计的值来控制发光二极管闪烁的频率。 电位计上一共有三个管脚,分别连接到Arduino的电源、地和模拟输入的5号管脚上,发光二极管则连接到数字I/O的13号管脚上,原理图如下所示: 相应的代码为: intledPin=13; intpotPin=5; intvalue=0; voidsetup(){ 3/28 pinMode(ledPin,OUTPUT); } voidloop(){ value=analogRead(potPin); digitalWrite(ledPin,HIGH); delay(value); digitalWrite(ledPin,LOW); delay(value); } 端口是有所不同的。 函数将其指定为输入或者是输出模式,这点同数字Arduino中,对模拟输入端口不需要调用pinMode()I/O在号管脚上所读入的模拟量5通过旋转电位计的轴,我们能改变电位计中间那根连线同地之间的电阻量,从而也就能改变从模拟输入的;当电位计完全旋转到另一0,用analogRead()函数读出的值为0V的值。 当电位计完全旋转到头时,输入到模拟输入管脚上的电压为;当电位计旋转到中间的某个位置时,输入到analogRead()函数读出的值为1023管脚上的电压为头时,输入到模拟I/O5V,此时用之间的某个对应值。 读出的模拟到10235V之间的某个值,而用analogRead()函数读出的则是位于00V模拟输入管脚上的电压是到量在我们的实验中被用来确定发光二极管点亮和熄灭的时间,以反映模拟量的变化。 从这电位计运用的是分压原理,通过旋转到不同的位置来得到不同的电压值。 因此可以被用在转种意义上讲,它能够被用来对当前旋转到的位置进行度量,向轮等旋转装置中。 板上另外一个错误,就是将模拟输入对应管脚号标反了,试了PCB今天发现一共有三个好久才意识到是这一问题。 加上之前电源设计上的两个小缺陷, : -)需要修改的地方。 如果有机会再做PCB板的话,试着将这些问题解决一下 相应的代码为: intledPin=13; intswitchPin=7; 4/28 intvalue=0; voidsetup(){ pinMode(ledPin,OUTPUT); pinMode(switchPin,INPUT); } voidloop(){ value=digitalRead(switchPin); if(HIGH==value){ //turnLEDoff digitalWrite(ledPin,LOW); }else{ //turnLEDon digitalWrite(ledPin,HIGH); } } 函数将发光二极管所在的管脚,此时再用digitalWrite()由于采用的是负逻辑电路,开关按下时用digitalRead()函数读取到的值为LOW置为高,点亮发光二极管。 同理,当开关抬起时,发光二极管将被熄灭,这样我们就实现了用开关来控制发光二极管的功能。 模拟输出Arduino教程四:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Arduino 教程 简明 例程