Viết chương trình C bên ngoài Arduino IDE?


12

Tôi thích ý tưởng sử dụng Arduino IDE cho các dự án đơn giản và để bắt đầu với Arduino, nhưng sự đồng thuận mà tôi đã nhận được cho đến nay là nó dành cho những người mới biết về Arduino và / hoặc lập trình nói chung.

Tôi hiểu rằng có thể viết chương trình C từ đầu, hoàn toàn bên ngoài Arduino IDE, và sau đó sử dụng một công cụ như AVRDUDE để tải nó lên Arduino MCU. Tùy chọn này, mặc dù hấp dẫn và thú vị, khiến tôi có một vài lo ngại:

  • Những thư viện Arduino nào sẽ cần được nhập / liên kết bởi chương trình "C thô" như vậy? Tôi giả định rằng khi một chương trình dựa trên Arduino IDE thực thi digitalWrite(...)thì nó thực sự đang gọi một lib C, có thể được cung cấp bởi Arduino, dưới mui xe. Tôi lo ngại về việc đảm bảo tất cả các "libs cơ bản" này được bao gồm trong chương trình C của tôi. Suy nghĩ?
  • Có điều gì khác "mất" khi bay một mình và mạo hiểm bên ngoài Arduino IDE không? Bất kỳ khả năng / tính năng nào mà bây giờ tôi sẽ phải "tự lăn"?

arduino.stackexchange.com/questions/9538/ Từ Câu trả lời cho câu hỏi của tôi đã giúp tôi thiết lập nó. Bạn có thể thay thế / bỏ đi bất cứ thứ gì từ arduino. Bạn có thể: -Làm bảng của riêng bạn. -Sử dụng IDE của riêng bạn. -Sử dụng các thư viện của riêng bạn.
Paul

Câu trả lời:


4

Đây là hai bài viết hay về cách Arduino thực sự hoạt động ở chế độ nền. Làm thế nào nó loại bỏ ma sát từ lập trình vi điều khiển.

  1. Chuyến tham quan của Arduino Internals: Hello World thực sự hoạt động như thế nào?
  2. Arduino và GCC, biên dịch và tải lên các chương trình chỉ sử dụng tệp thực hiện

Nó cũng đã được thảo luận ở đây Có cách nào hoặc hướng dẫn để chuyển đổi mã Arduino thành mã C không?


Cảm ơn @Michal Foksa (+1) - Tôi đoán tôi chỉ sốc khi câu trả lời cho điều này không được biết đến nhiều hơn! Tôi đã có thể nghĩ rằng Arduino IDE có, chẳng hạn, một lib/nơi thư mục dưới gốc cài đặt của mình rằng có những thứ như arduino-core.dll, arduino-io.dllvv
smeeb

@smeeb: Bạn đã đúng, cài đặt Arduino IDE - phải - bao gồm các thư viện của các hàm thời gian chạy cơ bản cộng với các hàm do người dùng cung cấp. Nửa chừng trang của liên kết 2, trong tệp thực hiện, biểu tượng LIBS chỉ vào chúng. Chúng không phải là dll (mà trong Windows, được gọi vào thời gian chạy); chúng là các tệp đối tượng (.o trong các hệ thống giống như unix, có thể giống với Windows) được liên kết tĩnh với các tệp đối tượng được biên dịch của bạn thành (cuối cùng) một tệp tải .hex, là hình ảnh trình tải hoàn chỉnh. ...
JRobert

... Những người viết chương trình để kiếm sống cũng được biết đến, nhưng các nhà thiết kế công cụ Arduino (thương hiệu) đã cố tình che giấu càng nhiều chi tiết lộn xộn càng tốt để áp dụng các thiết bị điện tử kỹ thuật số cho mọi người mà không cần phải trở nên chuyên nghiệp lập trình viên và kỹ sư để làm điều đó. Trong phạm vi bạn đang tìm thấy thông tin này khó tìm thấy trong cộng đồng Arduino, họ đã thành công!
JRobert

Thật không may, vì lý do cũ, bạn xây dựng phần mềm Arduino khá khác so với cách được chấp nhận tiêu chuẩn. Trong 'loại bỏ ma sát' để làm cho nó đơn giản, họ đã tạo ra một cộng đồng không tương thích lớn. Mỗi 'plugin' IDE là một nỗ lực để làm cho một cái gì đó không hoạt động tiêu chuẩn theo cách gần tiêu chuẩn. Hãy ghi nhớ điều đó khi bạn gặp vấn đề.

5

Bạn hoàn toàn đúng về việc cần liên kết với các thư viện khác. Tuy nhiên, bạn không nhất thiết phải lo lắng về tất cả các chi tiết, trừ khi bạn muốn / cần phải làm điều gì đó bất thường. Một số IDE thay thế đã hỗ trợ Arduino, thường là thông qua các plugin xử lý rất nhiều chi tiết tự động.

Tôi thường khuyên dùng Eclipse vì đây là một IDE được sử dụng rất rộng rãi cho các mục đích khác nhau. Tuy nhiên, có một số khả năng khác. Xem câu hỏi này để biết thêm thông tin:


Cảm ơn @Peter R. Bloomfield (+1) - tuy nhiên tôi thực sự đang tìm kiếm một câu trả lời không phải là trung tâm của IDE. Không phải tôi có bất cứ điều gì chống lại IDE, chỉ là để hiểu "cảnh quan thư viện" của Arduino, tôi cảm thấy như IDE chỉ là một người trung gian không cần thiết. Như đã nói, tôi sẽ giả sử rằng có hơn 1 "libs cốt lõi" mà TẤT CẢ các ứng dụng Arduino phải liên kết và sau đó có các lib tùy chọn mà bạn có thể cần hoặc không cần, tùy thuộc vào ứng dụng của bạn thực sự làm gì. Bạn có thể chỉ cho tôi một danh sách các "libs cốt lõi" này, cũng như bất kỳ tùy chọn nào khác không? Cảm ơn một lần nữa!
smeeb

Và để đủ điều kiện những gì tôi đã nói ở trên về việc IDE là "người trung gian không cần thiết", điều tôi thực sự muốn nói là: Tôi nên có thể viết một ứng dụng C bên ngoài bất kỳ IDE nào (Arduino, Eclipse, hay nói cách khác), liên kết với các lib của Arduino mà ứng dụng của tôi cần và vẫn biên dịch / triển khai ứng dụng vào phần cứng Arduino. Tôi đang tự hỏi những thư viện đó là gì và nơi tôi có thể tìm tài liệu về chúng.
smeeb

@smeeb Cho rằng Arduino là dành cho người mới bắt đầu, tôi không nghĩ có nhiều tài liệu chính thức (nếu có) dọc theo những dòng đó. Tôi hy vọng cách tốt nhất để nghiên cứu nó là tìm kiếm trực tuyến các ví dụ về các tệp tạo tệp Arduino. Có một số ví dụ cũ ở gần cuối trang này .
Peter Bloomfield

@smeeb: Giống như bạn, tôi không phải là fan của IDE. Có một vài tệp tạo tệp Arduino chung trôi nổi trên Web. Về cơ bản bạn cần phải biên dịch các thư viện lõi Arduino vào libore.a, sau đó biên dịch tập tin .ino của bạn với -x c++ -include Arduino.hcho trình biên dịch của bạn để hiểu nó (cộng với một loạt các -D, -I, vv) và liên kết với libcore.a.
Edgar Bonet

0

Có, bạn có thể viết một chương trình bên ngoài Arduino IDE. Ví dụ, tôi đã thử IDE Eclipse với trình cắm thêm AVR và bây giờ tôi gắn bó với AVR Studio. Tất nhiên, bạn sẽ không có một số chức năng mà bạn có thể thường sử dụng khi bạn viết trong Arduino IDE và cả một số thư viện. Nhưng, tại sao không thử thực hiện công cụ. Tại sao phải giới hạn bản thân vào các chức năng và thư viện do người khác tạo ra khi bạn có thể học và viết riêng của mình, có thể tốt hơn các chức năng hiện có.


-3

ESP8266 + Arduino IDE 1.6.4 Portable - Hướng dẫn cài đặt nhanh đầy đủ www.instructables.com /.../ ESP8266-Arduino-IDE-164-Portable-F ...

Tất cả các tệp Arduino IDE v 1.6.4 của bạn, bao gồm cả phần mở rộng ESP8266, bản phác thảo, libraies đã cài đặt, v.v ... chỉ nên được đặt trong thư mục "arduino-1.6.4" mới được tạo.


Đây không phải là một câu trả lời rất hữu ích. Liên kết không phải là một liên kết thực sự. Và ngay cả khi đó là, Stack Exchange cau mày với các câu trả lời chỉ liên kết, vì trang web được liên kết có thể đi xuống. Hãy mở rộng câu trả lời của bạn.
Nick Gammon
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.