我的作业有以下要求: 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);
}
答案 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/了解更多信息。