Arduino的模拟信号输入——电压测试

Arduino可以使用数字信号和模拟信号进行输入和输出。

其中数字信号只有两个值,即高电压1和低电压0。

数字信号输入和输出为

pinModde(pin,mode);
int value=digitalRead(pin);//输入该接口的信号
int value=digitalWrite(pin,HIGH);//输入高电平

其中pin为引脚,可以在之前就定义如

int pin=4;

然后mode即为该引脚的模式,有三种为 OUTPUT , INPUT , INPUT_PULLUP

其中INPUT_PULLUP为输入电压上拉,如果不设置上拉,而且现状态没有固定电压的话,他的电压会呈现高低无规律的变化。电压上拉即为当没有固定电压时,使得改引脚为高电压模式。

模拟信号的输入和输出为

int value=analogRead(pin);//输入该接口的信号
int value=analogWrite(pin);//输出信号

模拟信号的输入是Arduino开发板上的ANALOG IN五个接口;而模拟信号的输出实际上并不是模拟信号。而是以一钟特殊的方式来达到近似模拟输入的结果。这种方式叫做脉冲宽度调试(PWM,Pulse Width Modulation)。在Arduino UNO中,提供这个的引脚为3,5,6,9,10,11。


然后这里给出一个信号输入输出的实际例子

由数字信号输出,然后模拟信号输入。

电路如下




Arduino程序如下

int in=4;
int out=A1;
                   
void setup() {
 pinMode(in,OUTPUT);
 pinMode(out,INPUT);
 Serial.begin(9600);  //打开串口,设置波特率为9600bps
 delay(1000);
}

void loop() {
 digitalWrite(in,HIGH);  //首先使得输入高电平,即为5v
 delay(1000); 
 int value=0;            //定义值为0,也可以在程序一开始定义
 value=analogRead(out);  //使模拟信号输入的值为value
 float val=value*(5.0/1023.0);   //由于模拟信号输入的值为0到1023的值,即为0到5v的值,这里可以转换一下
 Serial.println(val);    //输出该点的电平是多少
 delay(1000);
 digitalWrite(in,LOW);   //当输入为低电平,即为0v
 delay(1000);
 value=analogRead(out);
 val=value*(5.0/1023.0);
 Serial.println(val);
 delay(1000);
}

其中模拟信号引脚可以接到第二和第三和电阻之前,又会是一个和上述不同的电平情况。

当接到第一个电阻之前时,输入的模拟电压的5v和0v交替变化。

当接到第三个电阻之后时,输入的模拟电压为0v。

猜你喜欢

转载自blog.csdn.net/yangwang5977/article/details/79913437