arduino教程第二讲课稿

上传人:suns****4568 文档编号:92805547 上传时间:2019-07-13 格式:PPT 页数:52 大小:325KB
返回 下载 相关 举报
arduino教程第二讲课稿_第1页
第1页 / 共52页
arduino教程第二讲课稿_第2页
第2页 / 共52页
arduino教程第二讲课稿_第3页
第3页 / 共52页
arduino教程第二讲课稿_第4页
第4页 / 共52页
arduino教程第二讲课稿_第5页
第5页 / 共52页
点击查看更多>>
资源描述

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

1、Arduino基础教程 基本函数的使用,Arduino语言,Arduino语言是建立在C/C+基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不了解AVR单片机(微控制器)的朋友也能轻松上手。,Arduino语言,关键字: if if.else for switch Case while do . while break continue return goto,Arduino语言,语法符号: ; / /*/,运算符: = + - * / %,Arduino语言,数据类型: boolean 布尔类型

2、char byte 字节类型 int unsigned int long unsigned long float double string array void,数据类型转换: char() byte() int() long() float(),Arduino语言,常量: HIGH | LOW 表示数字IO口的电平,HIGH 表示高电平(1),LOW 表示低电平(0)。 INPUT | OUTPUT 表示数字IO口的方向,INPUT 表示输入(高阻态),OUTPUT 表示输出(AVR能提供5V电压 40mA电流)。 true | false true 表示真(1),false表示假(0)。

3、,Arduino语言,/*Arduino 语言*/ 结构 void setup() 初始化变量,管脚模式,调用库函数等 void loop() 连续执行函数内的语句,一、数字I/O口的操作函数,1、pinMode(pin,mode); 2、digitalWrite(pin,value); 3、digitalRead(pin);,1、pinMode(pin,mode),pinMode函数用以配置引脚与输出或输入模式,它是一个无返回值函数。函数有两个参数,pin和mode。Pin参数表示要配置的引脚,mode参数表示设置的参数INPUT(输入)和OUTPUT(输出)。 INPUT参数用于读取信号,

4、OUTPUT用于输出控制信号。,PIN的范围是数字引脚013,也可以把模拟引脚(A0A5)作为数字引脚使用,此时编号为14脚对应模拟引脚0,19脚对应模拟引脚5. 一般会放在setup里,先设置再使用,2、digitalWrite(pin,value),该函数的作用是设置引脚的输出电压为高电平或低电平。该函数也是一个无返回值的函数。 Pin参数表示所要设置的引脚,value参数表示输出的电压HIGH(高电平)或LOW(低电平)。 注意:使用前必须先用pinMode设置。,3、digitalRead(pin),该函数在引脚设置为输入的情况下,可以获取引脚的电压情况HIGH(高电平)或者LOW第电

5、平。,例程,int button=9; /设置第9脚为按钮输入引脚 int LED=13; /设置第13脚为LED输出引脚,内部连上板上的LED灯。 void setup() pinMode(button,INPUT); /设置为输入 pinMode(LED,OUTPUT); /设置为输出 void loop() if(digitalRead(button)=LOW) /如果读取低电平 digitalWrite(LED,HIGH); /13脚输出高电平 else digitalWrite(LED,LOW); /否则输出低电平 ,二、模拟I/O口的操作函数,1、analogReference(t

6、ype); 2、analogRead(pin); 3、analogWrite(pin,value);,1、analogReference(type),该函数用于配置模拟引脚的参考电压。有3种类型。 DEFAULT:默认值,参考电压是5V. INTERNAL:低电压模式,使用片内基准电压源2.56V EXTERNAL:扩展模式,通过AREF引脚获取参考电压。 注意:不使用本函数的话,默认是参考电压5V。使用AREF接参考电压,需接个5K欧的上拉电阻。,2、analogRead(pin),用于读取引脚的模拟量电压值,每读取一次需要花100US的时间。参数pin表示所要获取模拟量电压值的引脚,返回为

7、int型。精度10位,返回值从01023。 注意:函数参数的pin范围是05,对应板上的模拟口A0A5。,3、analogWrite(pin,value),该函数是通过PWM的方式在引脚上输出一个模拟量。,PWMPulse-Width Modulation脉冲宽度调制,PWM输出的一般形式:,主要用于LED亮度控制,电机转速控制等方面。 Arduino中的PWM的频率大约为490HZ。 UNO板上支持以下数字引脚(不是模拟输入引脚)作为PWM模拟输出:3、5、6、9、10、11. 板上带PWM输出的都有号。 注意:PWM输出位数为8位,从0255,例程,int sensor=A0; /A0引脚

8、读取电位器 int LED=11; /第11引脚输出LED void setup() Serial.begin(9600); void loop() int v; v=analogRead(sensor); Serial.println(v,DEC); /可以观察读取的模拟量 analogWrite(LED,v/4); /读回的值范围是01023结果除以4才能得到0255的区间值 ,三、高级I/O,Pulseln(pin,state,timeout) 该函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或者LOW。如果是HIGH,函数将先等引脚变为高电平,然后开始计时,一直到变为低电平。 返回

9、脉冲持续的时间长度,单位为ms.如果超时没有读到的话,返回0.,例程说明:,做一个按钮脉冲计时器,测一下按钮的时间,测测谁的反应快,看谁能按出最短的时间。 按钮接第3脚,int button=3; int count; void setup() pinMode(button,INPUT); void loop() count=pulseIn(button,HIGH); if(count!=0) Serial.println(count,DEC); count=0; ,四、时间函数,1、delay(ms); 2、delayMicroseconds(us); 3、millis(); 4、micro

10、s();,1、delay(ms);,延时函数,参数是延时的时长,单位是ms(毫秒)。,例程跑马灯,void setup() pinMode(6,OUTPUT); /定义为输出 pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); void loop() int i; for(i=6;i=9;i+) /依次循环四盏灯 digitalWrite(i,HIGH); /点亮LED delay(1000); /持续1秒 digitalWrite(i,LOW); /熄灭LED delay(1000); /持续1秒 ,2、delayMicrosec

11、onds(us);,延时函数,参数是延时的时长,单位是us(微秒)。1ms=1000us. 该函数可以产生更短的延时。,3、millis(),应用该函数,可以获取单片机通电到现在运行的时间长度,单位是ms.系统最长的记录时间为9小时22分,超出从0开始。返回值是unsigned long型。 该函数适合作为定时器使用,不影响单片机的其他工作。(使用delay函数期间无法做其他工作。) 1000毫秒=1秒,例程延时10秒后自动点亮的灯,int LED=13; unsigned long i,j; void setup() pinMode(LED,OUTPUT); i=millis(); /读入初

12、始值 void loop() j=millis(); /不断读入当前时间值 if(j-i)10000) /如果延时超过10秒,点亮LED digitalWrite(LED,HIGH); else digitalWrite(LED,LOW); ,4、micros(),该函数返回开机到现在运行的微秒值。返回值是unsigned long .70分钟溢出。 1000微秒=1毫秒,例程原理,连续按按钮,看你的反应有多快。 按钮接D3;从第2按开始,每按一次会减去上一次按的时间,看你连续按的间隔时间有多快。,例程显示当前的微秒值,unsigned long time; void setup() Seri

13、al.begin(9600); void loop() Serial.print(“Time: “); time = micros(); /读取当前的微秒值 Serial.println(time); / 打印开机到目前运行的微秒值 data delay(1000); /延时1秒 ,例程跑马灯,int LED=13; unsigned long i,j; void setup() pinMode(LED,OUTPUT); i=micros(); /读入初始值 void loop() j=micros(); /不断读入当前时间值 if(j-i)1000000) /如果延时超过10秒,点亮LED

14、digitalWrite(LED1+k,HIGH); else digitalWrite(LED,LOW); ,五、中断函数,1、attachInterrupt(interrput,function,mode); 2、detachInterrupt(interrput);,日常生活中的中断,你在看书,电话铃响,于是你在书上做上记号,去接电话,与对方通话;门铃响了,有人敲门,你让打电话的对方稍等一下,你去开门,并在门旁与来访者交谈,谈话结束,关好门;回到电话机旁,继续通话,接完电话后再回来从做记号的地方接着看书。,接电话,与来访者交谈,电话铃响,敲门声,看 书,接电话,中断的概念,单片机中的中断

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

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

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