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__
(versalerT
). 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 …