第03章 Arduino基本函数_第1页
第03章 Arduino基本函数_第2页
第03章 Arduino基本函数_第3页
第03章 Arduino基本函数_第4页
第03章 Arduino基本函数_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第章第章 ArduinoArduino基本函数基本函数 本章内容本章内容: 时间函数时间函数 数字数字I/O函数函数 模拟模拟I/O函数函数 随机函数随机函数 数学函数数学函数 中断函数中断函数 串口通信函数串口通信函数 SPI函数函数 3.1 3.1 时间函数时间函数 1. millis( ) millis函数可获取机器运行的时间长度,单位为函数可获取机器运行的时间长度,单位为 ms。系统最长的记录时间为。系统最长的记录时间为9小时小时22分,超出时间将分,超出时间将 从从0开始。函数返回值为开始。函数返回值为unsigned long型,无参数型,无参数 。 2. delay(ms) 函

2、数原型函数原型: unsigned long millis( ) 函数原型函数原型: void delay(unsigned long ms ) 3. delayMicroseconds( us) delayMicroseconds函数是一个延时函数,不同函数是一个延时函数,不同 在于其时间单位是微秒。在于其时间单位是微秒。 函数原型函数原型: void delayMicroseconds(unsigned int us) delay函数是一个延时函数,在函数是一个延时函数,在Blink程序中用到程序中用到 过,参数表示延时时长,单位是过,参数表示延时时长,单位是ms。函数无返回值。函数无返回

3、值 3.2 3.2 数字数字I/O函数函数 1、pinMode(pin , mode) pinMode函数用来配置函数用来配置Arduino引脚为输出或输引脚为输出或输 入模式,是一个无返回值的函数,参数入模式,是一个无返回值的函数,参数pin表示所要表示所要 配置的引脚,取值配置的引脚,取值013 ,mode表示需要的模式表示需要的模式 INPUT或或OUTPUT。 该函数一般用在初始化部分。该函数一般用在初始化部分。 2、digitalWrite(pin , value) digitalWrite函数用来设置引脚为高电平或低电平函数用来设置引脚为高电平或低电平 ,无返回值。参数,无返回值。

4、参数pin表示所要配置的引脚,表示所要配置的引脚,value表表 示输出的电压示输出的电压HIGH(高电平高电平)或或LOW(低电平低电平) 在数字电路中开关是一种基本的输入形式,它的在数字电路中开关是一种基本的输入形式,它的 作用是保持电路的连接或者断开。作用是保持电路的连接或者断开。Arduino从数字从数字I/O 管脚上只能读出管脚上只能读出高电平高电平(5V)或者)或者低电平低电平(0V),), 因此我们首先面临到的一个问题就是如何将开关的开因此我们首先面临到的一个问题就是如何将开关的开 /断状态转变成断状态转变成Arduino能够读取的高能够读取的高/低电平。解决的低电平。解决的 办

5、法是通过办法是通过上拉电阻上拉电阻/下拉电阻下拉电阻。 在在正逻辑正逻辑电路中,开关一端接电源,另一端则通电路中,开关一端接电源,另一端则通 过一个过一个10K的下拉电阻接地,输入信号从开关和电阻的下拉电阻接地,输入信号从开关和电阻 间引出。当开关断开的时候,输入信号被电阻间引出。当开关断开的时候,输入信号被电阻“拉拉”向向 地,形成低电平(地,形成低电平(0V);当开关接通的时候,输入信);当开关接通的时候,输入信 号直接与电源相连,形成高电平。对于经常用到的按号直接与电源相连,形成高电平。对于经常用到的按 压式开关,就是按下为高,抬起为低,如图压式开关,就是按下为高,抬起为低,如图1所示。

6、所示。 (a) 下拉电阻下拉电阻(b) 上拉电阻上拉电阻 上拉下拉电阻的主要作用是在开关常态时给线路上拉下拉电阻的主要作用是在开关常态时给线路 (节点)以一个固定的电平。(节点)以一个固定的电平。 图图1 上上/下拉电阻示意图下拉电阻示意图 3、digitalRead(pin) digitalRead函数在引脚为输入的情况下函数在引脚为输入的情况下,可获得引可获得引 脚的电压情况脚的电压情况-HIGH(高电平高电平)或或LOW(低电平低电平),参数,参数 pin表示所要读取的引脚表示所要读取的引脚,该函数返回值为该函数返回值为int,表示引,表示引 脚的电压情况。脚的电压情况。 实践操作实践操

7、作: 参考图参考图2所示电路原理图,并将其修改为正逻辑,通所示电路原理图,并将其修改为正逻辑,通 过开关的通断控制过开关的通断控制Arduino 2009板载板载led的亮与灭。的亮与灭。 图图2 数字引脚数字引脚I/O原理图原理图 按键是一种常用的控制电器元件,常用来接通或按键是一种常用的控制电器元件,常用来接通或 断开电路,从而达到控制电机或者其他设备运行的开断开电路,从而达到控制电机或者其他设备运行的开 关。按键的外观多种多样,本次操作使用的是这种微关。按键的外观多种多样,本次操作使用的是这种微 型按键,型按键,6mm6mm的,如图的,如图3 3所示。所示。 图图3 按键开关实物图按键开

8、关实物图 此种按键有此种按键有4个脚,从背面看如图个脚,从背面看如图4(a)所示,其原所示,其原 理图如图理图如图4(b)所示。所示。 (a) 按键引脚图按键引脚图(b) 按键原理图按键原理图 图图4 按键引脚按键引脚/原理图原理图 在按键没有按下去的时候在按键没有按下去的时候1,2号脚相连,号脚相连,3,4 号号 脚相连。按键按下去的时候,脚相连。按键按下去的时候,1,2,3,4号脚就全部接通号脚就全部接通 参考代码参考代码: int ledPin = 13; int switchPin = 7; int value = 0; void setup() pinMode(ledPin, OUT

9、PUT); pinMode(switchPin, INPUT); void loop() value = digitalRead(switchPin); if (HIGH = value) digitalWrite(ledPin, LOW); / turn LED off else digitalWrite(ledPin, HIGH); / turn LED on 1. analogReference(type) analogReference函数的作用是配置模拟引脚的参函数的作用是配置模拟引脚的参 考电压。在嵌入式应用中引脚获取模拟电压值之后,考电压。在嵌入式应用中引脚获取模拟电压值之后,

10、将根据参考电压将模拟值转换到将根据参考电压将模拟值转换到01023。该函数为。该函数为 无返回值函数,参数为无返回值函数,参数为type类型,有类型,有3种类型种类型(DEFAU LT /INTERNAL/EXTERNAL),具体含义如下:),具体含义如下: 。 3.3 3.3 模拟模拟I/O函数函数 DEFAULT :默认值,参考电压为:默认值,参考电压为5V。 INTERNAL:低电压模式,使用片内基准电压源。:低电压模式,使用片内基准电压源。 EXTERNAL:扩展模式,通过:扩展模式,通过AREF引脚获取参考引脚获取参考 电压,电压,AREF引脚位置见图。引脚位置见图。 注意:注意:如

11、果在如果在AREF引脚加载外部参考电压,需要使用引脚加载外部参考电压,需要使用 一个一个5K的上拉电阻,这会避免由于设置不当的上拉电阻,这会避免由于设置不当 造成控制芯片的损坏。造成控制芯片的损坏。 AREF引脚引脚数字口数字口PWM 模拟端口模拟端口 图图5 模拟模拟I/O相关引脚图相关引脚图 2. analogRead(pin) analogRead函数用于读取引脚的模拟量电压值,函数用于读取引脚的模拟量电压值, 每读一次需要花每读一次需要花100us的时间。参数的时间。参数pin表示所要获取表示所要获取 模拟量电压值的引脚,该函数返回值为模拟量电压值的引脚,该函数返回值为int型,表示引

12、型,表示引 脚的模拟量电压值,范围在脚的模拟量电压值,范围在01023。 3. analogWrite(pin,value) analogWrite函数通过函数通过PWM的方式在的方式在PWM引脚上引脚上 输出一个模拟量,较多的应用在输出一个模拟量,较多的应用在LED亮度控制、电机亮度控制、电机 转速控制等方面。转速控制等方面。 PWM(Pulse Width Modulation,脉冲宽度调制),脉冲宽度调制) 方式是通过对一系列脉冲的宽度进行调制,来等效地方式是通过对一系列脉冲的宽度进行调制,来等效地 获得所需要的波形或电压。脉冲宽度调制是一种模拟获得所需要的波形或电压。脉冲宽度调制是一种

13、模拟 控制方式,其根据相应载荷的变化调制晶体管栅极或控制方式,其根据相应载荷的变化调制晶体管栅极或 基极的偏置,来实现开关稳压电源输出晶体管或晶体基极的偏置,来实现开关稳压电源输出晶体管或晶体 管导通时间的改变,这种方式能使电源的输出电压在管导通时间的改变,这种方式能使电源的输出电压在 工作条件变化时保持恒定,是利用微处理器的数字输工作条件变化时保持恒定,是利用微处理器的数字输 出来对模拟电路进行控制的一种非常有效的技术。图出来对模拟电路进行控制的一种非常有效的技术。图 6是一个简单的是一个简单的PWM波示意图。波示意图。 其中,其中,VCC是高电平值,是高电平值,T是是PWM波的周期,波的周

14、期,D 是高电平的宽度,是高电平的宽度,D/T是是PWM波的占空比,当上述波的占空比,当上述P WM波通过一个低通滤波器后,波形中高频的部分被波通过一个低通滤波器后,波形中高频的部分被 滤掉得到所需的波形,其平均电压为滤掉得到所需的波形,其平均电压为VCCD/T。因。因 此,可通过此,可通过调节调节D的大小来改变占空比的大小来改变占空比,产生不同的,产生不同的 平均电压;同样,平均电压;同样,调节调节PWM波的周期波的周期T也可以改变占也可以改变占 空比空比,从而得到不同的平均电压值。,从而得到不同的平均电压值。 图图6 PWM波示意图波示意图 在在 Arduino 中执行该操作后,应该等待一

15、定时间中执行该操作后,应该等待一定时间 后才能对该引脚进行下一次操作。后才能对该引脚进行下一次操作。Arduino中的中的PWM 的频率大约为的频率大约为490Hz。该函数支持以下引脚:。该函数支持以下引脚:3、5、6 、9、10、11。在。在Arduino控制板上引脚号旁边标注控制板上引脚号旁边标注 PWM的就是的就是PWM的引脚的引脚 。 analogWrite函数为无返回值函数,有两个参数函数为无返回值函数,有两个参数 pin和和value,参数,参数pin表示所要设置的引脚,只能选择表示所要设置的引脚,只能选择 函数支持的引脚;参数函数支持的引脚;参数value表示表示PWM输出的占空

16、比输出的占空比 ,范围在,范围在0255的区间,对应的占空比为的区间,对应的占空比为0%100% 实践操作实践操作1: 本次操作通过本次操作通过PWM来控制一盏来控制一盏LED灯,让它慢慢变灯,让它慢慢变 亮再慢慢变暗,如此循环。接线图如图亮再慢慢变暗,如此循环。接线图如图7所示所示: 图图7 PWM控制控制Led亮度连线图亮度连线图 参考代码参考代码: int brightness = 0; /定义定义LED的亮度初值的亮度初值 int fadeAmount = 5; /定义亮度变化的增减量定义亮度变化的增减量 void setup() pinMode( 9, OUTPUT); void l

17、oop() analogWrite(9, brightness); brightness = brightness + fadeAmount; if (brightness = 0 | brightness = 255) fadeAmount = -fadeAmount ; delay(30); /延时延时30毫秒毫秒 注释与已知问题注释与已知问题: 当当PWM输出与输出与5,6 号端口的时候,会产生比预期号端口的时候,会产生比预期 更高的占空比。原因是更高的占空比。原因是 PWM 输出所使用的内部时钟输出所使用的内部时钟 ,millis()与与delay() 两函数也在使用。所以要注意使用两

18、函数也在使用。所以要注意使用 5 , 6 号端口时,空占比要设置的稍微低一些,或者会号端口时,空占比要设置的稍微低一些,或者会 产生产生5,6 号端口无法输出完全关闭的信号。号端口无法输出完全关闭的信号。 实践操作实践操作2: 本次操作通过模拟端口本次操作通过模拟端口0读入的电位器的电压值来控读入的电位器的电压值来控 制一盏制一盏LED灯,使它随着电位器的旋转而慢慢变亮再慢慢灯,使它随着电位器的旋转而慢慢变亮再慢慢 变暗,如此循环。接线图如图变暗,如此循环。接线图如图8所示所示: 图图8 模拟口输入模拟口输入/输出连线图输出连线图 注释与说明注释与说明: 模拟端口读入信号电压时从模拟端口读入信

19、号电压时从0到到5V的范围,经过的范围,经过 模拟输入函数读取,返回值为模拟输入函数读取,返回值为0 1024。而。而PWM端端 口占空比范围为口占空比范围为0 255,因此程序要有一个计算。,因此程序要有一个计算。 参考代码参考代码: int Log=0; void setup() pinMode( 3, OUTPUT); void loop() Log=analogRead(0); /读取模拟口读取模拟口0的电压值的电压值 Log=map(Log,0,1023,0,255); /将电压值转换为占空比将电压值转换为占空比 analogWrite(3,Log); /输出模拟电压输出模拟电压 d

20、elay(30); /延时延时30毫秒毫秒 3.4 3.4 随机函数随机函数 1. randomSeed(seed) randomSeed( )函数用来设置随机数种子,随机函数用来设置随机数种子,随机 种子的设置对产生的随机序列有影响。函数无返回种子的设置对产生的随机序列有影响。函数无返回 值值 。 2. random(howsmall,howbig) 应用应用random函数可生成一个随机数,两个参数函数可生成一个随机数,两个参数 howsmall和和howbig决定了随机数的范围,函数的参数决定了随机数的范围,函数的参数 及返回值均为及返回值均为long型型 。 3.5 3.5 数学函数数

21、学函数 1. min(x,y ) min(x, y)函数的作用是返回函数的作用是返回x、y两者中较小的。两者中较小的。 函数原型为:函数原型为: #define min(a,b) (a)(b)?(a):(b) 3. abs(x) abs(x)函数的作用是获取函数的作用是获取x的绝对值,函数原型为的绝对值,函数原型为 #define abs(x) (x)0?(x):-(x) 4. constrain(amt,low,high) constrain(amt,low,high)函数的工作过程是,函数的工作过程是, 如果值如果值amt小于小于low,则返回,则返回low;如果;如果amt大于大于hig

22、h, 则返回则返回high;否则,返回;否则,返回amt。 该函数一般可以用于将值归一化到某个区间内。该函数一般可以用于将值归一化到某个区间内。 函数原型为:函数原型为: #define constrain(amt,low,high) (amt)(high) ?(high):(amt) 5. map(x,in_min,in_max,out_min,out_max) map(x, in_min, in_max, out_min, out_max)函数函数 的作用是将的作用是将 in_min, in_max范围内的范围内的x等比映射到等比映射到 out_min, out_max范围内。函数返回值为

23、范围内。函数返回值为long型型 6. 三角函数三角函数 三角函数包括三角函数包括sin(rad)、cos(rad)、tan(rad),分,分 别得到别得到rad的正弦值、余弦值和正切值。返回值都为的正弦值、余弦值和正切值。返回值都为 double型。型。 3.6 3.6 串口通信串口通信 1. 串行通信与并行通信串行通信与并行通信 并行通信传输中有多个数据位,同时在两个设备并行通信传输中有多个数据位,同时在两个设备 之间传输。发送设备将这些数据位通过对应的数据线之间传输。发送设备将这些数据位通过对应的数据线 传送给接收设备,还可附加一位数据校验位。接收设传送给接收设备,还可附加一位数据校验位

24、。接收设 备可同时接收到这些数据,不需要做任何变换就可直备可同时接收到这些数据,不需要做任何变换就可直 接使用。接使用。 并行方式主要用于近距离通信。计算机内的总线并行方式主要用于近距离通信。计算机内的总线 结构就是并行通信的例子。这种方法的优点是传输速结构就是并行通信的例子。这种方法的优点是传输速 度快,处理简单。度快,处理简单。 (a) 并行通信并行通信(b) 串行通信串行通信 图图9 并行通信和串行通信示意图并行通信和串行通信示意图 串行数据传输时,数据是一位一位地在通信线上串行数据传输时,数据是一位一位地在通信线上 传输的,先由具有几位总线的计算机内的发送设备,传输的,先由具有几位总线

25、的计算机内的发送设备, 将几位并行数据经并将几位并行数据经并-串转换硬件转换成串行方式,串转换硬件转换成串行方式, 再逐位经传输线到达接收站的设备中,并在接收端将再逐位经传输线到达接收站的设备中,并在接收端将 数据从串行方式重新转换成并行方式,以供接收方使数据从串行方式重新转换成并行方式,以供接收方使 用。用。 串行数据传输的速度要比并行传输慢得多,但对串行数据传输的速度要比并行传输慢得多,但对 于覆盖面极其广阔的公用电话系统来说具有更大的现于覆盖面极其广阔的公用电话系统来说具有更大的现 实意义。实意义。 2.单工、半双工、全双工通信单工、半双工、全双工通信 根据信息的传送方向,串行通讯可以进

26、一步分为根据信息的传送方向,串行通讯可以进一步分为 单工、半双工和全双工三种。信息只能单向传送为单单工、半双工和全双工三种。信息只能单向传送为单 工;信息能双向传送但不能同时双向传送称为半双工工;信息能双向传送但不能同时双向传送称为半双工 ;信息能够同时双向传送则称为全双工。;信息能够同时双向传送则称为全双工。 A B Baudrate(波特率)波特率):每秒钟传输的二进制位数:每秒钟传输的二进制位数 bit/s Arduino中串口通信是通过中串口通信是通过HardwareSerial类来类来 实现的,在头文件实现的,在头文件 HardwareSerial.h 中定义了一个中定义了一个 Ha

27、rdwareSerial类的对象类的对象Serial,直接使用类的成员,直接使用类的成员 函数就可简单地实现串口通信。函数就可简单地实现串口通信。 (1) Serial.begin(speed) 3. Arduino串口通信串口通信 设置串行每秒传输数据的速率(波特率)。设置串行每秒传输数据的速率(波特率)。 在通讯时,可使用的值:在通讯时,可使用的值:300, 1200, 2400,4800, 9600, 14400, 19200, 28800, 38400, 57600 或或115200。 (2) Serial.available() 返回值为返回值为int类型。类型。 回传有多少位元组(

28、回传有多少位元组(bytes)的资料尚未被)的资料尚未被read() 函数读取,如果回传值是函数读取,如果回传值是0代表所有序列埠上资料都代表所有序列埠上资料都 已经被已经被read()函数读取。函数读取。 (3) Serial.read() 读串口并返回收到的数据。读串口并返回收到的数据。 (4) Serial.print(data) 从串行端口输出数据,默认为十进制。从串行端口输出数据,默认为十进制。 (5) Serial.print(data,encoding) 从串行端口输出数据从串行端口输出数据data,encoding为编码格式为编码格式 可以取值如下数据。可以取值如下数据。 DE

29、C : 十进制,默认方式十进制,默认方式 HEX : 十六进制方式十六进制方式 OCT : 八进制方式八进制方式 BIN : 二进制方式二进制方式 BYTE : 以以byte进行传送,显示以进行传送,显示以ASCII方式方式 (6) Serial.println、Serial.println(data,encoding) 同同Serial.print、Serial.println,但输出的数据会,但输出的数据会 自动换行。自动换行。 (7) Serial.flush( ) 有时因为资料速度太快,超过程序处理资料的速有时因为资料速度太快,超过程序处理资料的速 度,此时可使用此函数清除缓冲区内的数

30、据。经过此度,此时可使用此函数清除缓冲区内的数据。经过此 函数可以确保缓冲区函数可以确保缓冲区(buffer)内的数据都是最新的。内的数据都是最新的。 实践操作实践操作1: 本次操作,本次操作,Arduino通过其串口通过其串口接收接收来自与其相连的来自与其相连的 PC机传来的数据,然后根据机传来的数据,然后根据PC机的指令完成对不同机的指令完成对不同 硬件连接硬件连接: 图图10 Arduino串行输入硬件连接实物图串行输入硬件连接实物图 参考代码参考代码: void setup() pinMode( 3, OUTPUT); pinMode( 10, OUTPUT); Serial.begi

31、n(9600); void loop() if(Serial.available() switch(Serial.read() case 1: digitalWrite(3,HIGH);break; case 2:digitalWrite(10,HIGH);break; /end if delay(1000); 实践操作实践操作2: 本次操作,本次操作,Arduino通过其串口通过其串口向向与其相连的与其相连的PC机发机发 送数据,然后送数据,然后PC机将接收到的数据显示出来。机将接收到的数据显示出来。 图图11 Arduino串行输出硬件连接原理图串行输出硬件连接原理图 参考代码参考代码:

32、void setup() Serial.begin(9600);/可分别测试其它波特率可分别测试其它波特率 void loop() Serial.println(“Hello World”); /可分别测试可分别测试 print ,println /还可测试还可测试println(data,encoding)函数函数 注意注意:串行通信波特率的设置要求通信双发相同,否则通:串行通信波特率的设置要求通信双发相同,否则通 信不成功。信不成功。 图图12 Arduino串口通信波特率设置图串口通信波特率设置图 3.7 3.7 中断函数中断函数 1. 中断的过程中断的过程 某人看书某人看书某人正在处理

33、一件事某人正在处理一件事A 电话铃响电话铃响随机出现另一件事随机出现另一件事B 暂停读书暂停读书暂停事件暂停事件A 书中标记书中标记记录断点记录断点 接听电话接听电话处理事件处理事件B 继续看书继续看书接着处理事件接着处理事件A 中断请求中断请求 保护断点保护断点 中断响应中断响应 中断返回中断返回 (1) 中断中断 中断请求中断请求 中断响应中断响应中断处理中断处理中断返回中断返回 2. 中断的基本概念中断的基本概念 所谓中断,是指所谓中断,是指CPU暂停现行程序,转去处理暂停现行程序,转去处理 当前更紧急的事件,处理完毕,再返回原来的程序当前更紧急的事件,处理完毕,再返回原来的程序 的过程

34、。的过程。 (2) 中断源中断源 引起中断的事件即为中断源。引起中断的事件即为中断源。 (3) 中断响应中断响应 所谓中断响应,是指所谓中断响应,是指CPU对中断源中断请求的对中断源中断请求的 响应,包括保护断点和将程序转向中断服务程序的响应,包括保护断点和将程序转向中断服务程序的 入口地址。入口地址。 中断响应的条件:中断响应的条件: 有中断源发出中断请求有中断源发出中断请求 系统允许中断(开中断)系统允许中断(开中断) 中断优先级最优中断优先级最优 (4) 中断处理中断处理 中断处理就是执行中断服务程序的过程。包括中断处理就是执行中断服务程序的过程。包括 保护现场、处理中断源请求的事件、恢

35、复现场、中保护现场、处理中断源请求的事件、恢复现场、中 断返回。断返回。 (5) 中断返回中断返回 中断返回就是将中断返回就是将CPU的执行流程由中断服务程的执行流程由中断服务程 序返回到中断前的程序的过程。序返回到中断前的程序的过程。 中断处理过程的流程如图中断处理过程的流程如图13所示。所示。 图图13 中断处理过程流程图中断处理过程流程图 (1) interrupts( )和和noInterrupts( ) interrupts和和noInterrupts函数在函数在Arduino中负责中负责 打开打开和和关闭关闭总中断,函数无返回值,无参数总中断,函数无返回值,无参数 。 (2) at

36、tachInterrupt(interrupt,function,mode) attachInterrupt函数用于设置外部中断,函数有函数用于设置外部中断,函数有3 个参数:个参数:interrupt、function和和mode,分别表示中断,分别表示中断 源、中断处理函数、触发模式。参数中断源可选值源、中断处理函数、触发模式。参数中断源可选值0 或或1,在,在Arduino中一般对应中一般对应2号和号和3号数字引脚;参数号数字引脚;参数 function 用来指定中断的处理函数,参数值为函数的用来指定中断的处理函数,参数值为函数的 3. 中断相关的函数中断相关的函数 指针,触发模式有指针

37、,触发模式有4种类型:种类型:LOW(低电平触发)、(低电平触发)、 CHANGE(变化时触发)、(变化时触发)、RISING(低电平变为高(低电平变为高 电平触发)、电平触发)、FALLING(高电平变为低电平触发)。(高电平变为低电平触发)。 在使用在使用attachInterrupt函数时要注意以下几点函数时要注意以下几点: 在中断函数中在中断函数中delay函数不能使用。函数不能使用。 使用使用millis函数始终返回进入中断前的值。函数始终返回进入中断前的值。 读取串口数据的话,可能会丢失。读取串口数据的话,可能会丢失。 中断函数中使用的变量需要定义为中断函数中使用的变量需要定义为v

38、olatile型。型。 (3) detachInterrupt(uint8_t interruptNum) detachInterrupt函数用于取消中断,参数函数用于取消中断,参数interr- upt表示所要取消的中断源表示所要取消的中断源 。 实践操作实践操作1 1: 本次操作,硬件连接电路如图本次操作,硬件连接电路如图14所示,不使用中断所示,不使用中断 ,直接由按键控制,直接由按键控制Led的亮与灭,请大家查看处理效果。的亮与灭,请大家查看处理效果。 图图14 中断处理硬件连接实物图中断处理硬件连接实物图 参考代码参考代码: int pbIn = 2; / 定义输入信号引脚定义输入信

39、号引脚 int ledOut = A0; / 定义输出指示灯引脚定义输出指示灯引脚 int state = LOW; / 定义默认输入状态定义默认输入状态 void setup() / 设置输入信号引脚为输入状态、输出引脚为输出状态设置输入信号引脚为输入状态、输出引脚为输出状态 pinMode(pbIn, INPUT); pinMode(ledOut, OUTPUT); void loop() state = digitalRead(pbIn); /读取微动开关状态读取微动开关状态 digitalWrite(ledOut, state); /把读取的状态赋予把读取的状态赋予LED指示灯指示灯

40、/模拟一个长的流程或者复杂的任务模拟一个长的流程或者复杂的任务 for (int i = 0; i 100; i+) /延时延时10毫秒毫秒 delay(10); 实践操作实践操作2 2: 本次操作,硬件连接电路仍如图本次操作,硬件连接电路仍如图14所示,但本次操所示,但本次操 作使用中断,按键作为中断源,由按键控制作使用中断,按键作为中断源,由按键控制Led的亮与灭的亮与灭 ,请大家查看处理效果。,请大家查看处理效果。 参考代码参考代码: int pbIn = 0; / 定义中断引脚为定义中断引脚为0 int ledOut = A0; / 定义输出指示灯引脚定义输出指示灯引脚 volatile int state = LOW; / 定义默认输入状态定义默认输入状态 void setup() / 置置ledOut引脚为输出状态引脚为输出状态 pinMode(ledOut, OUTPUT); / 监视中断输入引脚的变化监视中断输入引脚的变化 attachInterrupt(pbIn, stateChange, CHANGE); void loop() / 模拟长时间运行的进程或复杂的任务。模拟长时间运行的进程或复杂的任务。 fo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论