Arduino IDE #ifdef

13

Saya menggunakan Arduino IDE saya untuk mengunggah sketsa saya ke Arduino atau ATTiny atau ATmega328. Seperti yang Anda ketahui, setiap perangkat dapat memiliki pinout yang berbeda. Apakah kompiler Arduino mendukung ifdef, tergantung pada board saya terhubung?

Sebagai contoh

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

Jawaban:

13

Iya. Berikut ini sintaksnya:

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

Anda juga dapat melakukan sesuatu seperti ini untuk Mega:

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

Dengan asumsi implementasi untuk ATtiny sudah benar, kode Anda harus seperti ini:

#if defined (__AVR_ATtiny85__)
       a=0; b=1; c=2;
#else
       //Arduino
       a=9; b=10; c=11
#endif
Penguin Anonim
sumber
Dalam Arduino.h, __AVR_ATtiny85__digunakan (modal T). Tidak yakin apakah itu membuat perbedaan.
geometrikal
2
atau menggunakan 1,5. + IDE Anda dapat menguji terhadap jenis papan yang Anda bangun. Lihat Arduino-IDE-1.5 --- spesifikasi pihak ke-3-Perangkat Keras . Contoh "#jika didefinisikan (ARDUINO_AVR_UNO)" atau ARDUINO_AVR_MEGA2560 atau ARDUINO_AVR_LEONARDO, dll ...
mpflaga