【发布时间】:2015-12-21 07:41:58
【问题描述】:
我想将 LED 连接到不同的 arduino 板上并创建一个函数来闪烁它们。让我分享我的代码以更清楚:
#define ARDUINO_MEGA
//#define ARDUINO_UNO
//#define ARDUINO_NANO
#ifdef ARDUINO_MEGA
#define R 22 // Red led attached to pin 22
#define G 25 // Green led attached to pin 25
#define B 23 // Blue led attached to pin 23
#endif
#ifdef ARDUINO_UNO
#define R 2 // Red led attached to pin 2
#define G 3 // Green led attached to pin 3
#define B 5 // Blue led attached to pin 5
#endif
#ifdef ARDUINO_NANO
#define R 7 // Red led attached to pin 7
#define G 8 // Green led attached to pin 8
#define B 9 // Blue led attached to pin 9
#endif
void setup(){
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
}
void loop(){
blink('R', 5, 100);
blink('G', 3, 300);
blink('B', 10, 80);
}
void blink(byte ledColor, int howManyTimes, int duration){
for (int x=0; x<howManyTimes; x++){
digitalWrite(ledColor, HIGH); //doesn't work
delay(duration);
digitalWrite(ledColor, LOW);
delay(duration);
}
}
我想要闪烁功能做的是:
如果我取消注释 #define ARDUINO_MEGA 行并将草图上传到 Arduino Mega,它应该闪烁连接到引脚 22、25 和 23 的 LED
如果我取消注释 #define ARDUINO_NANO 行并将草图上传到 Arduino Nano,它应该闪烁连接到引脚 7、8 和 9 的 LED
如果我取消注释 #define ARDUINO_UNO 行并将草图上传到 Arduino Uno,它应该闪烁连接到引脚 2、3 和 5 的 LED
谢谢。
【问题讨论】:
-
这到底是什么问题?
-
在闪烁功能中,我将 ledColor 作为参数并在 digitalWrite(ledColor, HIGH) 中处理它。例如,如果我取消注释 #define ARDUINO_MEGA 行并尝试使红色 LED 闪烁,我希望这样:digitalWrite (22,高)。如果我取消注释 #define ARDUINO_UNO 行并尝试使红色 LED 闪烁,我希望这样:digitalWrite(2, HIGH) 等等。但它不起作用
-
我想要的过程步骤:blink('R', 2, 100) -> 哪个板没有注释(例如mega) -> R=22 -> 在blink函数中digitalWrite(22, HIGH )
-
或者这个:blink('R', 2, 100) -> 哪个板没有注释(例如 UNO) -> 所以 R=2 -> 在闪烁函数中 digitalWrite(2, HIGH)