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 literyT
). 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 …