Fireduino 开源创意平台 立即购买

拥有双核Cortex-M3处理器,集成高质量音频Codec和WiFi模组,拥有良好的IOT扩展性能,完美兼容Arduino IDE和Arduino标准接口,并支持FireBlock图形化编程软件,是一款首选的编程启蒙教学平台,更是一款开源的创意原型平台。

Analog I/O

更新时间:2017-08-08 阅读:1857

操作环境

  • 操作系统 : 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
}