调节 LED 亮度

时间:2021-02-01 17:52:55

标签: arduino

我的作业有以下要求: 10% 将按钮连接到数字输入 20% 将电位计连接到模拟输入 20% 将您选择的 3 个 LED 连接到 PWM 输出(将它们排成一排放在面包板上)。 请参阅引脚概述(Lenker til en ekstern 侧。)了解哪些引脚支持 PWM 10% 每秒读取电位器值十次 30% 使用读取值来设置 LED 的亮度。 最低的 1/3 设置第一个 LED 的亮度,中间的 1/3 设置第二个 LED 的亮度,最后 1/3 设置最后一个 LED 的亮度。 含义:旋钮完全关闭 = 没有 LED 亮起。慢慢转动它,第一个 LED 在您转动时淡入,然后第二个 LED 淡入,最后最后一个 LED 淡入。 按住按钮 10% 会将所有 LED 设置为全亮。释放会将它们设置回电位计值。

我已经设法让 LED_1 以 1/3 的速度渐隐,而 LED_3 以 3/3 的速度正确渐隐。我遇到的问题是,我不明白为什么 LED 2 不会正确地褪色?您可以在下面看到我的代码以及在 tinkercad 中设计的电路的屏幕截图。我还没有为按钮编写任何代码。有什么解决办法吗?

#include <Arduino.h>

void setup() {
    Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
    pinMode(A0,INPUT);
    pinMode(A1, INPUT);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);

} void loop() {

    int value = analogRead(A1);
    int percent = ((float)value / 675) * 100;
    int percent_LED = ((float)value / 675) * 300;
    int percent_LED2 = (((float)value / 675) * 300);

    Serial.println(percent);
    if (percent < 33)
    {
            analogWrite(3, percent_LED);
            analogWrite(4, LOW);
            analogWrite(5, LOW);
        
    }

    else if(33 < percent < 66)
    
    {
            analogWrite(4, percent_LED - 100);
    }

    if (66 < percent)
    {
            analogWrite(5, percent_LED - 200);
    
    }
    else
    {analogWrite(5, LOW);}

    delay(100);



  

}

Circuit design

1 个答案:

答案 0 :(得分:1)

您在引脚 4 上使用了analogWrite。但在 Arduino UNO 上,引脚 4 不支持 PWM。

PWM 引脚为:3、5、6、9、10、11

查看https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/了解更多信息。