调整 LED 亮度
Adjusting LED brightness
我的作业有以下要求:
10% 将按钮连接到数字输入
20% 将电位器连接到模拟输入
20% 将您选择的 3 个 LED 连接到 PWM 输出(将它们排成一排放在面包板上)。
请参阅引脚概述(Lenker til en ekstern side.)了解哪些引脚支持 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);
}
无效循环(){
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
您在引脚 4 上使用模拟写入。但在 Arduino UNO 上,引脚 4 不支持 PWM。
PWM 引脚为:3、5、6、9、10、11
查看 https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/ 了解更多信息。
我的作业有以下要求: 10% 将按钮连接到数字输入 20% 将电位器连接到模拟输入 20% 将您选择的 3 个 LED 连接到 PWM 输出(将它们排成一排放在面包板上)。 请参阅引脚概述(Lenker til en ekstern side.)了解哪些引脚支持 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);
} 无效循环(){
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
您在引脚 4 上使用模拟写入。但在 Arduino UNO 上,引脚 4 不支持 PWM。
PWM 引脚为:3、5、6、9、10、11
查看 https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/ 了解更多信息。