Arduino IDE #ifdef

13

Utilizo mi IDE de Arduino para cargar mi boceto en un Arduino o ATTiny o ATmega328. Como sabes, cada dispositivo puede tener un pinout diferente. ¿El compilador Arduino es compatible ifdef, dependiendo de la placa a la que estoy conectado?

Por ejemplo

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

Respuestas:

13

Si. Aquí está la sintaxis:

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

También puedes hacer algo como esto para el Mega:

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

Asumiendo que la implementación de ATtiny es correcta, su código debería ser así:

#if defined (__AVR_ATtiny85__)
       a=0; b=1; c=2;
#else
       //Arduino
       a=9; b=10; c=11
#endif
Pingüino anónimo
fuente
En Arduino.h, __AVR_ATtiny85__se utiliza (capital T). Sin embargo, no estoy seguro si hace alguna diferencia.
geometrikal
2
alternativamente, usando 1.5. + IDE puede probar contra el tipo de placa que está construyendo. Ver Arduino-IDE-1.5 --- Especificaciones de hardware de terceros . Ejemplo "#if definido (ARDUINO_AVR_UNO)" o ARDUINO_AVR_MEGA2560 o ARDUINO_AVR_LEONARDO, etc ...
mpflaga