Tôi không rành về Ngôn ngữ C và tôi đã tự hỏi liệu có cách nào để trăn có thể được sử dụng để lập trình Arduino. Điều này rất có thể sẽ yêu cầu một IDE khác để có thể tự gỡ lỗi các tập lệnh mà chúng tự xử lý.
Tôi không rành về Ngôn ngữ C và tôi đã tự hỏi liệu có cách nào để trăn có thể được sử dụng để lập trình Arduino. Điều này rất có thể sẽ yêu cầu một IDE khác để có thể tự gỡ lỗi các tập lệnh mà chúng tự xử lý.
Câu trả lời:
Sẽ cực kỳ khó khăn để có được bất kỳ loại kịch bản Python nào chạy trực tiếp trên Arduino. Lý do là vì nó là ngôn ngữ được dịch, vì vậy bạn sẽ cần trình thông dịch trên tàu cùng với tập lệnh văn bản thuần túy. Có lẽ sẽ không đủ bộ nhớ cho tất cả điều đó.
Đặt cược tốt nhất của bạn có lẽ là tìm cách biên dịch tập lệnh Python thành mã máy gốc (đó là cách C / C ++ hoạt động). Tôi tin rằng có những dự án xung quanh để làm một cái gì đó tương tự cho các nền tảng khác, nhưng (theo như tôi biết) không có dự án nào thành công cho Arduino.
Bạn có thể tìm thấy một số thông tin hữu ích hơn cho câu hỏi này tại Stack Overflow: Có cách nào để "biên dịch" mã Python lên Arduino (Uno) không .
Vâng, có thể (phần nào) có thể lập trình Arduino bằng Python. Một dự án như vậy trên Github là API nguyên mẫu Python Arduino v2 . Nó cung cấp các chức năng rất cơ bản như I / O kỹ thuật số và I / O tương tự.
Điều này có thể được sử dụng cho các dự án rất đơn giản.
* Dự án này là một chút hack trong "lập trình" bảng bằng kết nối nối tiếp. Nó chuyển các lệnh qua kết nối nối tiếp đến một bản phác thảo đang chạy trên bảng, sau đó "thực thi" lệnh Python.
Có một dự án đưa một máy ảo Python vào các bộ điều khiển vi mô, bao gồm cả Arduino Mega .
Đây là một trích dẫn từ Ardunio Mega README , mang lại cảm giác về điều này có thể như thế nào (mặc dù, tôi chưa thử nghiệm điều này!):
Sau đây là phiên ví dụ sử dụng ipm ::
ipm> import avr, sys ipm> avr.ddrA(0xff) ipm> avr.portA(0) # Pins 22-29 all at 0 V ipm> avr.portA(0xa5) ipm> sys.heap() (2622, 7424)
Tôi đã sử dụng pyserial rất thành công trong việc kiểm soát các chân trên arduino. Máy trạm của bạn (máy tính xách tay, v.v.) chạy một kịch bản python sau đó giao tiếp trong thời gian thực với arduino.
Nó không hoàn toàn giống như chạy tập lệnh trực tiếp trên arduino nhưng tôi đã làm được nhiều hơn một chút so với tôi nghĩ rằng arduino có thể xử lý (một số phân tích âm nhạc, nhấn api REST, v.v.).
Một lựa chọn khác để xem xét là Arduino Yun . Ngoài chip AVR mà hầu hết Arduinos có, nó cũng bao gồm chip MIPS chạy Linux. Vì là linux, bạn có thể dễ dàng chạy mã python và bất kỳ gói python thuần nào cũng có thể dễ dàng cài đặt.
Tuy nhiên, tất cả khả năng nhập / xuất thú vị là trên chip AVR, không phải trên chip MIPS. Các dự án như Autobahn và LininoIO giải quyết vấn đề này bằng cách chạy một chương trình đặc biệt trên chip AVR, thực hiện các thao tác I / O theo hướng dẫn từ chip MIPS.
Chúng tôi biết đây là một vấn đề mở trong lập trình Arduino và trong thế giới nhúng nói chung. Có nhiều giải pháp khác nhau có sẵn trên thị trường như MicroPython nhưng hầu hết chúng đều dành riêng cho các bảng cụ thể và không cho phép giữ cho hệ thống theo thời gian thực. Chúng tôi đang làm việc trên một giải pháp! VIPER là một máy ảo Python cho Arduino DUE và tất cả các kiến trúc ARM 32 bit chạy trên hệ điều hành thời gian thực. Điều này có nghĩa là bạn có thể phát triển các tập lệnh Python có thể được trình bày bằng Arduino DUE, UDOO, Spark (tất cả các bảng) và trên các bảng nhân ST mới. Ngoài ra, nếu bạn cần hiệu suất cao và bạn thành thạo C, bạn có thể phát triển các mô-đun thời gian thực cho VIPER có thể được gọi và quản lý bởi các tập lệnh Python.
Bạn có thể thấy VIPER hoạt động tại đây http://bit.ly/kickviper
Bạn có thể học từ C (AVR) cách các cảm biến hoạt động nhưng nó cần nhiều thời gian hơn. Mã Arduino IDE và Mã Python cho Arduino sử dụng các chức năng Mã C để làm cho mọi thứ đơn giản. Python và Arduino IDE nếu sử dụng Firmata, họ sử dụng giao tiếp nối tiếp và bạn nghĩ bạn tự viết mã.
Vâng. Python có thể được sử dụng để lập trình Arduino, chỉ đơn giản bằng cách nhập pyfirmata, có thể giao tiếp arduino với Python.
Tôi e rằng Arduino IDE không sử dụng ngôn ngữ C / C ++. Nó bắt nguồn từ Xử lý IDE và có cú pháp giống C / Java khá đơn giản.