Arduino IDE #ifdef


13

ฉันใช้ Arduino IDE ของฉันเพื่ออัปโหลดภาพร่างของฉันไปยัง Arduino หรือ ATTiny หรือ ATmega328 ดังที่คุณทราบว่าอุปกรณ์แต่ละเครื่องสามารถมี pinout ที่แตกต่างกัน คอมไพเลอร์ Arduino รองรับifdefหรือไม่ขึ้นอยู่กับบอร์ดที่ฉันเชื่อมต่ออยู่หรือไม่?

ตัวอย่างเช่น

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

คำตอบ:


13

ใช่. นี่คือไวยากรณ์:

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

คุณยังสามารถทำสิ่งนี้เพื่อ Mega:

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

สมมติว่าการดำเนินการตาม ATtiny นั้นถูกต้องรหัสของคุณควรเป็นดังนี้:

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

ในArduino.h, __AVR_ATtiny85__ถูกนำมาใช้ (เมืองหลวงT) ไม่แน่ใจว่ามันสร้างความแตกต่างหรือไม่
geometrikal

2
หรือใช้ 1.5. + IDE คุณสามารถทดสอบกับประเภทบอร์ดที่คุณกำลังสร้าง ดูArduino-IDE-1.5 --- บุคคลที่ 3 ฮาร์ดแวร์สเปค ตัวอย่าง "กำหนด #if (ARDUINO_AVR_UNO)" หรือ ARDUINO_AVR_MEGA2560 หรือ ARDUINO_AVR_LEONARDO ฯลฯ ...
mpflaga
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.