Arduino IDE #ifdef (Deutsch)

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ßbuchstabe T). 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.