Arduino的基本函数

网友投稿 2018-10-20 15:00

https://cdn.china-scratch.com/timg/181022/1500143E2-0.jpg

Arduino UNO控制器(摘引网络图片)

       我们知道,在Arduino平台标准参考开发板中,具有14路数字端口(D0—D13,其中6路可作为PWM输出),6路模拟端口(A0—A5),传感器、执行部件通过与相应的端口连接,数字端口输入输出数字信号,模拟端口输入模拟信号,控制器通过读取端口信号,发出数据信号控制执行部件执行任务。

数字I/O端口

数字信号是使用0、1表示的不连续信号,即通过二进制的形式表示的信号。在Arduino中,数字信号用高低电平来表示,高电平表示数字信号1,低电平表示数字信号0。

https://cdn.china-scratch.com/timg/181022/1500144M8-1.jpg

Arduino中14路数字端口和6路模拟端口都是数字引脚,使用它们都可以完成输入输出数字信号的功能,而在使用数字引脚输入输出信号时,就需要使用相关函数:pinMode(pin,mode)、digitalWrite(pin,value)、digitalRead(pin)

pinMode(pin,mode)

配置引脚为输出或输出模式,函数有两个参数pin、mode,pin参数表示所要配置的引脚,mode参数表示设置的模式—INPUT(输入)或OUTPUT(输出)。

digitalWrite(pin,value)

设置引脚的输出电压为高电平或低电平,函数有两个参数pin和value,pin参数表示所要设置的引脚,value参数表示输出的电压—HIGH(高电平)或LOW(低电平)。

digitalRead(pin)

当引脚为输入模式时,函数获取引脚的电压情况—HIGH(高电平)或LOW(低电平),参数pin表示所要获取电压值的引脚,具有返回值为int型。当Arduino以工作电压5V供电时,引脚的输入电压会不太稳定准确,因此会将-0.5V—1.5V的输入电压识别为低电平,3V—5.5V的输入电压识别为高电平,确保Arduino正常识别。

delay(参数):延时函数

表示延时的长短,单位为ms。

程序示例:按键LED灯

#define button  2     //宏定义按键引脚

#define led  8       //宏定义LED灯引脚

void setup() {

  int button_state = 0    //定义按键状态的变量

pinMode(button,INPUT);   //初始化按键引脚为输入状态

  pinMode(led,OUTPUT);   //初始化LED灯引脚为输出状态

}

void loop() {

  button_state = digitalRead(button);  //读取按键引脚状态并赋值给变量

if(button_state == HIGH){       //判断按键状态:是否按下

digitalWrite(led,HIGH);    //是,点亮LED灯

}else{

digitalWrite(led,LOW);    //否,熄灭LED灯

}

 }

模拟I/O端口

模拟信号是用连续变化的物理量来表示信息的,信号随时间连续不断变化。在Arduino中,一般使用0—5V电压来表示,带有“A”字母的引脚是模拟输入(只有输入)引脚,控制器可以读取这些引脚输入的模拟信号值。

https://cdn.china-scratch.com/timg/181022/1500144115-2.jpg

Arduino中模拟输入引脚是具有模/数转换器的功能,能将外部输入的模拟信号转换为控制器芯片可运算的数字信号,从而实现读取模拟值的功能;在模拟输出时,通过PWM(脉冲宽度调制)来实现(此时想到数字引脚中有6路是PWM输出),相关函数有:analogRead(pin)、analogWrite(pin,value)

analogRead(pin)

在引脚必须为模拟输入引脚的情况下,可以获取引脚的模拟值,参数pin表示所要获取模拟值的引脚。

analogWrite(pin,value)

使用该函数时,指定的引脚会通过高低电平输出一个固定周期的方波,通过改变高低电平在每个周期中所占的比例,近似得到输出不同电压的效果,得到的仅是近似模拟值。

程序示例:呼吸灯

float num=0;    //定义存储电位器模拟值的变量;

int a=0;        //定义存储延时的变量;

void setup()  

{                   

  pinMode(A1, INPUT);    //设置模拟输入引脚模式为输入;

  pinMode(8, OUTPUT);   //设置LED灯引脚为输出模式;

}

void loop()

{

  num=analogRead(A1);   //将电位器模拟值赋给变量num;

  a=20*(num/1024);      //将电位器模拟值处理为0—20之间;

  digitalWrite(8,HIGH);    

  delay(a);               //将a用于延时;

  digitalWrite(8,LOW);

  delay(20-a);

}

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com