Bir program çalışmasını tahtaya yazmadan önce simüle etmenin bir yolu var mı?


24

Programlar zaman zaman hata yapabilir. Bunları bulmak bazen zordur ve kolayca özlenebilir. Programı tahtaya yazmadan önce test etmenin bir yolu var mı?


İle ilgili olabilecek arduino.stackexchange.com/q/84/25
powtac


Bu hatanın yalnızca fiziksel bir Arduino'da meydana gelmesi sorununu yaşayabilirsiniz (Yine de bir örnek veremedim).
Polar

@Polar Program mantığı açısından, nasıl olduğunu tahmin edemiyorum. Belki bir örnek gönderebilir misiniz ?
asheeshr

Yanıtlar:


19

Orada birkaç Arduino Simülatörü projesi var.

Muhtemelen daha olgun olanlardan biri, Arduino için Virtronics Simulator , buradaki YouTube videosu .

Virtronics Arduino Simülatörü

Yukarıda bağlanan Virtronics sayfası ayrıca hem ücretsiz hem de ücretli birkaç Arduino simülatörünü listeler.

Arduino'nun uyandırdığı ilgi göz önüne alındığında, orada daha pek çok simülatör olması muhtemeldir, bu yüzden hepsini burada bir cevapta listelemeye çalışmanın bir anlamı yoktur.

Kayda değer olan şey, aynı zamanda bir Arduino Simulator iPhone uygulaması olduğudur : Bu bir öneri değil, henüz çalışırken görmedim.


Bir yandan not:

Arduino kendi içinde bir prototip / deneme kuruluştur. Bir deney kodunu programlamak, hata ayıklamak, değiştirmek ve daha sonra yeni kodu değiştirmek için ideal olanı . Kod kilitlenirse, herhangi bir değişiklikle sıfırlayın ve yeniden başlatın.

Bu nedenle, bir uygulamanın karşılaşabileceği çeşitli gerçek dünya zamanlamalarını veya diğer sorunları hiçbir zaman kusursuz şekilde taklit edemeyen bir simülatör kullanmanın faydası sorgulanabilir.

Arduino’nun maliyeti kaygı verici ise, birkaç seçenek açıktır:

  • Ucuz Arduino Nano eBay'i klonladı - Birkaç Meduino Nano Geliştirme kartına sahibim , mükemmel çalışıyorlar ve dünya çapında nakliye dahil 10 doların altında bir fiyata sahipler : Meduino Nano Geliştirme
  • Kendi Arduino'nuzu yaratın - Arduino sitesi bir ekmek tahtası üzerinde ilerlemenizi sağlar ; bu da hiçbir şeyi lehimlemenize bile gerek duymaz!

Virtronics Simulator bağlantısını paylaştığınız için teşekkür ederiz!
powtac

Evet, hata ayıklamak ve kırmak çok daha kolaydır. ATMega328 flash 10000 yeniden yazma döngüsünde değerlendirilmiştir, bu yüzden her gün 10 kez yeniden yazsanız bile, sizden önce iki yıldan fazla eğlenceye sahip olursunuz. :-) Bir hobi için çok eğlenceli. Sadece biraz daha fazlaysanız, hata ayıklamayı yapmak için daha yeni panolar kullanabilirsiniz ve yıpranmaya başladıklarında (örneğin 5000 döngüden sonra?) Bunları sabit uygulamalar için kullanabilir ve hata ayıklama için yeni bir tane satın alabilirsiniz.
Lorenzo Donati, Monica,

8

Arduino'ya bağlıyken ve hata ayıkladığınızda ( Arduino'ya kod indirdikten sonra) programınıza manuel olarak adım atabilirsiniz . Bu Visual Studio'da olmasına rağmen Visual Micro'da mevcuttur . Kesme noktalarını ayarlayabilir, değişkenleri değerlendirebilir ve değişken değerlerini değiştirebilirsiniz. Ayrıca zamanla belleğin görselleştirmesini de alabilirsiniz:

görüntü tanımını buraya girin


Çok temiz. Bu proje ne kadar olgun - ya da daha doğrusu bu IDE deneyiminizde sorunsuz bir şekilde çalışıyor mu?
boardbite

Profil yapmak için kullanmadım ve sadece kısa bir süre kullandım, ancak oldukça iyi bütünleşiyor ve benim için iyi çalışıyor. Serial.print'e başvurmadan hata ayıklama yeteneğini gerçekten takdir ediyorum

4

Bunu yapmanın bir yolu, asıl kod için tüm girdileri simüle eden ve çıktıları kabul eden (böylece bir geri besleme döngüsü yaratan) gerçek ortama göre bir sarmalayıcı program oluşturmaktır. Bu, programın türüne, test derecesine ve giriş sayısına bağlı olarak değişken çaba gerektirir.

Sarıcı programı yazarken kara kutu yaklaşımına uymanız gerektiğini unutmayın .

görüntü tanımını buraya girin

Önyargı Eğer sınır davaları veya sorunlu alanları (Bu yaparken gerçekleşmesi gözlenmiştir görmezden olabilir test kodu yaratırken Aksi takdirde, dış kod akılda gerçek kod tutmak yanı sıra mümkün olduğunca programı test olmayabilir Beyaz-Box Test hangi alternatiftir).


Herhangi bir örnek biliyor musunuz? Arduino kodunun çoğunda, giriş / çıkış gerektirmeyen parçalar için bile uygun birim testlerinin bulunmadığı görülüyor.
Jakob

@ Jakob Genellikle test için kendi kodumu yazarım. Küçük projeler için pratiktir.
asheeshr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.