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
PhillyNJ
источник

Ответы:

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). Не уверен, если это имеет какое-либо значение, хотя.
геометрикал
2
в качестве альтернативы, используя 1.5. + IDE, вы можете протестировать тип вашей доски. См. Arduino-IDE-1.5 --- Спецификация стороннего оборудования . Пример: «#iffined (ARDUINO_AVR_UNO)» или ARDUINO_AVR_MEGA2560 или ARDUINO_AVR_LEONARDO и т. Д.
mpflaga