Arduino IDE #ifdef (Polski)

Używam mojego Arduino IDE do przesyłania szkicu do Arduino lub ATTiny lub ATmega328. Jak wiesz, każde urządzenie może mieć różne wyprowadzenia. Czy kompilator Arduino obsługuje ifdef, w zależności od płyty, do której jestem podłączony?

Na przykład

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

Odpowiedź

Tak. Oto składnia:

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

Możesz także zrobić coś takiego dla Mega:

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

Zakładając, że implementacja ATtiny jest poprawna, Twój kod powinien wyglądać następująco:

#if defined (__AVR_ATtiny85__) a=0; b=1; c=2; #else //Arduino a=9; b=10; c=11 #endif 

Komentarze

  • W Arduino.h użyto __AVR_ATtiny85__ (wielkie litery T). Nie jestem pewien, czy to robi jakąkolwiek różnicę.
  • alternatywnie używając 1.5. + IDE możesz przetestować typ planszy, który budujesz. Zobacz Arduino-IDE-1.5 — specyfikacja sprzętu innej firmy . Przykład " #if zdefiniowane (ARDUINO_AVR_UNO) " lub ARDUINO_AVR_MEGA2560 lub ARDUINO_AVR_LEONARDO itd …

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *