Ich verwende meine Arduino IDE, um meine Skizze entweder auf ein Arduino oder ATTiny oder ATmega328 hochzuladen. Wie Sie wissen, kann jedes Gerät eine andere Pinbelegung haben. Unterstützt der Arduino-Compiler ifdef
, abhängig von der Karte, mit der ich verbunden bin?
Zum Beispiel
#ifdef Attiny85 a=0; b=1; c=2; #else // arduino a=9; b=10; c=11; #endif
Antwort
Ja. Hier ist die Syntax:
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__) //Code here #endif
Sie können auch Folgendes für das Mega tun:
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) //Code here #endif
Vorausgesetzt, die Implementierung für ATtiny ist korrekt, sollte Ihr Code folgendermaßen aussehen:
#if defined (__AVR_ATtiny85__) a=0; b=1; c=2; #else //Arduino a=9; b=10; c=11 #endif
Kommentare
- In
Arduino.h
wird__AVR_ATtiny85__
verwendet (GroßbuchstabeT
). Ich bin mir nicht sicher, ob es einen Unterschied macht. - Alternativ können Sie mit 1.5. + IDE den Board-Typ testen, den Sie erstellen. Siehe Arduino-IDE-1.5 — Hardware-Spezifikation von Drittanbietern . Beispiel " #if defined (ARDUINO_AVR_UNO) " oder ARDUINO_AVR_MEGA2560 oder ARDUINO_AVR_LEONARDO usw.