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

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.