Arduino内置教程-模拟-模拟输入

在这个例子里我们用一个变化电阻(一个电位计或者光敏电阻),我们通过Arduino或者Genuino开发板的一个模拟输入引脚读取它的值,并且根据这个值改变内置LED灯闪烁的速率。这个电阻的模拟值是作为电压读取,因为这是模拟输入的工作方式。

简介

在这个例子里我们用一个变化电阻(一个电位计或者光敏电阻),我们通过Arduino或者Genuino开发板的一个模拟输入引脚读取它的值,并且根据这个值改变内置LED灯闪烁的速率。这个电阻的模拟值是作为电压读取,因为这是模拟输入的工作方式。

硬件要求

  • Arduino or Genuino 开发板
  • 电位计 或者 10KΩ 光敏电阻和 10KΩ 电阻
  • pin13引脚的内置LED灯 或者 220Ω 电阻和红色LED灯

电路

带电位计: Arduino内置教程-模拟-模拟输入 带光敏电阻: Arduino内置教程-模拟-模拟输入
  • 连接三根线到开发板。第一根从地到电位计的一个引脚。第二根从5V到电位计的另一个引脚。第三跟从模拟输入引脚A0到电位计的中间引脚。
  • 这个例子里,可以使用开发板的连接到pin13的内置LED灯。如果用外加的LED灯,把它的长脚(正极或者阳极)串联一个220 ohm电阻,再连接到数字引脚pin13,而它的短脚(负极或者阴极)连接到pin13旁边的GND引脚(地)
  • 这个电路基于光敏电阻,用一个分压器来使高阻抗模拟输入引脚来测量电压值。这些输入引脚不吸取任何电流,因而根据欧姆定律,这些在电阻的一端连接到5V的被测量的电压等于5V,而不管这些电阻值。为了获得按光敏电阻值匹配的电压值,一个电阻分压器是很有必要的。这个电路用一个可变电阻器,一个固定电阻,而测量点是在这些电阻值的中间。测量的电压(VOUT)符合以下公式:
Vout=Vin*(R2/(R1+R2)) 
其中Vin为5V,R2为10kohm和R1为光敏电阻值(范围从在黑暗的1M ohm到在亮处(10lumen)的10k ohm,再到光亮处(>100lumen)的1k ohm)。

原理图

电位计: Arduino内置教程-模拟-模拟输入 光敏电阻: Arduino内置教程-模拟-模拟输入

样例代码

  • 在程序开始部分,变量感应引脚被设置为模拟引脚A0,那个地方连接着电位计。ledPin被设置为数字引脚pin13.你也可以创建另外的变量,sensorValue来保存从你传感器里读到的值。
  • 用 analogRead() 命令转化输入电压范围(0-5V)到数字值(0-1023)。这个可以用叫模拟数字转换器或者ADC的微控制器来实现。
  • 通过转动电位计的轴,你可以改变电位计的电阻值。这会改变在中间引脚和其他两个外接引脚之间的电阻值,在模拟输入引脚处产生一个电压差。当轴转向一个方向,中间引脚和地引脚没有阻抗。中间引脚的电压值为0V,并且analogRead()返回0.当轴转向另一个方向,中间引脚和5V引脚没有阻抗。中间引脚的电压值为5V,并且analogRead()返回1023。转轴在之间时,analogRead()返回0-1023之间的一个数。
这个值,保存到sensorValue,用来为你的闪烁周期设置 delay() 。这个值越高,周期越长;越低,周期越短。在周期循环之前读取这个值,因此每次开/关的时间总是一样的。
int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 13;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);
  // stop the program for <sensorValue> milliseconds:
  delay(sensorValue);
  // turn the ledPin off:
  digitalWrite(ledPin, LOW);
  // stop the program for for <sensorValue> milliseconds:
  delay(sensorValue);
}

人已赞赏
官方内置动态

Arduino内置教程-模拟-模拟输入输出串口

2019-1-4 22:22:30

官方内置动态

Arduino内置教程-模拟-PWM模拟输出

2019-1-5 0:24:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索