资讯详情

Arduino基础入门篇10—电位器控制LED灯

本篇介绍Arduino通过读取电位器输入的电压值来控制模拟输入功能LED灯的亮度。

带有模拟输入引脚ADC(Analog-to-Digital Converter,模数转换器)功能的引脚。它可以将外部输入的模拟信号转换为芯片操作中可识别的数字信号,从而读取模拟值。

Arduino 模拟输入功能具有10位精度,即0~5V将电压信号转换为0~1024的整数表示。

我们使用它analogRead() 函数读取电位器输入的电压值,然后通过analogWrite()函数来控制LED灯亮度。

1. 实验材料

  • Uno R3开发板
  • 配套USB数据线
  • 面包板及配套连接线
  • 1个LED灯
  • 1个220Ω限流电阻
  • 1个电位器

其原理如下图所示:

电位器原理图

通过旋转旋钮改变2号脚的位置,从而改变2号脚到两端的电阻值。在实验中,将1脚和3脚分别连接到开发板的5脚V的GND,然后通过模拟输入引脚A读取电位器2号脚的电压,其范围为0V和5V之间。

2. 实验步骤

  1. 根据原理图构建电路。

    直插LED灯正极连接限流电阻,电阻另一端连接开发板第10引脚,LED灯负极端开发板GND。电位脚和3号脚分别连接开发板5V和GND,2号脚连接开发板A0引脚。

    实验原理图如下图所示:

实物连接图如下图所示:

  1. 新建sketch,替换自动生成的代码并保存以下代码。
/* AnalogRead 改变电位器LED灯亮度 */  int ledPin = 10;  int readValue = 0; ///保存读到的模拟值 int ledValue = 0;  //保存LED灯占空比  void setup() { 
           pinMode(ledPin, OUTPUT);     ///数字口选择带~号的具有pwm功能输出口 }  void loop() { 
           readValue = analogRead(A0);     //读取A0模拟口值(0-5V 对应 0-1204取值)   ledValue = map(readValue, 0, 1024, 0, 255); ///将0-1024之间的数据映射成0-255之间的数据   analogWrite(ledPin, ledValue);   //PWM最大取值255  }  
  1. 连接开发板,设置相应的端口号和开发板类型,下载程序。

3. 实验现象

旋转电位器旋钮,LED亮度变化。

4. 函数介绍

  • 描述:读取指定模拟引脚的值。
  • 函数原型:
  • 参数:模拟输入引脚。
  • 返回值:到1024之间的整数。

  • 描述:将数据从一个范围映射到另一个范围。
  • 函数原型:
  • 参数:
    • value: 要映射的数据
    • fromLow: 当前范围的下限值。
    • formHigh: 当前范围的上限值。
    • toLow: 目标范围的下限值。
    • toHigh: 目标范围的上限值。
  • 返回值:重新映射后的数据。

5. 实验分析

程序中通过analogRead()函数来读取模拟输入值,这个输入值的范围是0到1024之间,然后通过analogWrite()函数来改变LED灯占空比,占空比的范围是0到255之间。通过使用map()函数将范围做了重新映射。

更多内容,欢迎关注我的公众号。 微信扫一扫下方二维码即可关注:

标签: 电位器的类型

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台