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

Ответы:


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.