Apakah ada cara untuk mensimulasikan menjalankan program sebelum membakar ke papan?

24

Program mungkin, kadang-kadang, memiliki kesalahan runtime. Ini kadang-kadang sulit ditemukan dan dapat dengan mudah dilewatkan. Apakah ada cara untuk menguji program sebelum benar-benar membakar ke papan?

asheeshr
sumber
Mungkin terkait dengan arduino.stackexchange.com/q/84/25
powtac
Juga mungkin terkait dengan arduino.stackexchange.com/questions/20/…
Anda mungkin memiliki masalah kesalahan hanya terjadi pada Arduino fisik (meskipun saya tidak bisa memberikan contoh).
Polar
@Polar Dalam hal logika program, saya tidak bisa membayangkan caranya. Bisakah Anda, mungkin, posting setiap contoh?
asheeshr

Jawaban:

19

Ada beberapa proyek Simulator Arduino di luar sana.

Mungkin salah satu yang lebih dewasa adalah Virtronics Simulator untuk Arduino , video YouTube di sini .

Virtronics Arduino Simulator

Halaman Virtronics yang ditautkan di atas juga mencantumkan beberapa simulator Arduino lainnya, baik gratis maupun berbayar.

Mengingat minat yang Arduino bangkitkan, kemungkinan ada lebih banyak simulator semacam itu di luar sana, jadi tidak ada gunanya mencoba untuk menuliskan semuanya dalam jawaban di sini.

Yang perlu diperhatikan adalah bahwa ada juga aplikasi iPhone Arduino Simulator : Ini bukan rekomendasi, belum melihatnya beroperasi.


Di samping catatan:

Arduino itu sendiri merupakan papan prototyping / eksperimen. Ini sangat ideal untuk pemrograman kode eksperimental, debugging, memodifikasi dan kemudian mem-flashing ulang kode baru, sebanyak yang diinginkan . Jika kode hang, reset dan reflash dengan perubahan apa pun.

Oleh karena itu, manfaat menggunakan simulator, yang tidak pernah dapat dengan sempurna meniru berbagai waktu dunia nyata atau masalah lain yang mungkin dihadapi aplikasi, dipertanyakan.

Jika biaya Arduino menjadi perhatian, ada beberapa opsi terbuka:

  • Klon Arduino Nano murah dari eBay - Saya memiliki beberapa papan Meduino Nano Enhancement , mereka bekerja dengan sangat baik, dan harganya di bawah $ 10 termasuk pengiriman di seluruh dunia: Meduino Nano Enhancement
  • Buat Arduino Anda sendiri - Situs Arduino memandu Anda melalui pembuatannya di papan tempat memotong roti , yang bahkan tidak mengharuskan Anda untuk menyolder apa pun!
Anindo Ghosh
sumber
Terima kasih telah berbagi tautan ke Simulator Virtronics!
powtac
Ya, jauh lebih mudah untuk debug dan reflash. ATMega328 flash diberi peringkat 10.000 siklus penulisan ulang, jadi meskipun Anda menulis ulang 10 kali setiap hari, Anda memiliki lebih dari dua tahun kesenangan sebelum Anda :-) Cukup menyenangkan bagi seorang hobiis. Jika Anda hanya sedikit lebih ke dalamnya, Anda dapat menggunakan papan yang lebih baru untuk melakukan debugging dan ketika mereka mulai aus (katakanlah setelah 5000 siklus?) Anda dapat menggunakannya untuk aplikasi yang stabil dan membeli yang baru untuk debugging.
Lorenzo Donati mendukung Monica
8

Anda dapat menemukan kesalahan runtime jika Anda dapat secara manual melewati program Anda dengan Arduino terhubung dan debug ( setelah mengunduh kode ke Arduino). Ini tersedia dalam Visual Micro walaupun membutuhkan Visual Studio. Anda dapat mengatur breakpoint, mengevaluasi variabel, dan mengubah nilai variabel. Anda juga bisa mendapatkan visualisasi memori dari waktu ke waktu:

masukkan deskripsi gambar di sini


sumber
Sangat rapi. Seberapa matang proyek ini - atau, lebih tepatnya, apakah IDE ini berjalan lancar dalam pengalaman Anda?
boardbite
Saya belum menggunakannya untuk profil, dan saya hanya menggunakannya secara singkat, tetapi terintegrasi dengan baik dan berjalan dengan baik untuk saya. Saya sangat menghargai kemampuan untuk debug tanpa beralih ke Serial.print
4

Salah satu cara untuk melakukan ini adalah dengan membuat program pembungkus untuk kode aktual yang mensimulasikan semua input dan menerima output (sehingga menciptakan loop umpan balik) sesuai lingkungan nyata. Ini akan mengambil jumlah usaha variabel tergantung pada jenis program, tingkat pengujian dan jumlah input.

Ingatlah bahwa saat menulis program pembungkus, Anda harus mengikuti pendekatan kotak hitam .

masukkan deskripsi gambar di sini

Jika tidak, kode luar Anda mungkin tidak menguji program sebaik mungkin dengan mengingat kode yang sebenarnya saat membuat kode uji dapat membuat Anda bias untuk mengabaikan kasus batas atau bidang masalah (Ini telah diamati terjadi saat melakukan Pengujian Kotak Putih yang adalah alternatifnya).

asheeshr
sumber
Apakah Anda tahu ada contoh? Sebagian besar kode Arduino yang saya lihat tidak memiliki tes unit yang tepat bahkan untuk bagian yang tidak memerlukan input / output.
Jakob
@ Jakob Saya biasanya menulis kode saya sendiri untuk pengujian. Ini praktis untuk proyek kecil.
asheeshr