ARDUINO教程第二讲

上传人:枫** 文档编号:568646359 上传时间:2024-07-25 格式:PPT 页数:46 大小:193.50KB
返回 下载 相关 举报
ARDUINO教程第二讲_第1页
第1页 / 共46页
ARDUINO教程第二讲_第2页
第2页 / 共46页
ARDUINO教程第二讲_第3页
第3页 / 共46页
ARDUINO教程第二讲_第4页
第4页 / 共46页
ARDUINO教程第二讲_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《ARDUINO教程第二讲》由会员分享,可在线阅读,更多相关《ARDUINO教程第二讲(46页珍藏版)》请在金锄头文库上搜索。

1、Arduino基础教程 基本函数的使用广州大学实验中心 黄文恺一、数字I/O口的操作函数n1、pinMode(pin,mode);n2、digitalWrite(pin,value);n3、digitalRead(pin);1、pinMode(pin,mode)npinMode函数用以配置引脚与输出或输入模式,它是一个无返回值函数。函数有两个参数,pin和mode。Pin参数表示要配置的引脚,mode参数表示设置的参数INPUT(输入)和OUTPUT(输出)。nINPUT参数用于读取信号,OUTPUT用于输出控制信号。nPIN的范围是数字引脚013,也可以把模拟引脚(A0A5)作为数字引脚使用

2、,此时编号为14脚对应模拟引脚0,19脚对应模拟引脚5.n一般会放在setup里,先设置再使用2、digitalWrite(pin,value)n该函数的作用是设置引脚的输出电压为高电平或低电平。该函数也是一个无返回值的函数。nPin参数表示所要设置的引脚,value参数表示输出的电压HIGH(高电平)或LOW(低电平)。n注意:使用前必须先用pinMode设置。3、digitalRead(pin)n该函数在引脚设置为输入的情况下,可以获取引脚的电压情况HIGH(高电平)或者LOW第电平。例程nint button=9; /设置第9脚为按钮输入引脚nint LED=13; /设置第13脚为LE

3、D输出引脚,内部连上板上的LED灯。nvoid setup()n pinMode(button,INPUT); /设置为输入n pinMode(LED,OUTPUT); /设置为输出nnvoid loop()n if(digitalRead(button)=LOW) /如果读取高电平n digitalWrite(LED,HIGH); /13脚输出高电平n elsen digitalWrite(LED,LOW); /否则输出低电平n二、模拟I/O口的操作函数n1、analogReference(type);n2、analogRead(pin);n3、analogWrite(pin,value);

4、1、analogReference(type)n该函数用于配置模拟引脚的参考电压。有3种类型。nDEFAULT:默认值,参考电压是5V.nINTERNAL:低电压模式,使用片内基准电压源2.56VnEXTERNAL:扩展模式,通过AREF引脚获取参考电压。n注意:不使用本函数的话,默认是参考电压5V。使用AREF接参考电压,需接个5K欧的上拉电阻。2、analogRead(pin)n用于读取引脚的模拟量电压值,每读取一次需要花100US的时间。参数pin表示所要获取模拟量电压值的引脚,返回为int型。精度10位,返回值从01023。n注意:函数参数的pin范围是05,对应板上的模拟口A0A5。

5、3、analogWrite(pin,value)n该函数是通过PWM的方式在引脚上输出一个模拟量。PWMPulse-Width Modulation脉冲宽度调制PWM输出的一般形式:n主要用于LED亮度控制,电机转速控制等方面。nArduino中的PWM的频率大约为490HZ。nUNO板上支持以下数字引脚(不是模拟输入引脚)作为PWM模拟输出:3、5、6、9、10、11. 板上带PWM输出的都有号。n注意:PWM输出位数为8位,从0255例程nint sensor=A0; /A0引脚读取电位器nint LED=11; /第11引脚输出LEDnvoid setup()n Serial.begin

6、(9600);nnvoid loop()n int v;n v=analogRead(sensor);n Serial.println(v,DEC); /可以观察读取的模拟量n analogWrite(LED,v/4); /读回的值范围是01023结果除以4才能得到0255的区间值n 三、高级I/OnPulseln(pin,state,timeout)n该函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或者LOW。如果是HIGH,函数将先等引脚变为高电平,然后开始计时,一直到变为低电平。n返回脉冲持续的时间长度,单位为ms.如果超时没有读到的话,返回0.例程说明:n做一个按钮脉冲计时器,测一

7、下按钮的时间,测测谁的反应快,看谁能按出最短的时间。n按钮接第3脚nint button=3;nint count;nvoid setup()npinMode(button,INPUT);nnvoid loop()n count=pulseIn(button,HIGH);n if(count!=0)n Serial.println(count,DEC);n count=0;n n四、时间函数n1、delay(ms);n2、delayMicroseconds(us);n3、millis();n4、micros();1、delay(ms);n延时函数,参数是延时的时长,单位是ms(毫秒)。例程跑马

8、灯nvoid setup()nn pinMode(6,OUTPUT); /定义为输出n pinMode(7,OUTPUT);n pinMode(8,OUTPUT);n pinMode(9,OUTPUT);nnvoid loop()n int i; nfor(i=6;i10000) /如果延时超过10秒,点亮LEDn digitalWrite(LED,HIGH);n n else digitalWrite(LED,LOW);n4、micros()n该函数返回开机到现在运行的微秒值。返回值是unsigned long .70分钟溢出。n1000微秒=1毫秒例程原理n连续按按钮,看你的反应有多快。n

9、按钮接D3;从第2按开始,每按一次会减去上一次按的时间,看你连续按的间隔时间有多快。例程显示当前的微秒值nunsigned long time; nvoid setup()n Serial.begin(9600); n nvoid loop()n Serial.print(Time: ); ntime = micros(); /读取当前的微秒值nSerial.println(time); / 打印开机到目前运行的微秒值ndata delay(1000); /延时1秒n 例程跑马灯nint LED=13;nunsigned long i,j; nvoid setup()npinMode(LED,

10、OUTPUT);n i=micros(); /读入初始值nnvoid loop()n j=micros(); /不断读入当前时间值n if(j-i)1000000) /如果延时超过10秒,点亮LEDn digitalWrite(LED1+k,HIGH);n n else digitalWrite(LED,LOW);n五、中断函数n1、attachInterrupt(interrput,function,mode);n2、detachInterrupt(interrput);日常生活中的中断日常生活中的中断 你在看书,电话铃响,你在看书,电话铃响,于是你在书上做上记号,于是你在书上做上记号,去接

11、电话,与对方通话;去接电话,与对方通话;门铃响了,有人敲门,你门铃响了,有人敲门,你让打电话的对方稍等一下,让打电话的对方稍等一下,你去开门,并在门旁与来你去开门,并在门旁与来访者交谈,谈话结束,关访者交谈,谈话结束,关好门;回到电话机旁,继好门;回到电话机旁,继续通话,接完电话后再回续通话,接完电话后再回来从做记号的地方接着看来从做记号的地方接着看书。书。看看 书书接接电电话话与与来来访访者者交交谈谈电话铃响敲门声看看 书书接接电电话话n 中断的概念 单片机中的中断概念单片机中的中断概念n中断由于某一随机事件的发生,计算机暂停原程序的运行,转去执行另一程序(随机事件),处理完毕后又自动返回原

12、程序继续运行。n中断源引起中断的原因,或能发生中断申请的来源。n主程序计算机现行运行的程序。n中断服务子程序处理突发事件的程序。 主主程程序序主主程程序序中中断断服服务务程程序序1中中断断服服务务程程序序1中中断断服服务务程程序序2随机事件1随机事件21、attachInterrupt(interrput,function,mode);n该函数用于设置外部中断,函数有3个参数,分别表示中断源,中断处理函数和触发模式。n中断源可选0或者1,对应2或者3号数字引脚。n中断处理函数是一段子程序,当中断发生时执行该子程序部分。n触发模式有四种类型,LOW(低电平触发)、CHANGE(变化时触发)、RI

13、SING(低电平变为高电平触发)、FALLING(高电平变为低电平触发)例程原理n数字D2口接按钮开关,D4口接LED灯1(红色)。D5口接LED2(绿色)。n在例程中,LED3每秒闪烁一次。使用中断0来控制LED1,中断1来控制LED2。n按下按钮,马上响应中断,由于中断响应速度快,LED3不受影响,继续闪烁。比查询的效率要高。n尝试4个参数,例程1试验LOW,CHANGE参数,例程2试验RISING和FALLING参数。nvolatile int state1=LOW,state2=LOW;nint LED1=4;nint LED2=5;nint LED3=13; /使用板载的LED灯nv

14、oid setup()n pinMode(LED1,OUTPUT);n pinMode(LED2,OUTPUT);n pinMode(LED3,OUTPUT);n attachInterrupt(0,LED1_Change,LOW); /低电平触发n attachInterrupt(1,LED2_Change,CHANGE); /任意电平变化触发nnvoid loop()n digitalWrite(LED3,HIGH); n delay(500);n digitalWrite(LED3,LOW);n delay(500);nnvoid LED1_Change()n state1=!state

15、1;n digitalWrite(LED1,state1);n delay(100);nnvoid LED2_Change()n state2=!state2;n digitalWrite(LED2,state2);n delay(100);nnvolatile int state1=LOW,state2=LOW;nint LED1=4;nint LED2=5;nint LED3=13;nvoid setup()n pinMode(LED1,OUTPUT);n pinMode(LED2,OUTPUT);n pinMode(LED3,OUTPUT);n attachInterrupt(0,LED

16、1_Change,RISING); /电平上升沿触发n attachInterrupt(1,LED2_Change,FALLING); /电平下降沿触发nnvoid loop()n digitalWrite(LED3,HIGH);n delay(500);n digitalWrite(LED3,LOW);n delay(500);nnvoid LED1_Change()n state1=!state1;n digitalWrite(LED1,state1);n delay(100);nnvoid LED2_Change()n state2=!state2;n digitalWrite(LED2

17、,state2);ndelay(100);n2、detachInterrupt(interrput);n该函数用于取消中断,参数interrupt表示所要取消的中断源。六、串口通讯函数n1、Serial.begin();n2、Serial.available();n3、Serial.read();n4、Serial.print();n5、Serial.println();串口概述n串行接口Serial Interface是指数据一位位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信.n串口的出现是在1980年前后,数据传输率是115kbps230kbps。串口出现的初期是为了

18、实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备 。n由于串口(COM)不支持热插拔及传输速率较低目前部分新主板和大部分便携电脑已开始取消该接口,目前串口多用于工控和测量设备以及部分通信设备中。 串口的应用n应用举例:各种传感器采集装置,GPS信号采集装置,多个单片机通讯系统,门禁刷卡系统的数据传输,机械手控制、操纵面板控制电机等等。广泛应用于低速数据传输的工程应用。1、Serial.begin();n该函数用于设置串口的波特率。一般的波特率有9600,19200, 57600,115200等。n波特率是指每秒传输的比特数。除以8可以得到每秒传输的

19、字节数。n示范:Serial.begin(57600);2、Serial.available();该函数用来判断串口是否收到数据,函数的返回值为int型,不带参数。3、Serial.read();n将串口数据读入。该函数不带参数,返回值为串口数据,int型。4、Serial.print();n该函数往串口发数据。可以发变量,也可以发字符串。n例句1:Serial.print(“today is good”);n例句2:Serial.print(x,DEC); 以10进制发送xn例句3: Serial.print(x,HEX); 以16进制发送变量x.5、Serial.println();n该函

20、数与Serial.print()类似,只是多了换行功能。例程:nint x=0;nvoid setup()n Serial.begin(9600); /波特率9600nnvoid loop()nn if(Serial.available()n x=Serial.read();n Serial.print(I have received:); n Serial.println(x,DEC); /输出并换行n n delay(200);n七、数学库n1、min(x,y); 求两者最小值n2、max(x,y); 求两者最大值n3、abs(x); 求绝对值n4、sin(rad); 求正弦值n5、cos(rad); 求余弦值n6、tan(rad); 求正切值n7、random(small,big); 求两者之间的随机数7、random(small,big); n返回值为longn举例:long x;x=random(0,100);可以生成从0到100以内的整数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号