Arduino IDE #ifdef


13

मैं अपने Arduino IDE का उपयोग या तो अपने स्केच को Arduino या ATTiny या ATmega328 पर अपलोड करने के लिए करता हूं। जैसा कि आप जानते हैं कि प्रत्येक डिवाइस में एक अलग पिनआउट हो सकता है। क्या 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

आप मेगा के लिए भी कुछ ऐसा कर सकते हैं:

#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)। यकीन नहीं होता, हालांकि इससे कोई फर्क पड़ता है।
जियोमेट्रीकल

2
वैकल्पिक रूप से 1.5। + IDE का उपयोग करके आप अपने द्वारा बनाए जा रहे बोर्ड प्रकार के विरुद्ध परीक्षण कर सकते हैं। देखें Arduino-आईडीई 1.5 --- 3-पक्ष-हार्डवेयर विनिर्देश । उदाहरण "#if परिभाषित (ARDUINO_AVR_UNO)" या ARDUINO_AVR_MEGA2560 या ARDUINO_AVR_LEONARDO, आदि ...
MPflaga
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.