Analog I/O
更新时间:2017-08-08 阅读:14295
目录
操作环境
- 操作系统 : windows 7 Ultimate 64-bit
- IDE : Arduino1.6.6
analogReference()
说明
选择ADC的基准电压(等同于可以输入电压的最大值)。Fireduino只能够选择内部基准电压,并且只有一个基准电压可以选取,为2.56V。
语法
analogReference(INTERNAL2V56)
参数
INTERNAL2V56 : 内部基准源,2.56V(默认)
返回值
无
注意事项
由于ADC的基准只有一项,实际上可以不进行配置。如果有进行配置其他选项的话,那么该配置语句是无效的,基准并不会因此改变。
analogRead()
说明
读取模拟引脚的输入电压测量值(不可大于基准电压)。 Fireduino一共有8个10bit的ADC(逐次逼近型)输入口,分别是A0~A7。调用此函数的时候,ADC会将基准电压分成1024份,然后一份一份的叠加, 直到最接近当前模拟引脚的电压为止,此时叠加的值就是电压测量值。 所以实际上引脚上的电压值为:V = value/1024*Vef(V:实际测量电压值,value为电压测量值,即此函数的返回值,Vef为基准电压,2.56V)。
语法
analogRead(pin)
参数
pin:需要进行ADC采集的模拟输入引脚。(A0~A7)
返回值
ADC测量值,取值为0~1023。 获取当前电压值的方法是:当前电压值 = (ADC测量值/1023)* ADC基准电压值。
注意事项
如果ADC采集对应的模拟输入引脚没有接入任何电流,那么由analogRead()返回的值将根据多项因素(例如其他模拟输入引脚,你的手靠近板子等)产生波动。
示例程序
int analogPin = A0; // potentiometer wiper (middle terminal) connected to analog pin A0 // outside leads to ground and +3.3V or VCC int val = 0; // variable to store the value read void setup() { Serial.begin(9600); // setup serial Serial.println("setup"); // print setup when setup serial successful } void loop() { float voltage; // variable for save the voltage of pin A0 val = analogRead(analogPin); // read the input pin voltage = (float)val / 1023.0 * 2.55; // calculate actual voltage of pin A0 base adc test value val Serial.print("adc_value is "); // debug info Serial.println(voltage); // debug value delay(1000); // delay 1s }
analogWrite() - PWM
说明
1. 从一个引脚输出模拟值(PWM)。 可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。 analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。 PWM信号的频率大约是556Hz。 2. Fireduino所有的数字引脚都可以使用此功能,使用此功能无须调用pinMode进行引脚配置。 3. analogWrite函数与模拟引脚、analogRead函数没有直接关系。
语法
analogWrite(pin,value)
参数介绍
pin : 输出PWM的数字引脚。(0~29) value : 输出PWM波的占空比。(0为完全关闭,255为完全打开)
返回值
无
示例程序
通过读取电位器的阻值控制LED的亮度。
int ledPin = 3; // LED connected to digital pin 3 int analogPin = 2; // potentiometer connected to analog pin 2 int val = 0; // variable to store the read value void setup() { pinMode(ledPin, OUTPUT); // sets the pin as output } void loop() { val = analogRead(analogPin); // read the input pin analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255 }