Arduino IDE #ifdef (Svenska)

Jag använder min Arduino IDE för att antingen ladda upp min skiss till en Arduino eller ATTiny eller ATmega328. Som du vet kan varje enhet ha olika pinout. Stöder Arduino-kompilatorn ifdef, beroende på kortet jag är ansluten till?

Till exempel

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

Svar

Ja. Här är syntaxen:

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

Du kan också göra något liknande för Mega:

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

Förutsatt att implementeringen för ATtiny är korrekt, bör din kod vara så här:

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

Kommentarer

  • I Arduino.h används __AVR_ATtiny85__ (versaler T). Inte säker på om det gör någon skillnad.
  • alternativt med 1.5. + IDE kan du testa mot brädetypen du bygger. Se Arduino-IDE-1.5 — tredjeparts-maskinvaruspecifikation . Exempel " #if definierad (ARDUINO_AVR_UNO) " eller ARDUINO_AVR_MEGA2560 eller ARDUINO_AVR_LEONARDO, etc …

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *