IDE Arduino #ifdef

Uso il mio IDE Arduino per caricare il mio sketch su Arduino o ATTiny o ATmega328. Come sai ogni dispositivo può avere un pinout diverso. Il compilatore Arduino supporta ifdef, a seconda della scheda a cui sono connesso?

Ad esempio

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

Risposta

Sì. Ecco la sintassi:

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

Puoi anche fare qualcosa di simile per Mega:

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

Supponendo che limplementazione di ATtiny sia corretta, il codice dovrebbe essere così:

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

Commenti

  • In Arduino.h, viene utilizzato __AVR_ATtiny85__ (maiuscolo T). Non sono sicuro che faccia differenza.
  • In alternativa, usando 1.5. + IDE puoi testare il tipo di scheda che stai costruendo. Vedi Arduino-IDE-1.5 — Specifiche hardware di terze parti . Esempio " #if defined (ARDUINO_AVR_UNO) " o ARDUINO_AVR_MEGA2560 o ARDUINO_AVR_LEONARDO, ecc …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *