我怎样才能得到这段代码,使连接到我的 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;
(与其他 ==
相同)。后者对我来说似乎更合理,以便每次循环迭代只有一个模拟读取。
在我开始之前,我想说明我仍然是 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;
(与其他 ==
相同)。后者对我来说似乎更合理,以便每次循环迭代只有一个模拟读取。