为什么我的第一个和第二个LED不照亮? for循环有问题吗?
当我为arduino供电时,它只会点亮2-5,LED并跳过第一个和第六个LED。我尝试通过检查for循环中 i
的值来查看问题,但事实很好。
这些是我正在谈论的循环:
for (int i = 0; i < 6; i++)
{
analogWrite(arr[i], ledval);
delay(100);
}
for (int i = 0; i < 6; i++)
{
analogWrite(arr[i], 0);
delay(100);
//digitalWrite(arr[i], LOW);
}
for (int i = 0; i < 6; i++)
{
analogWrite(arr1[i], ledval);
Serial.println(i);
delay(100);
}
for (int i = 0; i < 6; i++)
{
analogWrite(arr1[i], 0);
delay(100);
}
这是列表:
#include <IRremote.h>
int receiver = 12;
int led1 = 3;
int led2 = 5;
int led3 = 6;
int led4 = 9;
int led5 = 10;
int led6 = 11;
int knob = A0;
int arr[] = {led1, led2, led3, led4, led5, led6};
int arr1[] = {led6, led5, led4, led3, led2, led1};
int worknum1 = 0;
IRrecv irrecv(receiver);
我已经初始化了每个LED,
void setup(){
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(knob, INPUT);
}
您知道是什么原因引起了这个问题?我该如何解决?
谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
红外接收库需要使用以一定间隔运行代码,以实时处理传入信号。
它是为此目的使用计时器2,通常负责在Arduino Uno上的PIN 3和11上管理PWM信号。
参见文档:
因此,您不能在输出3&amp上使用PWM; 11与这个库一起。文档说您还可以手动更改使用哪个计时器,但这对您无济于事,因为它会影响其他引脚(9&amp; 10)。
如果您需要更多的PWM引脚,则可以使用TLC5940这样的外部芯片。请参阅
The IR receiving library needs to use a hardware interrupt timer to run code at a certain interval for processing the incoming signal in real time.
It is using timer 2 for this purpose, which is normally responsible for managing the PWM signal on pins 3 and 11 on the Arduino Uno.
See docs:
Therefore, you cannot use PWM on outputs 3 & 11 together with this library. The docs say you can also manually change which timer is used but that won't help you either because it would then just affect other pins (9 & 10) instead.
If you need more PWM pins, you can instead use an external chip like a TLC5940. See this tutorial for details.