我怎样才能得到这段代码,使连接到我的 arduino 的 LED 以拨号输出的值闪烁,或者不超过一个确定的值?

How can I get this code to make LEDs linked to my arduino flash at either the value the dial outputs, or no more than a determined value?

在我开始之前,我想说明我仍然是 C++ 和 Arduino 电子产品的初学者,所以对于比我有一周经验的人来说,答案可能是显而易见的。
但对我来说,这完全是个谜。感谢您的帮助。

首先是代码:

int potPosition;
int delayTime;

void setup() {
   Serial.begin(9600);

   pinMode(13, OUTPUT);
   pinMode(12, OUTPUT);
   pinMode(11, OUTPUT);
   pinMode(10, OUTPUT);
   pinMode(9, OUTPUT);
 }

 void loop() {
   potPosition = analogRead(A0);
   Serial.println(potPosition);

   if (potPosition < 16) {
     delayTime == 16;
   } else if (potPosition >= 16){
       delayTime == analogRead(A0);
   }

   digitalWrite(13, HIGH);
   digitalWrite(12, HIGH);
   digitalWrite(11, HIGH);
   digitalWrite(10, HIGH);
   digitalWrite(9, HIGH);
   delay(delayTime);


   digitalWrite(13, LOW);
   digitalWrite(12, LOW);
   digitalWrite(11, LOW);
   digitalWrite(10, LOW);
   digitalWrite(9, LOW);
   delay(delayTime);

 }

这一切都写在 Arduino Genius IDE 中,我将它输出到 Sparkfun electronics Arduino,它连接了 5 个 LED,由电位器控制,它通过输出一个来设置开启和关闭延迟我将延迟的毫秒数作为使 LED 闪烁的值。所有电子接线都是正确的,因为当我删除 if 语句并且只是 运行 它正常时,一切都按我预期的那样工作。

所以您可能想知道,这是怎么回事?好吧,目前当 potPosition 超过某个值(以毫秒为单位的延迟值)时,该值太低,LED 似乎不再闪烁,因为延迟太小以至于无法看到闪光。这是预期的结果,因为接近 0 毫秒的延迟非常小。

我想用我的 if 语句做什么:

if (potPosition < 16) {
     delayTime == 16;
   } else if (potPosition >= 16){
       delayTime == analogRead(A0);
   }

是如果 potPosition - 刻度盘的值,即 ms 延迟 - 低于某个数字(最后一个值是足够长的延迟以使闪烁效果仍然可见)设置我的 delayTime 回到那个值,如果 potPosition 是那个值或更高的值,然后将 delayTime 设置为电位器输出的任何延迟。

然而,目前,当我将这段代码下载到我的 Arduino 上时,无论我的电位器输出什么值,我所有的灯都显得暗淡(当我的延迟时间极低时它们也是如此),这不是我想要的想要它这样做,我不知道为什么我的 if 语句没有正确重置我的延迟时间。

在开始使用 Sparkfun 电子套件之前,我从未真正编写过 C++ 代码,而且只使用过 Python,因此我可能遗漏了 C++ 编程的一个关键方面,但我不知道那是什么会的。

任何对此问题的帮助都将非常有用,我非常乐意回答任何问题。

这个 delayTime == analogRead(A0); 和这个 delayTime == 16; 是比较,即 delayTime 保持未初始化,你会得到未定义的行为。
我打赌你想在那里写一个值,如 delayTime = analogRead(A0);delayTime = potPosition;(与其他 == 相同)。后者对我来说似乎更合理,以便每次循环迭代只有一个模拟读取。