Arduino电位器控制LED学习笔记教程

一、电位器模块基础知识

电位器模块是创客常用的电子元件,它实际上是可变电阻的一种。电位器通常有三个触点,由一个电阻体和转动系统构成。当在电阻体的两个固定触点(两端引脚)外加电压时,通过转动旋钮可以改变中间引脚上分到的电压比例,进而改变输出的电压值。

电位器模块一般有三个引脚,分别是信号引脚、正极引脚和负极引脚。通过这三个引脚,我们可以方便地将电位器接入Arduino电路中,实现模拟信号的输入。

二、电路连接

本次实验需要连接以下组件:

  • Arduino开发板
  • 电位器模块
  • 3个LED灯(红、绿、蓝各一个)
  • 3个220Ω电阻(用于保护LED)

具体连接方式如下:

  1. 电位器模块连接:

    • 正极引脚接Arduino的5V
    • 负极引脚接Arduino的GND
    • 信号引脚接Arduino的模拟输入引脚A0
  2. LED连接:

    • 红灯通过220Ω电阻接Arduino数字引脚2
    • 绿灯通过220Ω电阻接Arduino数字引脚3
    • 蓝灯通过220Ω电阻接Arduino数字引脚4

所有LED的负极(短脚)都接Arduino的GND。

三、代码实现与解析

下面是完整的Arduino代码,我添加了详细的注释帮助你理解:

// 定义LED连接的引脚
int RED_LED_PIN = 2;
int GREEN_LED_PIN = 3;
int BLUE_LED_PIN = 4;
// 定义电位器连接的引脚
int POTENTIOMETER_PIN = A0;

// 存储电位器读取的数值
int potentiometerValue;

void setup() {
  // 初始化串口通信,波特率为9600bps
  Serial.begin(9600);
  
  // 设置LED引脚为输出模式
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(GREEN_LED_PIN, OUTPUT);
  pinMode(BLUE_LED_PIN, OUTPUT);
  
  // 设置电位器引脚为输入模式
  pinMode(POTENTIOMETER_PIN, INPUT);
  
  // 打印初始化信息
  Serial.println("系统初始化完成!");
  Serial.println("请旋转电位器观察LED变化...");
}

void loop() {
  // 读取电位器的模拟值(范围0-1023)
  potentiometerValue = analogRead(POTENTIOMETER_PIN);
  
  // 打印当前电位器值,方便调试
  Serial.print("电位器值: ");
  Serial.println(potentiometerValue);
  
  // 根据电位器值控制LED显示不同颜色
  if (potentiometerValue <= 200) {
    // 电位器值很低时,点亮红灯
    digitalWrite(RED_LED_PIN, HIGH);
    digitalWrite(GREEN_LED_PIN, LOW);
    digitalWrite(BLUE_LED_PIN, LOW);
    Serial.println("状态: 红灯亮");
  } 
  else if (potentiometerValue > 200 && potentiometerValue <= 500) {
    // 电位器值中等偏低时,点亮绿灯
    digitalWrite(RED_LED_PIN, LOW);
    digitalWrite(GREEN_LED_PIN, HIGH);
    digitalWrite(BLUE_LED_PIN, LOW);
    Serial.println("状态: 绿灯亮");
  } 
  else if (potentiometerValue > 500 && potentiometerValue <= 800) {
    // 电位器值中等偏高时,点亮蓝灯
    digitalWrite(RED_LED_PIN, LOW);
    digitalWrite(GREEN_LED_PIN, LOW);
    digitalWrite(BLUE_LED_PIN, HIGH);
    Serial.println("状态: 蓝灯亮");
  } 
  else if (potentiometerValue > 800 && potentiometerValue <= 900) {
    // 电位器值很高时,点亮所有灯(白色)
    digitalWrite(RED_LED_PIN, HIGH);
    digitalWrite(GREEN_LED_PIN, HIGH);
    digitalWrite(BLUE_LED_PIN, HIGH);
    Serial.println("状态: 所有灯亮(白色)");
  } 
  else {
    // 电位器值非常高时,关闭所有灯
    digitalWrite(RED_LED_PIN, LOW);
    digitalWrite(GREEN_LED_PIN, LOW);
    digitalWrite(BLUE_LED_PIN, LOW);
    Serial.println("状态: 所有灯灭");
  }
  
  // 延时20毫秒,避免读取和处理数据过快
  delay(20);
}

四、代码工作原理详解

1. 变量和引脚定义部分

  • 我们使用const int定义了LED和电位器连接的引脚,这样方便后续维护和修改
  • potentiometerValue变量用于存储从电位器读取的模拟值

2. setup()函数

  • 初始化串口通信,这样我们可以在串口监视器中查看调试信息
  • 设置LED引脚为输出模式,电位器引脚为输入模式
  • 打印初始化信息提示系统已准备好

3. loop()函数

  • 使用analogRead()函数读取电位器的值,Arduino的模拟输入范围是0-1023
  • 将读取的值通过串口打印出来,便于我们观察
  • 根据电位器值的不同范围,控制不同的LED点亮
  • 使用digitalWrite()函数控制LED的亮灭
  • 最后添加一个小延时,避免程序运行过快

五、实验现象与应用扩展

当你上传代码并运行后,旋转电位器旋钮,你会看到:

  • 电位器值很低时,红灯亮
  • 电位器值中等偏低时,绿灯亮
  • 电位器值中等偏高时,蓝灯亮
  • 电位器值很高时,所有灯同时亮(呈现白色)
  • 电位器值非常高时,所有灯熄灭

这个实验展示了如何使用模拟输入控制数字输出,你可以在此基础上进行很多扩展:

  • 制作一个可调亮度的LED灯
  • 开发一个简易音量控制器
  • 设计一个温度监控系统(需要更换温度传感器)
  • 创建一个游戏控制器

通过调整代码中的判断阈值和LED控制逻辑,你可以实现各种有趣的项目。希望这个教程能帮助你理解Arduino的模拟输入和数字输出控制!

3 条评论

  • @ 2025-7-19 19:09:40

    以下是教程中涉及的英文单词/术语的拆分翻译及汉字音译(按出现顺序整理):

    一、基础术语类

    1. Arduino

      • 意思:开源电子原型平台(品牌名)
      • 音译:阿尔杜伊诺
    2. 电位器

      • 对应英文:Potentiometer
      • 意思:可变电阻器,通过旋钮调节电阻值的电子元件
      • 音译:波腾提奥米特
    3. LED

      • 全称:Light-Emitting Diode
      • 意思:发光二极管,一种能发光的半导体元件
      • 音译:莱德(或直接称“LED”)
    4. 模块

      • 对应英文:Module
      • 意思:具有特定功能的独立组件
      • 音译:莫丢尔
    5. 电子元件

      • 对应英文:Electronic Component
      • 意思:组成电子电路的基本单元(如电阻、电容等)
      • 音译:伊莱克tron尼克 康破嫩特
    6. 可变电阻

      • 对应英文:Variable Resistor
      • 意思:电阻值可调节的电阻器
      • 音译:维日埃布尔 瑞日斯特
    7. 触点

      • 对应英文:Contact
      • 意思:电路中用于导电连接的接触点
      • 音译:康泰克特
    8. 电阻体

      • 对应英文:Resistor Body
      • 意思:电阻器中具有电阻特性的主体部分
      • 音译:瑞日斯特 波迪
    9. 转动系统

      • 对应英文:Rotating System
      • 意思:通过旋转实现调节功能的机械结构
      • 音译:罗泰廷 西斯滕
    10. 固定触点

      • 对应英文:Fixed Contact
      • 意思:位置固定的导电接触点
      • 音译:菲克斯特 康泰克特
    11. 引脚

      • 对应英文:Pin
      • 意思:电子元件上用于连接电路的金属接线端
      • 音译:品
    12. 电压

      • 对应英文:Voltage
      • 意思:电路中两点间的电势差,推动电流流动的动力
      • 音译:沃尔泰吉
    13. 旋钮

      • 对应英文:Knob
      • 意思:用于旋转调节的圆形部件
      • 音译:诺布
    14. 信号引脚

      • 对应英文:Signal Pin
      • 意思:传输电信号的引脚
      • 音译:西格纳尔 品
    15. 正极引脚

      • 对应英文:Positive Pin
      • 意思:连接电源正极的引脚
      • 音译:波日提夫 品
    16. 负极引脚

      • 对应英文:Negative Pin
      • 意思:连接电源负极的引脚
      • 音译:内嘎提夫 品
    17. 模拟信号

      • 对应英文:Analog Signal
      • 意思:连续变化的电信号(与离散的数字信号相对)
      • 音译:安纳log 西格纳尔

    二、电路与组件类

    1. 开发板

      • 对应英文:Development Board
      • 意思:用于电子开发的电路板(如Arduino板)
      • 音译:迪维洛普门特 博尔德
    2. 电阻

      • 对应英文:Resistor
      • 意思:限制电流通过的电子元件
      • 音译:瑞日斯特
    3. 红、绿、蓝

      • 对应英文:Red, Green, Blue
      • 意思:三种基础色光(RGB颜色模型)
      • 音译:瑞德、格林、布鲁
    4. 正极

      • 对应英文:Positive
      • 意思:电源中电势较高的一端
      • 音译:波日提夫
    5. 负极

      • 对应英文:Negative
      • 意思:电源中电势较低的一端
      • 音译:内嘎提夫
    6. GND

      • 全称:Ground
      • 意思:接地端,电路中的公共参考点(0电势)
      • 音译:格朗德(或直接称“地”)
    7. 模拟输入引脚

      • 对应英文:Analog Input Pin
      • 意思:用于接收模拟信号的引脚(如A0-A5)
      • 音译:安纳log 因普特 品
    8. 数字引脚

      • 对应英文:Digital Pin
      • 意思:用于输出或输入数字信号(高/低电平)的引脚
      • 音译:迪吉塔尔 品

    三、代码与编程类

    1. int

      • 全称:Integer
      • 意思:整数类型(编程语言中的数据类型)
      • 音译:因特(或“整数”)
    2. void

      • 意思:无返回值(编程语言中的函数类型)
      • 音译:沃伊德
    3. setup()

      • 拆分:set + up
      • 意思:初始化函数(Arduino中只运行一次的函数)
      • 音译:赛特 阿普
    4. loop()

      • 意思:循环函数(Arduino中重复运行的函数)
      • 音译:路普
    5. pinMode()

      • 拆分:pin + mode
      • 意思:设置引脚模式的函数(输入/输出)
      • 音译:品 莫德
    6. OUTPUT

      • 意思:输出模式(引脚功能)
      • 音译:奥特普特
    7. INPUT

      • 意思:输入模式(引脚功能)
      • 音译:因普特
    8. Serial.begin()

      • 拆分:serial + begin
      • 意思:初始化串口通信的函数
      • 音译:西瑞尔 比金
    9. Serial.println()

      • 拆分:serial + print + ln(line)
      • 意思:串口打印并换行的函数
      • 音译:西瑞尔 普林特 莱恩
    10. analogRead()

      • 拆分:analog + read
      • 意思:读取模拟信号的函数(返回0-1023的值)
      • 音译:安纳log 瑞德
    11. digitalWrite()

      • 拆分:digital + write
      • 意思:输出数字信号的函数(高/低电平)
      • 音译:迪吉塔尔 莱特
    12. HIGH

      • 意思:高电平(数字信号状态,通常为5V或3.3V)
      • 音译:海格
    13. LOW

      • 意思:低电平(数字信号状态,通常为0V)
      • 音译:洛
    14. if

      • 意思:如果(条件判断语句)
      • 音译:伊夫
    15. else if

      • 拆分:else + if
      • 意思:否则如果(多条件判断语句)
      • 音译:艾尔思 伊夫
    16. else

      • 意思:否则(条件判断的默认分支)
      • 音译:艾尔思
    17. delay()

      • 意思:延时函数(暂停程序运行指定毫秒数)
      • 音译:迪雷
    18. const

      • 全称:constant
      • 意思:常量(不可修改的变量)
      • 音译:康斯特

    四、扩展应用类

    1. 传感器

      • 对应英文:Sensor
      • 意思:检测物理量(如温度、光线)并转换为电信号的元件
      • 音译:森索
    2. 控制器

      • 对应英文:Controller
      • 意思:控制其他设备运行的装置
      • 音译:康特罗勒
    3. 阈值

      • 对应英文:Threshold
      • 意思:判断条件的临界值
      • 音译:思柔尔德
    4. 逻辑

      • 对应英文:Logic
      • 意思:程序中判断和执行的规则
      • 音译:洛吉克
    • @ 2025-7-19 19:08:33

      硬件与元件相关

      • Arduino:阿尔杜伊诺(开源电子原型开发板)
      • LED:发光二极管(Light Emitting Diode),音译“莱德”
      • Potentiometer:电位器,音译“波滕提奥米特”
      • Resistor:电阻器,音译“雷西斯特”
      • Module:模块,音译“莫丢尔”
      • Circuit:电路,音译“瑟基特”
      • Pin:引脚,音译“平”
      • Analog:模拟的,音译“安纳log”
      • Digital:数字的,音译“迪吉塔尔”
      • Input:输入,音译“因普特”
      • Output:输出,音译“奥特普特”
      • 5V:5伏特(电压单位),音译“5伏”
      • GND:接地(Ground),音译“接地”
      • Signal:信号,音译“西格诺”
      • Voltage:电压,音译“沃尔泰吉”

      代码关键字与函数相关

      • int:整数(integer),音译“因特”
      • void:空(函数无返回值),音译“沃伊德”
      • setup:设置,音译“赛特普”
      • loop:循环,音译“鲁普”
      • Serial:串口,音译“西瑞欧”
      • begin:开始,音译“比金”
      • pinMode:引脚模式(pin+mode),音译“平莫德”
      • analogRead:模拟读取(analog+read),音译“安纳log瑞德”
      • digitalWrite:数字写入(digital+write),音译“迪吉塔尔莱特”
      • print:打印,音译“普林特”
      • println:打印并换行(print+line),音译“普林特莱因”
      • delay:延迟,音译“迪雷”
      • HIGH:高(电平),音译“海”
      • LOW:低(电平),音译“喽”
      • const:常量(constant),音译“康斯特”
      • value:值,音译“瓦柳”
      • if:如果,音译“伊夫”
      • else if:否则如果(else+if),音译“艾尔瑟伊夫”
      • else:否则,音译“艾尔瑟”

      其他术语

      • Baud rate:波特率,音译“鲍德瑞特”
      • Variable:变量,音译“瓦瑞厄布尔”
      • Threshold:阈值,音译“思柔绍尔德”
      • Ground:接地,音译“格朗德”
      • Resistor:电阻器,音译“雷西斯特”
      • @ 2025-7-19 19:07:10

        电子元件与引脚相关

        • Arduino:阿尔杜伊诺(开源电子原型平台)
        • LED:发光二极管(Light Emitting Diode),音译“埃利德”
        • Potentiometer:电位器,音译“波藤提奥米特”
        • Resistor:电阻器,音译“雷西斯特”
        • Pin:引脚,音译“平”
        • Analog:模拟的,音译“安纳log”
        • Digital:数字的,音译“迪吉塔尔”
        • Input:输入,音译“因普特”
        • Output:输出,音译“奥特普特”
        • 5V:5伏特(电压单位),音译“5伏”
        • GND:接地(Ground),音译“接地”

        代码关键字与函数相关

        • int:整数(integer),音译“因特”
        • void:空的(函数无返回值),音译“沃伊德”
        • setup:设置,音译“赛特普”
        • loop:循环,音译“鲁普”
        • Serial:串口,音译“西瑞欧”
        • begin:开始,音译“比金”
        • pinMode:引脚模式,由“pin(引脚)”和“mode(模式)”组成
        • analogRead:模拟读取,由“analog(模拟)”和“read(读取)”组成
        • digitalWrite:数字写入,由“digital(数字)”和“write(写入)”组成
        • print:打印,音译“普林特”
        • println:打印并换行,由“print(打印)”和“line(行)”组成
        • delay:延迟,音译“迪雷”
        • HIGH:高(电平),音译“海”
        • LOW:低(电平),音译“喽”
        • const:常量(constant),音译“康斯特”
        • value:值,音译“瓦柳”

        其他术语

        • Baud rate:波特率,音译“鲍德率”
        • Loop:循环,音译“鲁普”
        • Variable:变量,音译“瓦瑞厄布尔”
        • Threshold:阈值,音译“思柔绍尔德”
        • Resistor:电阻器,音译“雷西斯特”
        • Circuit:电路,音译“瑟基特”
        • Module:模块,音译“莫丢”
        • Signal:信号,音译“西格诺”
        • Voltage:电压,音译“沃尔泰吉”
        • Ground:接地,音译“格朗德”
        • 1