Arduino提供了大量的基础函数,包括I/O控制、时间函数、中断函数、数学函数、串口通信函数等,这些基础函数使单片机系统开发不再有复杂的底层代码,使用者可以很方便的对板子上的资源进行控制。另外,Arduino还提供了许多关于这些基础函数的应用实例,这些例子程序可以在Arduino开发环境的Files-Examples中找到,从而大大降低了初学者的学习难度,缩短了单片机系统开发周期。
数字I/O口的操作
1、pinMode(pin,mode)函数
pinMode函数用于配置引脚为输入或者输出模式,它是一个无返回值的函数,一般放在setup()函数体重,先设置再使用。
pinMode函数由两个参数–pin 和 mode,pin参数表示要配置的引脚代号,以Arduino Uno为例,它的取值范围是0~13,也可以把模拟引脚(A0~A5)作为数字引脚使用,此时编号为14脚到19脚。mode参数表示设置的模式——INPUT输入模式或者OUTPUT输出模式,其中INPUT用于读取信号,OUTPUT用于输出控制信号。
配置数字引脚3位输出模式的语句如下所示:
pinMode(3,OUTPUT);
2、digitalWrite(pin,value)
digitalWrite函数的作用是设置引脚的输出电压为高电平或低电平,也是一个无返回值的函数,在使用该函数设置引脚之前,需要先用pinMode()函数交引脚设置为OUTPUT模式,因为数字口具有输入或输出两种状态,需要预先定义。
digitalWrite函数有两个参数—pin 和 value, pin 代表引脚,value代表输出的电平——HIGH(高电平)或LOW(低电平)。
配置数字引脚2的输出电平为高:
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);
3、digitaRead(pin)
digitalRead函数的作用是获取引脚的电平情况,该函数返回值为int型———HIGH(高电平)或者LOW(低电平),在使用该函数时需要预先定义管脚INPUTmode。
digitalRead函数只有一个参数——pin,他表示所要获取的电压情况的引脚号,如果引脚没有连接到任何地方,那么将随机返回HIGH或者LOW。
获取4号管脚的电压情况语句:
pinMode(4,INPUT);
digitalRead(4);
模拟I/O接口的操作函数
1、analogReference(type)
analogReference函数的作用是配置模拟输入引脚的基准电压(即输入范围的最大值),它是一个无返回值的函数,只有一个参数type,type的选项有DEFAULT(默认)/INTERANL(内部)/INTERNAL1V1/INTERNAL2V56/EXTERNAL,,具体含义如下:
- DEFAULT:默认5V或者3.3V为基准电压。
- INTERANL:低电压模式,使用片内基准电压源
- INTERNAL1V1:低电压模式,以1.1V为基准电压
- INTERNAL2V56:低电压模式,以2.56V为基准电压。
- EXTERNAL:扩展接口,以AREF引脚(0~5V)的电压为基准电压。
设置模拟输入引脚的基准电压默认的语句:
analogRefernece(DEFAULT);
2、analogRead(pin)
analogRead函数的作用是从指定的模拟引脚读取模拟量,读取周期为100微妙,即最大读取速度可达每秒10000次,参数pin表示读取的模拟输入引脚编号,返回值为int型(范围在0~1023)。
Arduino Uno主板有6个通道10位AD转换器,即精度为10位,返回值是0~1023,也就是说输入电压为5V的读取精度为5V/1024个单位,约定于每个单位0.049V(4.9mV)。输入范围和进度可以通过analogReference()进行修改。
如输入电压为a,那么获取的模拟量输入3的电压值为:
int potPin = 3;
int value = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
value = analogRead(potPin) *a*1000/1023; //输入电压为a
Serial.println(value);
}
3、analogWrite(pin,value)
analogWrite函数的作用是通过PWM的方式将模拟值输入到引脚,即调用analogWrite函数后,相应的引脚会产生一个指定占空比的稳定方波(频率大约为490Hz),直到下一次调用该函数,可应用在LED亮度调节、电机调速控制等方面。
analogWrite函数是无返回值函数,有两个参数pin和value,参数pin表示输出PWM的引脚,这里只能选择函数支持的引脚,这个函数支持的引脚为3、5、6、9、10和11,参数value表示PWM占空比,因为PWM输出位数为8,所以其范围在0~255,对应占空比为0~100%,带PWM功能的引脚标有波浪线’~’。
从引脚11输出PWM:
int sensor = A0;
int LED = 11;
int value = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
value = analogRead(sensor);
Serial.println(value,DEC); //可以观察读取的模拟量的值
analogWrite(LED,value/4); //读取的模拟量是0~1023*分辨率,结果除以4才能到0-255
}
注意:
引脚5和6的PWM功能输出时将产生高于预期的占空比,这是因为millis()和delay()函数共用一个内部定时器,使得内部计时器在处理PWM时候分心,这种情况一般出现在低占空比时。
时间函数
delay(ms)
delay函数是一个延时函数,它是一个无返回值函数,参数是延时的时间长度,单位是ms。
delayMicroseconds(us)
delayMicroseconds函数是一个延时函数,可以产生更短时间的延时,参数是延时的长度,单位为微秒。
中断函数
单片机的中断可以描述为:由于某一随机事件的发生,单片机暂停在原程序的运行,转而执行另一个程序(随机事件),处理完毕之后又自动回到断点处继续执行,其中,中断源、主程序、中断服务程序简述如下:
- 中断源:引起中断的原因,或能够发生中断请求的来源。
- 主程序:单片机现在运行的程序。
- 中断服务程序:处理中断请求的程序。
interrupts()和noInterrupts()
在Arduino中,interrupts函数和noInterrupts函数分别负责打开与关闭中断,这两个函数均为无返回值的函数,无参数。
attachInterrrupt(interrupt,function,mode)
该函数用于设置外部中断,有三个参数,分别表示中断源、中断处理函数和触发模式,它们的具体含义如下:
- 中断源:可选0、1,对应2或3号数字引脚。
- 中断处理函数:指定中断的处理函数,是一段程序,当中断发生时执行该子程序部分,其中参数为函数的指针。
- 触发模式:有四种类型-LOW(低电平触发)、CHANGE(跳变时触发)、RISING(上升沿触发)、FALLING(下降沿触发)。
detachInterrupt(interrupt)用于取消中断。
串口通信函数
1、Serial.begin()
用于设置串口的波特率,波特率是指每秒传输的比特数,除以8就可以得到每秒传输的字节数,一般用9600、19200、57600、115200。
2、Serial.available()
用于判断串口是否接受到数据,该函数返回值为int型,不带参数。
3、Serial.read()
用于将串口数据读入,该函数返回值是int型,不带参数。
4、Serial.print()
用于从串口输出数据,数据可以是变量,也可以是字符串。
5、Serial.printIn()
比Serial.print()多了回车换行功能。
Serial.printIn(x,DEC);//输出并换行
今天的文章Arduino学习笔记(2)– Arduino基本函数分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/75157.html