为什么我的第一个和第二个LED不照亮? for循环有问题吗?

发布于 2025-01-26 00:09:43 字数 1292 浏览 4 评论 0 原文

当我为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);
}

您知道是什么原因引起了这个问题?我该如何解决?

谢谢!

When I power my Arduino it only lights up the 2-5 and leds and skips the 1st and the 6th led. I tried seeing what's the problem by giving a check on the value of i in the for loops but it is alright.

These are the for loops I am talking about:

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);        
}

Here is the list:

#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);

and I have initialized every 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);
}

Do you know what's causing this problem? How can I fix this?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌伤ぢ 2025-02-02 00:09:43

红外接收库需要使用以一定间隔运行代码,以实时处理传入信号。

它是为此目的使用计时器2,通常负责在Arduino Uno上的PIN 3和11上管理PWM信号。

参见文档

与其他库和arduino命令(如Tone()和AllogWrite()

如果您使用需要与Inremote相同的计时器的库,则您有问题,因为两个库不能同时共享计时器资源。

[...]

用于发送的硬件-PWM信号生成

占用

董事会/cpu 接收&amp; PWM计时器 硬件pwm pin AnalogWrite()销钉由计时器
atmega328 2 3 3&amp; 11

因此,您不能在输出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:

Incompatibilities to other libraries and Arduino commands like tone() and analogWrite()

If you use a library which requires the same timer as IRremote, you have a problem, since the timer resource cannot be shared simultaneously by both libraries.

[...]

Hardware-PWM signal generation for sending

Board/CPU Receive & PWM Timers Hardware-PWM Pin analogWrite() pins occupied by timer
ATmega328 2 3 3 & 11

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文