Arduino的数字信号、模拟信号以及串口整理

Arduino Uno开发板上由13个数字输入输出管脚(其中有6个模拟输出管脚:3、5、6、9、10、11)和6个模拟输入管脚(A0~A5).
我们通过设置管脚模式来设置该管脚为输入还是输出
pinMode(ledPin, OUTPUT);//将管脚ledPin设置为OUTPUT输出模式,比如控制小灯的状态
pinMode(buttonPin, INPUT);//将管脚buttonPin设置为INPUT输入模式,比如读取开关按钮的状态

数字输入输出

Arduino的数字IO口上能读出两个状态值,一个是高电平(5V),另一个是低电平(0V)
数字输出
digitalWrite(ledPin,LOW/HIGH);//比如小灯的开与关
数字输入
digitalRead(buttonPin, LOW/HIGH);//比如读取开关按钮的开和关

模拟输入输出

Arduino的模拟输入量是0-1023,而模拟输出却是0-255。1ATMEA328ADC是一个10位的寄存器,2的10次方=1024,所以当Arduino读入值为默认的电压最大值5V时,analogRead读到的值就是1024,这里应该是1023。Arduino的微控制器只能产生高电平(5V)或者低电平(0V),而不能产生变化的电压,因此必须采用脉宽度调制技术(PWM,Pulse Width Modulation)来模拟电压变化。用于产生模拟信号的脉冲宽度,取值范围是0到255。脉冲宽度的值取0可以产生0V的模拟电压,取255则可以产生5V的模拟电压。

模拟输出
analogWrite(ledPin,0~255); //比如小灯的亮度变化
模拟输入
analogRead(buttonPin,0~1023); //比如要读入温度传感器的温度变化

串口通信

Arduino Uno开发板只有一个硬件串口,位于RX(0)和TX(1)管脚。Arduino的USB口通过转换芯片与这两个引脚连接。该转换芯片会通过USB接口在PC机上虚拟出一个用于Arduino通信的串口,我们烧录程序也是通过串口进行的。
硬件串口默认为Serial
相关的函数有:
Serial.begin();//开启串口
Serial.available();//判断串口缓冲区是否有数据,返回串口缓冲区中当前剩余的字符个数
Serial.read();//读取串口数据,一次读一个字符,读完后删除已读数据
Serial.write();//写入数据到串口
Serial.print();//串口输出数据
Serial.println();//串口输出数据并换行
Serial.end();//禁止串口

有时候我们想用多个串口来连接多个外接设备,这时就可以利用Arduino提供的SoftwareSerial类库来设置多个软串口。使用前需要先声明包含SoftwareSerial.h头文件。
#include<SoftwareSerial.h>
以下将管脚2,3设置为软串口管脚
SoftwareSerial mySerial(rxPin,txPin);
rxPin=2;
txPin=3;

开启多个软串口后,但是Arduino Uno在同一时间仅能监听一个软串口,当你需要监听某一软串口时,需要该对象调用这个函数开启监听功能。
mySerial.listen();//开启软串口监听状态
mySerial.isListening();//监测软串口是否正在监听状态,返回值(Boolean型)True:正在监听,False:没有监听
mySerial.end();//停止监听软串口,返回值(Boolean型)True:关闭监听成功,False:关闭监听失败
mySerial.overflow();//检测缓冲区是否溢出,返回值(Boolean型)True:溢出,False:没有溢出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章