Arduino IDE #ifdef


13

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 ifdefabhängig von der Karte , mit der ich verbunden bin?

Beispielsweise

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

Antworten:


13

Ja. Hier ist die Syntax:

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

Sie können für das Mega auch so etwas tun:

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

Unter der Annahme, dass die Implementierung für ATtiny korrekt ist, 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

In Arduino.h, __AVR_ATtiny85__verwendet wird ( die Hauptstadt T). Ich bin mir nicht sicher, ob es einen Unterschied macht.
geometrikal

1
Alternativ können Sie mit 1.5. + IDE den von Ihnen erstellten Board-Typ testen. Siehe Arduino-IDE-1.5 --- Hardware-Spezifikation von Drittanbietern . Beispiel "#if defined (ARDUINO_AVR_UNO)" oder ARDUINO_AVR_MEGA2560 oder ARDUINO_AVR_LEONARDO, etc ...
mpflaga
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.