Ардуїно 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

Відповіді:


13

Так. Ось синтаксис:

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

Ви також можете зробити щось подібне для Меги:

#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 --- специфікація стороннього обладнання . Приклад "#if визначено (ARDUINO_AVR_UNO)" або ARDUINO_AVR_MEGA2560 або ARDUINO_AVR_LEONARDO тощо ...
mpflaga
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.