Arduino IDE #ifdef


13

Eu uso meu IDE do Arduino para fazer upload do meu sketch para um Arduino ou ATTiny ou ATmega328. Como você sabe, cada dispositivo pode ter uma pinagem diferente. O compilador Arduino suporta ifdef, dependendo da placa à qual estou conectado?

Por exemplo

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

Respostas:


13

Sim. Aqui está a sintaxe:

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

Você também pode fazer algo assim para o Mega:

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

Supondo que a implementação do ATtiny esteja correta, seu código deve ser assim:

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

Em Arduino.h, __AVR_ATtiny85__é usado (capital T). Não tenho certeza se isso faz alguma diferença.
geometrikal

2
Como alternativa, usando o 1.5. + IDE, você pode testar o tipo de placa que está construindo. Consulte Arduino-IDE-1.5 --- Especificação de hardware de terceiros . Exemplo "#if definido (ARDUINO_AVR_UNO)" ou ARDUINO_AVR_MEGA2560 ou ARDUINO_AVR_LEONARDO, etc ...
mpflaga
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.