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

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.