Có cách nào để mô phỏng chương trình chạy trước khi ghi nó lên bảng không?


24

Đôi khi, các chương trình có thể có lỗi thời gian chạy. Chúng đôi khi khó tìm và có thể dễ dàng bỏ qua. Có cách nào để kiểm tra chương trình trước khi thực sự ghi nó lên bảng không?


Có thể liên quan đến arduino.stackexchange.com/q/84/25
powtac

Cũng có thể liên quan đến arduino.stackexchange.com/questions/20/ trộm

Bạn có thể gặp sự cố lỗi chỉ xảy ra trên một Arduino vật lý (tuy nhiên tôi không thể đưa ra một ví dụ).
Cực

@Polar Về mặt logic chương trình, tôi không thể tưởng tượng làm thế nào. Bạn có thể, có thể, gửi bất kỳ ví dụ?
asheeshr

Câu trả lời:


19

Có một vài dự án Arduino Simulator ngoài kia.

Có lẽ một trong những người trưởng thành hơn là Trình mô phỏng Virtronics cho Arduino , video YouTube ở đây .

Trình mô phỏng Arduino Virtronics

Trang Virtronics được liên kết ở trên cũng liệt kê một vài trình giả lập Arduino khác, cả miễn phí và trả phí.

Với sự quan tâm mà Arduino gợi lên, có khả năng sẽ có nhiều mô phỏng như vậy ngoài kia, vì vậy không có điểm nào cố gắng liệt kê tất cả chúng trong một câu trả lời ở đây.

Điều đáng chú ý là cũng có một ứng dụng Arduino Simulator iPhone : Đây không phải là một khuyến nghị, chưa thấy nó hoạt động.


Còn một chú ý đáng nói:

Bản thân Arduino là một bảng thử nghiệm / thử nghiệm. Đó là lý tưởng để lập trình mã thử nghiệm, gỡ lỗi nó, sửa đổi và sau đó nhấp nháy lại mã mới, nhiều lần như một lần thích . Nếu mã bị treo, hãy đặt lại và khởi động lại với bất kỳ thay đổi nào.

Do đó, giá trị của việc sử dụng một trình giả lập, không bao giờ có thể mô phỏng hoàn hảo thời gian trong thế giới thực khác nhau hoặc các vấn đề khác mà ứng dụng có thể gặp phải, là đáng nghi ngờ.

Nếu chi phí của Arduino là mối quan tâm, có một số tùy chọn mở:

  • Arduino Nano rẻ tiền nhân bản ra khỏi eBay - Tôi có một số bảng cải tiến Nano Meduino , chúng hoạt động rất xuất sắc và có giá dưới 10 đô la bao gồm cả vận chuyển trên toàn thế giới: Tăng cường Nano Meduino
  • Tạo Arduino của riêng bạn - Trang web Arduino hướng dẫn bạn thông qua việc tạo một cái trên bảng , điều này thậm chí không cần bạn hàn bất cứ thứ gì!

Cảm ơn đã chia sẻ liên kết đến Trình mô phỏng Virtronics!
powtac

Vâng, nó dễ dàng hơn nhiều để gỡ lỗi và phản xạ. Đèn flash ATMega328 được đánh giá ở 10000 chu kỳ viết lại, vì vậy ngay cả khi bạn viết lại 10 lần mỗi ngày, bạn vẫn có hơn hai năm vui vẻ trước bạn :-) Khá nhiều niềm vui cho một người có sở thích. Nếu bạn chỉ cần thêm một chút vào nó, bạn có thể sử dụng các bảng mới hơn để gỡ lỗi và khi chúng bắt đầu bị hao mòn (giả sử sau 5000 chu kỳ?), Bạn có thể sử dụng chúng cho các ứng dụng ổn định, mua một cái mới để gỡ lỗi.
Lorenzo Donati hỗ trợ Monica

8

Bạn có thể tìm thấy lỗi thời gian chạy nếu bạn có thể tự bước qua chương trình của mình với Arduino được kết nối và gỡ lỗi ( sau khi tải mã xuống Arduino). Điều này có sẵn trong Visual Micro mặc dù nó yêu cầu Visual Studio. Bạn có thể đặt điểm dừng, đánh giá biến và thay đổi giá trị biến. Bạn cũng có thể có được hình dung của bộ nhớ theo thời gian:

nhập mô tả hình ảnh ở đây


Rât gọn gang. Dự án này trưởng thành đến mức nào - hay nói đúng hơn là IDE này chạy trơn tru theo kinh nghiệm của bạn?
boardbite

Tôi đã không sử dụng nó để định hình và tôi chỉ sử dụng nó một thời gian ngắn, nhưng nó tích hợp khá tốt và chạy tốt cho tôi. Tôi thực sự đánh giá cao khả năng gỡ lỗi mà không cần dùng đến serial.print

4

Một cách để làm điều này là tạo một chương trình bao bọc cho mã thực tế mô phỏng tất cả các đầu vào và chấp nhận đầu ra (từ đó tạo ra một vòng phản hồi) theo môi trường thực. Điều này sẽ mất một lượng nỗ lực khác nhau tùy thuộc vào loại chương trình, mức độ thử nghiệm và số lượng đầu vào.

Hãy nhớ rằng trong khi viết chương trình trình bao bọc, bạn nên tuân theo cách tiếp cận hộp đen .

nhập mô tả hình ảnh ở đây

Nếu không, mã bên ngoài của bạn có thể không kiểm tra các chương trình cũng như có thể là giữ trong tâm trí các mã thực tế trong khi tạo ra các mã kiểm tra có thể thiên vị bạn bỏ qua trường hợp ranh giới hoặc vấn đề khu vực (Điều này đã được quan sát thấy xảy ra trong khi làm trắng-Box Testing mà là sự thay thế).


Bạn có biết ví dụ nào không? Hầu hết các mã Arduino tôi đã thấy thiếu các bài kiểm tra đơn vị thích hợp ngay cả đối với các phần không yêu cầu đầu vào / đầu ra.
Jakob

@Jakob Tôi thường tự viết mã cho bài kiểm tra. Đó là thực tế cho các dự án nhỏ.
asheeshr
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.