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。