我想将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我想要的眨眼功能是:
如果我取消注释#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
谢谢.
1> Gerald Schne..:您的代码有些问题:
#
不是C中的注释.例如,它启动编译器指令#define
.如果你想评论一个,请在它之前添加注释//
:#define ARDUINO_MEGA // #define ARDUINO_UNO // #define ARDUINO_NANO如果没有注释,则定义所有三个值,因此最后一个定义块将覆盖先前的定义块.定义块本身应该可以工作,但文档建议使用
const
而不是#define
如果它不直接与编译器相关.这意味着定义块应如下所示:
#ifdef ARDUINO_NANO const int R 7 // Red led attached to pin 7 const int G 8 // Green led attached to pin 8 const int B 9 // Blue led attached to pin 9 #endif这是下一个错误:您提供的是char而不是预期的整数.编译器将char转换为预期的字节,但为此使用ASCII值.一个
R
变82
,而不是22
你期望的Arduino的兆.void loop(){ // blink('R', 5, 100); blink(R, 5, 100); blink(G, 3, 300); blink(B, 10, 80); }