Arduino IDE #ifdef


13

我使用Arduino IDE将我的草图上传到Arduino或ATTiny或ATmega328。如您所知,每个设备可以具有不同的引脚排列。Arduino编译器是否支持ifdef,取决于我所连接的电路板?

例如

#ifdef Attiny85
       a=0; b=1; c=2;
#else
       // arduino
       a=9; b=10; c=11;
#endif

Answers:


13

是。语法如下:

#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__)
    //Code here
#endif

您也可以对Mega进行以下操作:

#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
    //Code here
#endif

假设ATtiny的实现是正确的,则您的代码应如下所示:

#if defined (__AVR_ATtiny85__)
       a=0; b=1; c=2;
#else
       //Arduino
       a=9; b=10; c=11
#endif

在中Arduino.h__AVR_ATtiny85__用于(大写T)。不确定是否有任何区别。
geometrikal

2
或者使用1.5。+ IDE,您可以针对正在构建的电路板类型进行测试。请参阅Arduino-IDE-1.5 --- 3rd-party-Hardware-specification。示例“ #if defined(ARDUINO_AVR_UNO)”或ARDUINO_AVR_MEGA2560或ARDUINO_AVR_LEONARDO等...
mpflaga 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.