2012-10-01 13 views
6

Desidero utilizzare Simulink per creare programmi per l'hardware Arduino Uno. Ma mi piacerebbe usare le librerie esistenti, come LiquidCrystal, per gestire l'output su uno schermo LCD. Come posso creare una s-funzione che incorpori il file di classe liquidcrystal?Crea blocco Simulink per libreria Arduino come liquidcrystal

Penso che la s-funzione sia la strada da percorrere, perché i blocchi di librerie di Simulink Arduino esistenti sono in realtà delle funzioni s mascherate. Sto usando la versione per studenti Simulink quindi non penso di poter compilare il codice C da un modello e incorporarlo in un progetto nell'IDE di Arduino.

+1

Sto assumendo che hai già guardato [qui] (http://www.mathworks.com/academia/arduino-software/arduino-simulink.html). I blocchi Arduino di MathWorks non dovrebbero richiedere l'esecuzione di ulteriori toolbox. La versione per studenti di MATLAB/Simulink non ha necessariamente meno funzionalità rispetto alla versione standard, * ma * potresti essere limitato da quali toolbox hai installato. Usa il comando 'ver' per ottenere un elenco di toolbox che hai a disposizione. Ciò potrebbe influenzare notevolmente il modo in cui ti avvicini a questo problema. – grungetta

+0

Inoltre, puoi fornire maggiori informazioni sul file di classe liquidcrystal. Questa è una libreria di Arduino a cui ti stai riferendo?Se disponi di alcuni collegamenti che forniscono maggiori informazioni sul file esatto che vorresti utilizzare, sarebbe molto utile per capire esattamente a cosa miri. – grungetta

+0

Quale versione di MATLAB stai usando? Usa ver al prompt dei comandi: hai un laboratorio in tempo reale, un codificatore Simulink o un codificatore incorporato? Se non possiedi nessuno di quegli strumenti di generazione del codice, avrai difficoltà a creare un programma da Simulink, potrai solo eseguire la simulazione. – RichColours

risposta

1

mi trasformerò il mio commento in una risposta ... :)

Va bene così per creare un programma da Simulink avrete bisogno di strumenti di generazione di codice installato. ver indicherà se si dispone di Codificatore Simulink e, facoltativamente, di Codificatore incorporato. Se stai utilizzando una versione precedente di MATLAB, si chiama Real-time Workshop. Senza uno di quelli non si sta generando del codice.

Quindi supponendo che si può codificare-generare:

S-funzioni sono loro strada da percorrere: http://www.mathworks.co.uk/help/simulink/s-function-basics.html

... anche se ci sono diversi strumenti per aiutare con la creazione di S-funzioni.

In breve, il processo è:

  • Prendere una copia del sfunc_basic.c (o qualcosa di simile) modello di file S-funzione C e popolare di conseguenza. Questo non è affatto banale, ci può volere un po 'per farlo compilare (vedi sotto) e non bloccare MATLAB quando viene istanziato in un modello.
  • Compilare con il comando mex (consultare la documentazione).
  • Usa il blocco nel modello. Crea te stesso un modello di imbracatura di prova che faccia qualcosa di molto semplice. Utilizzare i blocchi di modello minimi necessari per creare una soluzione di lavoro.
  • Creare un file TLC che definirà come utilizzare i dati di blocco in fase di compilazione e di esecuzione nel programma del modello C. Qui effettuerai chiamate alla libreria liquidcrystal.
  • Codice generare/correggere gli errori con TLC e o S-function/correggere gli errori nel codice/repeat generato fino :) completa

Tutti questi passaggi può essere espansa su un terreno. Il processo è un po 'caotico la prima volta, ma imparerai molto sulle funzioni S, il file model.RTW, TLC e il debug di tutto quanto sopra.

Oh sì, il debugging della funzione S può essere un ball-acher. Preparati a utilizzare qualcosa come Visual Studio per "allegare" al processo MATLAB per eseguire il debug.

Rich

+0

Una piccola cosa che penso valga la pena di chiarire/aggiungere: hai ragione che ti servono le toolbox che hai citato per generare codice C, ad esempio, ma non sono necessarie semplicemente per generare un eseguibile indirizzato ad Arduino. È possibile utilizzare [Hardware Run-On-Target] (http://www.mathworks.com/help/simulink/ug/about-run-on-target-hardware-feature.html) in Simulink di base per distribuire un modello Simulink ad Arduino. Detto questo, la funzionalità ovviamente è molto limitata rispetto alle toolbox che hai menzionato, quindi forse non è il miglior approccio qui dato che l'OP vuole incorporare librerie esterne. – grungetta