Arduino IDE #ifdef (Português)

Eu uso meu Arduino IDE para carregar meu esboço 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 a que estou conectado?

Por exemplo

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

Resposta

Sim. Esta é 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 

Comentários

  • Em Arduino.h, __AVR_ATtiny85__ é usado (maiúsculo T). Não tenho certeza se isso faz alguma diferença.
  • alternativamente usando 1.5. + IDE você pode testar contra o tipo de placa que você 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 …

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *