- 机器人等级考试
Arduino电位器控制LED学习笔记教程
- 2025-7-15 22:16:44 @
Arduino电位器控制LED学习笔记教程
一、电位器模块基础知识
电位器模块是创客常用的电子元件,它实际上是可变电阻的一种。电位器通常有三个触点,由一个电阻体和转动系统构成。当在电阻体的两个固定触点(两端引脚)外加电压时,通过转动旋钮可以改变中间引脚上分到的电压比例,进而改变输出的电压值。
电位器模块一般有三个引脚,分别是信号引脚、正极引脚和负极引脚。通过这三个引脚,我们可以方便地将电位器接入Arduino电路中,实现模拟信号的输入。
二、电路连接
本次实验需要连接以下组件:
- Arduino开发板
- 电位器模块
- 3个LED灯(红、绿、蓝各一个)
- 3个220Ω电阻(用于保护LED)
具体连接方式如下:
-
电位器模块连接:
- 正极引脚接Arduino的5V
- 负极引脚接Arduino的GND
- 信号引脚接Arduino的模拟输入引脚A0
-
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 条评论
-
admin SU @ 2025-7-19 19:09:40
以下是教程中涉及的英文单词/术语的拆分翻译及汉字音译(按出现顺序整理):
一、基础术语类
-
Arduino
- 意思:开源电子原型平台(品牌名)
- 音译:阿尔杜伊诺
-
电位器
- 对应英文:Potentiometer
- 意思:可变电阻器,通过旋钮调节电阻值的电子元件
- 音译:波腾提奥米特
-
LED
- 全称:Light-Emitting Diode
- 意思:发光二极管,一种能发光的半导体元件
- 音译:莱德(或直接称“LED”)
-
模块
- 对应英文:Module
- 意思:具有特定功能的独立组件
- 音译:莫丢尔
-
电子元件
- 对应英文:Electronic Component
- 意思:组成电子电路的基本单元(如电阻、电容等)
- 音译:伊莱克tron尼克 康破嫩特
-
可变电阻
- 对应英文:Variable Resistor
- 意思:电阻值可调节的电阻器
- 音译:维日埃布尔 瑞日斯特
-
触点
- 对应英文:Contact
- 意思:电路中用于导电连接的接触点
- 音译:康泰克特
-
电阻体
- 对应英文:Resistor Body
- 意思:电阻器中具有电阻特性的主体部分
- 音译:瑞日斯特 波迪
-
转动系统
- 对应英文:Rotating System
- 意思:通过旋转实现调节功能的机械结构
- 音译:罗泰廷 西斯滕
-
固定触点
- 对应英文:Fixed Contact
- 意思:位置固定的导电接触点
- 音译:菲克斯特 康泰克特
-
引脚
- 对应英文:Pin
- 意思:电子元件上用于连接电路的金属接线端
- 音译:品
-
电压
- 对应英文:Voltage
- 意思:电路中两点间的电势差,推动电流流动的动力
- 音译:沃尔泰吉
-
旋钮
- 对应英文:Knob
- 意思:用于旋转调节的圆形部件
- 音译:诺布
-
信号引脚
- 对应英文:Signal Pin
- 意思:传输电信号的引脚
- 音译:西格纳尔 品
-
正极引脚
- 对应英文:Positive Pin
- 意思:连接电源正极的引脚
- 音译:波日提夫 品
-
负极引脚
- 对应英文:Negative Pin
- 意思:连接电源负极的引脚
- 音译:内嘎提夫 品
-
模拟信号
- 对应英文:Analog Signal
- 意思:连续变化的电信号(与离散的数字信号相对)
- 音译:安纳log 西格纳尔
二、电路与组件类
-
开发板
- 对应英文:Development Board
- 意思:用于电子开发的电路板(如Arduino板)
- 音译:迪维洛普门特 博尔德
-
电阻
- 对应英文:Resistor
- 意思:限制电流通过的电子元件
- 音译:瑞日斯特
-
红、绿、蓝
- 对应英文:Red, Green, Blue
- 意思:三种基础色光(RGB颜色模型)
- 音译:瑞德、格林、布鲁
-
正极
- 对应英文:Positive
- 意思:电源中电势较高的一端
- 音译:波日提夫
-
负极
- 对应英文:Negative
- 意思:电源中电势较低的一端
- 音译:内嘎提夫
-
GND
- 全称:Ground
- 意思:接地端,电路中的公共参考点(0电势)
- 音译:格朗德(或直接称“地”)
-
模拟输入引脚
- 对应英文:Analog Input Pin
- 意思:用于接收模拟信号的引脚(如A0-A5)
- 音译:安纳log 因普特 品
-
数字引脚
- 对应英文:Digital Pin
- 意思:用于输出或输入数字信号(高/低电平)的引脚
- 音译:迪吉塔尔 品
三、代码与编程类
-
int
- 全称:Integer
- 意思:整数类型(编程语言中的数据类型)
- 音译:因特(或“整数”)
-
void
- 意思:无返回值(编程语言中的函数类型)
- 音译:沃伊德
-
setup()
- 拆分:set + up
- 意思:初始化函数(Arduino中只运行一次的函数)
- 音译:赛特 阿普
-
loop()
- 意思:循环函数(Arduino中重复运行的函数)
- 音译:路普
-
pinMode()
- 拆分:pin + mode
- 意思:设置引脚模式的函数(输入/输出)
- 音译:品 莫德
-
OUTPUT
- 意思:输出模式(引脚功能)
- 音译:奥特普特
-
INPUT
- 意思:输入模式(引脚功能)
- 音译:因普特
-
Serial.begin()
- 拆分:serial + begin
- 意思:初始化串口通信的函数
- 音译:西瑞尔 比金
-
Serial.println()
- 拆分:serial + print + ln(line)
- 意思:串口打印并换行的函数
- 音译:西瑞尔 普林特 莱恩
-
analogRead()
- 拆分:analog + read
- 意思:读取模拟信号的函数(返回0-1023的值)
- 音译:安纳log 瑞德
-
digitalWrite()
- 拆分:digital + write
- 意思:输出数字信号的函数(高/低电平)
- 音译:迪吉塔尔 莱特
-
HIGH
- 意思:高电平(数字信号状态,通常为5V或3.3V)
- 音译:海格
-
LOW
- 意思:低电平(数字信号状态,通常为0V)
- 音译:洛
-
if
- 意思:如果(条件判断语句)
- 音译:伊夫
-
else if
- 拆分:else + if
- 意思:否则如果(多条件判断语句)
- 音译:艾尔思 伊夫
-
else
- 意思:否则(条件判断的默认分支)
- 音译:艾尔思
-
delay()
- 意思:延时函数(暂停程序运行指定毫秒数)
- 音译:迪雷
-
const
- 全称:constant
- 意思:常量(不可修改的变量)
- 音译:康斯特
四、扩展应用类
-
传感器
- 对应英文:Sensor
- 意思:检测物理量(如温度、光线)并转换为电信号的元件
- 音译:森索
-
控制器
- 对应英文:Controller
- 意思:控制其他设备运行的装置
- 音译:康特罗勒
-
阈值
- 对应英文:Threshold
- 意思:判断条件的临界值
- 音译:思柔尔德
-
逻辑
- 对应英文: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