Arduino IDE #ifdef

13

J'utilise mon IDE Arduino pour télécharger mon croquis sur un Arduino ou ATTiny ou ATmega328. Comme vous le savez, chaque appareil peut avoir un brochage différent. Le compilateur Arduino prend-il en charge ifdef, selon la carte à laquelle je suis connecté?

Par exemple

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

Réponses:

13

Oui. Voici la syntaxe:

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

Vous pouvez également faire quelque chose comme ça pour le Mega:

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

En supposant que l'implémentation de ATtiny est correcte, votre code devrait être comme ceci:

#if defined (__AVR_ATtiny85__)
       a=0; b=1; c=2;
#else
       //Arduino
       a=9; b=10; c=11
#endif
Pingouin anonyme
la source
Dans Arduino.h, __AVR_ATtiny85__est utilisé (capital T). Je ne sais pas si cela fait une différence.
geometrikal
2
alternativement en utilisant 1.5. + IDE, vous pouvez tester le type de carte que vous construisez. Voir Arduino-IDE-1.5 --- Spécifications matérielles tierces . Exemple "#if défini (ARDUINO_AVR_UNO)" ou ARDUINO_AVR_MEGA2560 ou ARDUINO_AVR_LEONARDO, etc ...
mpflaga