2012-10-01 6 views
6

Ich möchte Simulink verwenden, um Programme für Arduino Uno Hardware zu erstellen. Aber ich würde gerne vorhandene Bibliotheken, wie Liquid Crystal, verwenden, um die Ausgabe an eine LCD Anzeige zu behandeln. Wie kann ich eine S-Funktion erstellen, die die Liquid Crystal Class-Datei enthält?Create Simulink Block für Arduino-Bibliothek wie Liquid Crystal

Ich denke, die S-Funktion ist der Weg zu gehen, weil die bestehenden Simulink Arduino-Bibliothek-Blöcke sind eigentlich s-Funktionen, die maskiert sind. Ich benutze die Simulink Studentenversion, also glaube ich nicht, dass ich C Code aus einem Modell kompilieren und in ein Projekt in der Arduino IDE integrieren kann.

+1

Ich gehe davon aus, dass Sie bereits haben gesucht [hier] (http://www.mathworks.com/academia/arduino-software/arduino-simulink.html). Die Arduino-Blöcke von MathWorks sollten keine zusätzlichen Toolboxen zum Ausführen benötigen. Die Studentenversion von MATLAB/Simulink hat nicht notwendigerweise weniger Funktionen als die Standardversion *, aber Sie können durch die von Ihnen installierten Toolboxen eingeschränkt sein. Verwenden Sie den Befehl "ver", um eine Liste der verfügbaren Werkzeugkästen zu erhalten. Das kann stark beeinflussen, wie Sie dieses Problem angehen. – grungetta

+0

Auch können Sie mehr Informationen über die Liquid Crystal Class-Datei geben. Ist das eine Arduino-Bibliothek, auf die du dich beziehst?Wenn Sie einige Links haben, die mehr Informationen über die genaue Datei enthalten, die Sie verwenden möchten, wäre das sehr hilfreich, um genau zu verstehen, was Sie anstreben. – grungetta

+0

Welche Version von MATLAB verwenden Sie? Verwenden Sie ver an der Eingabeaufforderung - haben Sie Echtzeit-Workshop, Simulink Coder oder Embedded Coder? Wenn Sie keines dieser Werkzeuge zur Code-Generierung haben, werden Sie Schwierigkeiten haben, ein Programm von Simulink zu erstellen. Sie können nur als Simulation laufen. – RichColours

Antwort

1

Ich werde mein Kommentar in einer Antwort drehen ... :)

so Okay, ein Programm von Simulink erstellen Sie installiert benötigen Tools, Code-Generierung. ver wird Ihnen sagen, wenn Sie Simulink Coder und optional Embedded Coder haben. Wenn Sie eine ältere Version von MATLAB verwenden, heißt das Real Time Workshop. Ohne eines von denen wirst du nichts generieren.

So vorausgesetzt, Sie Code generieren können:

S-Funktionen sind sie Weg zu gehen: http://www.mathworks.co.uk/help/simulink/s-function-basics.html

... obwohl es mit der Erstellung von S-Funktionen verschiedene Werkzeuge zu unterstützen sind.

Kurz gesagt, der Prozess ist:

  • Nehmen Sie eine Kopie des sfunc_basic.c (oder so ähnlich) S-Funktion C Dateivorlage und entsprechend füllen. Dies ist keineswegs trivial, es kann eine Weile dauern, bis es kompiliert wird (siehe unten) und MATLAB nicht stürzt, wenn es in einem Modell instanziiert wird.
  • Kompilieren Sie mit Mex-Befehl (siehe die Dokumentation).
  • Block im Modell verwenden. Erstellen Sie sich ein Test-Harness-Modell, das etwas sehr einfaches tut. Verwenden Sie die Mindestmodellblöcke, die zum Erstellen einer funktionierenden Lösung erforderlich sind.
  • Erstellen Sie eine TLC-Datei, die definiert, wie Blockdaten bei der Kompilierung und Laufzeit im Modell C-Programm verwendet werden. Hier rufst du die liquidcrystal Bibliothek an.
  • -Code generieren/beheben Fehler mit TLC und oder S-Funktion/beheben Fehler in generierten Code/Wiederholung bis zum vollständigen :)

Alle diese Schritte können auf viel erweitert werden. Der Prozess ist beim ersten Mal ein bisschen anstrengend, aber Sie werden viel über S-Funktionen, die Modell.RTW-Datei, TLC und das Debuggen aller oben genannten Dinge lernen.

Oh ja, Debugging der S-Funktion kann ein Ballachers sein. Sei bereit, etwas wie Visual Studio zu verwenden, um es an den Matlab-Prozess "anzuhängen", um es zu debuggen.

Reiche

+0

Eine kleine Sache, die ich denke, ist es wert zu erklären/hinzufügen: Sie haben Recht, dass Sie die Toolboxes, die Sie erwähnten, um C-Code zum Beispiel zu generieren, aber sie sind nicht notwendig, einfach eine ausführbare Datei für Arduino zu generieren. Sie können [Run-On-Target Hardware] (http://www.mathworks.com/help/simulink/ug/about-run-on-target-hardware-feature.html) in der Basis-Simulink verwenden, um ein Simulink-Modell zu implementieren nach Arduino. Allerdings ist das Feature im Vergleich zu den von Ihnen erwähnten Toolboxen offensichtlich sehr begrenzt, also vielleicht nicht der beste Ansatz, da das OP externe Bibliotheken einbinden möchte. – grungetta