2012-10-01 20 views
6

Arduino Uno donanım için program oluşturmak üzere Simulink kullanmak istiyorum. Ancak, çıktıyı bir LCD ekranına işlemek için sıvı kristal gibi mevcut kütüphaneleri kullanmak istiyorum. Liquidcrystal sınıf dosyasını içeren bir s işlevini nasıl oluşturabilirim?Sıvı kristal için Arduino kütüphanesi oluştur Simulink blok oluştur

Sanırım, s-işlevi gitmek için bir yol çünkü mevcut Simulink Arduino kütüphane blokları aslında maskelenmiş olan s-işlevlerdir. Ben bir modelden C kodunu derlemek ve Arduino IDE bir projeye dahil edemez sanmıyorum Ben Simulink öğrenci sürümünü kullanıyorum.

bir cevap haline yorumumu çevirmek gerekir
+1

Ben zaten [buradan] baktım varsayarak yaşıyorum (http://www.mathworks.com/academia/arduino-software/arduino-simulink.html). MathWorks'ten gelen Arduino blokları çalıştırmak için herhangi bir ek alet kutusu gerektirmemelidir. MATLAB/Simulink'in öğrenci versiyonu, standart versiyondan daha az işlevselliğe sahip değildir, * fakat * hangi araç kutularını kurduğunuzla sınırlı olabilirsiniz. Kullanabileceğiniz araç kutularının bir listesini almak için 'ver' komutunu kullanın. Bu, bu probleme nasıl yaklaştığınızı büyük ölçüde etkileyebilir. – grungetta

+0

Ayrıca, liquidcrystal sınıf dosyasında daha fazla bilgi verebilir misiniz. Bu, atıfta bulunulan bir Arduino kütüphanesi mi?Kullanmak istediğiniz tam dosya hakkında daha fazla bilgi sağlayan bazı bağlantılar varsa, tam olarak neyi amaçladığınızı anlamanız çok yararlı olacaktır. – grungetta

+0

Hangi MATLAB sürümünü kullanıyorsunuz? Ver komut isteminde kullanın - Gerçek Zamanlı Atölye, Simulink Coder veya Katıştırılmış Kodlayıcı var mı? Bu kod oluşturma araçlarından hiçbirine sahip değilseniz, Simulink'ten bir program oluşturmak için mücadele edeceksiniz, sadece simülasyon olarak çalışabileceksiniz. – RichColours

cevap

1

... yüklü kod üretme araçlarını gerekir Simulink'ne bir programı oluşturmak için bu kadar Okay :)

. ver, Simulink Coder'ın ve isteğe bağlı olarak Katıştırılmış Kodlayıcının olup olmadığını size söyleyecektir. MATLAB'ın daha eski bir sürümünü kullanıyorsanız, buna Gerçek Zamanlı Atölye denir. Bunlardan biri olmadan kod üretecek bir şey olmayacaksın.

Yani kod-üretebilir varsayarak:

S-fonksiyonları gitmek onlar yoldur: http://www.mathworks.co.uk/help/simulink/s-function-basics.html

... S-fonksiyonları oluşturma ile yardımcı olmak için çeşitli araçlar olmasına rağmen.

Kısacası, bir süreçtir:

  • (veya böyle bir şey) sfunc_basic.c bir kopyasını alın S-fonksiyonu C dosya şablonu ve buna göre doldurmak. Bu herhangi bir yöntemle önemsiz değildir, bir modele örneklendiğinde MATLAB'ı çökertmemek (aşağıya bakınız) ve onu derlemek için biraz zaman alabilir.
  • mex komutu ile derleyin (belgelere bakın).
  • Modeldeki bloğu kullanın. Kendinizi çok basit bir şey yapan bir test demeti modeli oluşturun. Çalışan bir çözüm oluşturmak için gerekli olan minimum model bloklarını kullanın.
  • Model C programında derleme ve çalışma zamanında blok verilerinin nasıl kullanılacağını tanımlayan bir TLC dosyası oluşturun. Burada likit kristal kütüphaneye çağrı yapacaksınız.
  • kodu/TLC ve veya S-fonksiyonlu hataları düzeltmek/oluşturmak bu adımların

tüm çok üzerinde genişletilebilir tam :) kadar üretilen kod/tekrar hataları düzeltmek. Süreç, ilk kez bir parça biraz, ama S-fonksiyonları, model.RTW dosya, TLC ve yukarıdakilerin hata ayıklama hakkında çok şey öğreneceksiniz.

Evet, S-işlevinin hata ayıklaması bir top alamısı olabilir. Hata ayıklamak için matlab sürecine "iliştirmek" için görsel stüdyo gibi bir şey kullanmaya hazır olun.

Zengin

+0

Sanırım açıklığa kavuşturmaya/eklemeye değecek küçük bir şey var: Örneğin, C kodu oluşturmak için bahsettiğiniz araç kutularına ihtiyacınız var, ancak Arduino'ya hedeflenen bir yürütülebilir dosya oluşturmak için gerekli değildir. Simulink modelini dağıtmak için Simulink temelindeki [Run-On-Target Hardware] 'ı (http://www.mathworks.com/help/simulink/ug/about-run-on-target-hardware-feature.html) kullanabilirsiniz. Arduino'ya. Bu özellik, bahsettiğiniz araç kutularına göre açık bir şekilde çok sınırlıdır, bu yüzden OP, dış kütüphaneleri dahil etmek istediğinden, buradaki en iyi yaklaşım olmayabilir. – grungetta