Arduino控制LED灯的点亮、熄灭以及亮度调节是非常基础且常见的操作,以下是详细教程:

准备材料

  • Arduino开发板(如Arduino Uno)
  • 杜邦线若干
  • 一个电阻(推荐220欧姆)
  • 一个LED灯

连接电路

  • 将Arduino板插入计算机的USB端口。
  • 使用杜邦线将Arduino板的GND引脚连接到电路的负极,即LED灯的短脚(阴极)。
  • 将Arduino板的数字引脚(如引脚2)通过一个220欧姆电阻连接到LED灯的长脚(阳极)。

点亮与熄灭LED灯

  • 打开Arduino IDE,创建一个新的程序。
  • 在代码编辑器中输入以下代码:
void setup() {
  pinMode(2, OUTPUT); // 将引脚2设置为输出模式
}

void loop() {
  digitalWrite(2, HIGH); // 将引脚2设置为高电平,点亮LED灯
  delay(1000); // 延迟1秒
  digitalWrite(2, LOW); // 将引脚2设置为低电平,熄灭LED灯
  delay(1000); // 延迟1秒
}
  • 代码解释:setup()函数用于初始化,将引脚2配置为输出模式。loop()函数是Arduino的主循环函数,digitalWrite(2, HIGH)使引脚2输出高电平,LED灯点亮,delay(1000)让程序暂停1秒,接着digitalWrite(2, LOW)使引脚2输出低电平,LED灯熄灭,再延迟1秒,如此循环。
  • 点击Arduino IDE中的上传按钮,将程序上传到Arduino板,即可看到LED灯每隔一秒钟亮起一次,然后熄灭一次。

控制LED灯亮度

  • Arduino可以通过脉冲宽度调制(PWM)来控制LED灯的亮度,Uno开发板上的3、5、6、9、10、11引脚是PWM接口,数字边上有个“~”标识。
  • 若将LED灯连接到引脚9,可使用以下代码控制其亮度:
const int LED_PIN = 9; // 定义LED连接的引脚为9

void setup() {
  pinMode(LED_PIN, OUTPUT); // 将引脚设置为输出模式
}

void loop() {
  for (int i = 0; i <= 255; i++) { // 从0到255逐渐增加亮度
    analogWrite(LED_PIN, i); // 设置LED亮度
    delay(5); // 延迟一小段时间,让亮度变化更平滑
  }
  for (int i = 255; i >= 0; i--) { // 从255到0逐渐减小亮度
    analogWrite(LED_PIN, i);
    delay(5);
  }
}
  • 代码解释:analogWrite()函数用于控制PWM接口输出,第一个参数是引脚号,第二个参数是输出值,范围为0到255,数值越大亮度越高。上述代码通过两个for循环,让LED灯的亮度从暗逐渐变亮,再从亮逐渐变暗,循环往复。

1 条评论

  • @ 2025-5-26 19:07:37

    电位器控制LED亮度完整教程

    一、项目目标

    通过旋转电位器(模拟旋钮),实时调节LED灯的亮度,实现从熄灭到最亮的平滑变化。

    二、所需硬件

    1. Arduino开发板(如Uno/Nano)
    2. 10kΩ电位器(或其他阻值,推荐10kΩ)
    3. LED灯(普通发光二极管)
    4. 220Ω限流电阻(保护LED)
    5. 杜邦线若干
    6. 面包板(可选,方便连线)

    三、硬件连接

    Arduino引脚 元件连接 说明
    5V 电位器VCC(中间引脚) 为电位器供电
    GND 电位器GND(侧边引脚)、LED负极 接地
    A0(模拟输入) 电位器信号引脚(另一侧边引脚) 读取电位器的模拟值
    9(PWM输出) LED正极(通过220Ω电阻) 输出PWM信号控制LED亮度

    四、电路连接图

                        5V ────┬───────────┬─── 5V
                               │           │
                               ▼           ▼
                        ┌───────┐      ┌───────┐
                        │电位器  │      │  LED   │
                        │       │      │       │
                        │  ┌─┐  │      │  ┌─┐  │
                        └──┴─┴──┘      └──┬─┘  │
                            │ ▲             │ │
                            │ │             │ │  220Ω电阻
                            │ └─────────────┘ │
                            ▼                 ▼
                        GND(电位器)      D9(Arduino)
                            │                 │
                            └─────────────────┘
                                    GND
    

    五、代码实现

    // 定义引脚:A0接电位器,D9接LED(需是PWM引脚)
    const int POT_PIN = A0;  // 电位器连接的模拟引脚
    const int LED_PIN = 9;   // LED连接的PWM数字引脚
    
    void setup() {
      pinMode(LED_PIN, OUTPUT);  // 设置LED引脚为输出模式
      Serial.begin(9600);        // 初始化串口(用于调试)
    }
    
    void loop() {
      // 读取电位器的模拟值(范围0~1023)
      int potValue = analogRead(POT_PIN);
      
      // 将电位器值映射到LED亮度(0~255,对应PWM范围)
      int ledBrightness = map(potValue, 0, 1023, 0, 255);
      
      // 控制LED亮度(PWM输出)
      analogWrite(LED_PIN, ledBrightness);
      
      // 串口打印调试信息(可选)
      Serial.print("电位器值:");
      Serial.print(potValue);
      Serial.print(" → LED亮度:");
      Serial.println(ledBrightness);
      
      delay(20);  // 短暂延时,避免数据读取过于频繁
    }
    

    六、代码详解

    1. 引脚定义

      • POT_PIN 连接电位器的信号脚(A0模拟引脚),用于读取旋钮旋转时的电阻变化。
      • LED_PIN 连接LED(D9引脚,带“~”标识的PWM引脚),通过PWM信号控制亮度。
    2. 核心逻辑

      • analogRead(POT_PIN):读取电位器的模拟值,范围为0(旋钮左旋到底)到1023(右旋到底)。
      • map(potValue, 0, 1023, 0, 255):将电位器的0~1023范围线性映射到LED的PWM控制范围0~255。
        • 例如:电位器左旋到底(0)→ LED亮度0(熄灭);
        • 电位器右旋到底(1023)→ LED亮度255(最亮)。
      • analogWrite(LED_PIN, ledBrightness):通过PWM信号调节LED亮度,数值越大亮度越高。
    3. 调试功能
      串口打印电位器值和对应的LED亮度,方便观察数值变化是否符合预期。

    七、工作原理

    1. 电位器的作用
      电位器是可变电阻,旋转旋钮时电阻值变化,导致Arduino的A0引脚输入电压变化。Arduino通过analogRead将电压转换为0~1023的数字值,反映旋钮的位置。

    2. PWM调节亮度的原理
      PWM(脉冲宽度调制)通过高频开关信号控制LED的平均功率。例如:

      • 占空比100%(analogWrite(255))→ 全亮;
      • 占空比50%(analogWrite(128))→ 半亮;
      • 占空比0%(analogWrite(0))→ 熄灭。
        通过改变PWM信号的占空比,人眼会感知到LED亮度的变化。

    八、常见问题与解决方法

    1. LED不亮

      • 检查硬件连接:LED正负极是否接反(长脚为正),电阻是否串联,引脚是否接对PWM口(如D3/D5/D6/D9/D10/D11)。
      • 检查代码:确认LED_PIN是否与实际连接的引脚一致,analogWrite是否使用PWM引脚。
    2. 亮度变化不平滑

      • 调整delay(20)的延时值,过小可能导致闪烁,过大可能响应迟钝。
      • 若电位器两端有死区(旋转时亮度无变化),可修改map函数的参数,例如:
        int ledBrightness = map(potValue, 50, 970, 0, 255);(过滤两端50以内的无效值)。
    3. LED亮度异常

      • 若LED一直最亮或熄灭,可能是电位器信号脚接反,调换电位器两侧引脚即可。

    九、扩展应用

    1. 添加开关控制
      连接一个按键到数字引脚,按下时开启/关闭LED亮度调节功能。

    2. 多LED同步调节
      将多个LED并联(每个LED串联电阻),连接到同一PWM引脚,实现同步亮度调节。

    3. 结合传感器
      替换电位器为光线传感器(光敏电阻),实现LED亮度随环境光线自动调节。

    通过这个项目,你可以掌握Arduino模拟输入和PWM输出的基本操作,为后续复杂的电子项目(如自动调光台灯、氛围灯)打下基础!

    • 1