Arduino IDE #ifdef


13

Uso il mio IDE di Arduino per caricare il mio schizzo su un Arduino o ATTiny o ATmega328. Come sapete, ogni dispositivo può avere una piedinatura diversa. Il compilatore Arduino supporta ifdef, a seconda della scheda a cui sono collegato?

Per esempio

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

Risposte:


13

Sì. Ecco la sintassi:

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

Puoi anche fare qualcosa del genere per il Mega:

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

Supponendo che l'implementazione per ATtiny sia corretta, il tuo codice dovrebbe essere così:

#if defined (__AVR_ATtiny85__)
       a=0; b=1; c=2;
#else
       //Arduino
       a=9; b=10; c=11
#endif

In Arduino.h, __AVR_ATtiny85__viene utilizzato (capitale T). Non sono sicuro se fa differenza.
geometrikal,

2
in alternativa, usando 1.5. + IDE puoi testare contro il tipo di scheda che stai costruendo. Vedi Arduino-IDE-1.5 --- Specifiche hardware di terze parti . Esempio "#if definito (ARDUINO_AVR_UNO)" o ARDUINO_AVR_MEGA2560 o ARDUINO_AVR_LEONARDO, ecc ...
mpflaga,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.