Arduino IDE #ifdef


13

Tôi sử dụng Arduino IDE của mình để tải bản phác thảo của mình lên Arduino hoặc ATTiny hoặc ATmega328. Như bạn biết mỗi thiết bị có thể có một sơ đồ chân khác nhau. Trình biên dịch Arduino có hỗ trợ ifdef, tùy thuộc vào bo mạch tôi đang kết nối không?

Ví dụ

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

Câu trả lời:


13

Đúng. Đây là cú pháp:

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

Bạn cũng có thể làm một cái gì đó như thế này cho Mega:

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

Giả sử việc triển khai ATtiny là chính xác, mã của bạn sẽ như thế này:

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

Trong Arduino.h, __AVR_ATtiny85__được sử dụng (vốn T). Không chắc chắn nếu nó làm cho bất kỳ sự khác biệt mặc dù.
geometrikal

2
cách khác bằng cách sử dụng 1.5. + IDE bạn có thể kiểm tra loại bảng bạn đang xây dựng. Xem Arduino-IDE-1.5 --- Đặc tả phần cứng của bên thứ ba . Ví dụ "#if được xác định (ARDUINO_AVR_UNO)" hoặc ARDUINO_AVR_MEGA2560 hoặc ARDUINO_AVR_LEONARDO, v.v ...
mpflaga
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.