Jeg bruker Arduino IDE til å enten laste opp skissen min til en Arduino eller ATTiny eller ATmega328. Som du vet kan hver enhet ha en annen pinout. Støtter Arduino-kompilatoren ifdef
, avhengig av kortet jeg er koblet til?
For eksempel
#ifdef Attiny85 a=0; b=1; c=2; #else // arduino a=9; b=10; c=11; #endif
Svar
Ja. Her er syntaksen:
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) //Code here #endif
Du kan også gjøre noe slikt for Mega:
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) //Code here #endif
Forutsatt at implementeringen for ATtiny er riktig, bør koden din være slik:
#if defined (__AVR_ATtiny85__) a=0; b=1; c=2; #else //Arduino a=9; b=10; c=11 #endif
Kommentarer
- I
Arduino.h
brukes__AVR_ATtiny85__
(storeT
). Ikke sikker på om det gjør noen forskjell. - alternativt ved å bruke 1.5. + IDE kan du teste mot brettetypen du bygger. Se Arduino-IDE-1.5 — Tredjeparts maskinvarespesifikasjon . Eksempel " #if definert (ARDUINO_AVR_UNO) " eller ARDUINO_AVR_MEGA2560 eller ARDUINO_AVR_LEONARDO, osv …