Go Down

Topic: #ifdef Arduino board ? (Read 7083 times) previous topic - next topic

DF4XX

Hallo in die Runde.

gibt es von der IDE vordefinerte #define Nano oder #define Uno etc Precompiler Defintionen?
Ich möchte den Code auf unterschiedlichen Boards laufen lassen und mit

#ifdef UNO
.....
#endif

#ifdef NANO
....
#endif 

codieren.

Jemand eine Idee ?

Danke vorab
Gruß
4XX

uwefed

Der Arduino Nano und der Arduino UNO sind nicht so verschieden daß man man das unterscheiden muß. Systemvariablen gibt es für die IDE - Version und für den Kontroller .
zb in ~\arduino\hardware\arduino\cores\Arduino.h
ist definiert in diesem Fall für die Referenzspannung:
Code: [Select]
#if defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) ||
defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
#define DEFAULT 0
#define EXTERNAL 1
#define INTERNAL 2
#else 
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1284__)
|| defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__)
|| defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__)
#define INTERNAL1V1 2
#define INTERNAL2V56 3
#else
#define INTERNAL 3
#endif
#define DEFAULT 1
#define EXTERNAL 0
#endif

Mir ist aber nichts bekannt oder habe nichts gefunden um einen ATmega328 DIl von einem ATmega328 smd zu unterscheiden.

Grüße Uwe

DF4XX

Uwe,

da hab ich mich vielleicht nicht so geschickt ausgedrückt..   Nano / Uno .  Aber die Unterschiede zw. Uno und Mega2560 sind schon erheblich.

Letztendlich habe ich einen Source, der mal auf den Uno / Nano kommt, anderseits auch mal testweise auf den Mega2560.
Mit den #ifdef <BOARD> wollte ich dann die entsprechend passenden Portdefinition hinterlegen.
Zur Not muss ich eben selber den #define <BOARD> deklarieren.. Wollte es halt einfach haben *smile*

Gruß
4XX

uwefed

Also wenn Du zwischen UNO/NANO und MEGA2560 unterscheiden willst dann habe ich das ja schon aufgezeigt:
Code: [Select]
#if defined(__AVR_ATmega2560__)  // Arduino MEGA2560
....
#endif

#if defined(__AVR_ATmega328P__)  // Arduino UNO, NANO
....
#endif

Grüße Uwe

Go Up