2012-10-01 46 views
6

Quiero usar Simulink para crear programas para el hardware Arduino Uno. Pero me gustaría utilizar las bibliotecas existentes, como liquidcrystal, para manejar la salida a una pantalla LCD. ¿Cómo puedo crear una función s que incorpore el archivo de clase liquidcrystal?Crear el bloque Simulink para la biblioteca Arduino como liquidcrystal

Creo que la función s es el camino a seguir, porque los bloques de la biblioteca Simulink Arduino existentes son en realidad funciones s enmascaradas. Estoy usando la versión para estudiantes de Simulink, así que no creo que pueda compilar el código C de un modelo e incorporarlo a un proyecto en el IDE de Arduino.

+1

Estoy asumiendo que ya ha mirado [aquí] (http://www.mathworks.com/academia/arduino-software/arduino-simulink.html). Los bloques Arduino de MathWorks no deberían requerir ninguna caja de herramientas adicional para ejecutarse. La versión para estudiantes de MATLAB/Simulink no tiene necesariamente menos funcionalidades que la versión estándar, * pero * puede estar limitado por las cajas de herramientas que haya instalado. Use el comando 'ver' para obtener una lista de cajas de herramientas que tenga disponibles. Eso puede tener una gran influencia sobre cómo abordar este problema. – grungetta

+0

Además, ¿puedes dar más información sobre el archivo de clase liquidcrystal? ¿Es esta una biblioteca Arduino a la que te refieres?Si tiene algunos enlaces que proporcionan más información sobre el archivo exacto que le gustaría utilizar, sería muy útil para comprender exactamente a qué apunta. – grungetta

+0

¿Qué versión de MATLAB estás usando? Use ver en el símbolo del sistema: ¿tiene Taller en tiempo real, Simulink Coder o Embedded Coder? Si no tiene ninguna de esas herramientas de generación de código, entonces tendrá dificultades para crear un programa desde Simulink, y solo podrá ejecutarlo como simulación. – RichColours

Respuesta

1

Voy a su vez mi comentario en una respuesta ... :)

Bueno por lo que para crear un programa de Simulink que necesita herramientas de generación de código instalado. ver le dirá si tiene Simulink Coder y, opcionalmente, Embedded Coder. Si está utilizando una versión anterior de MATLAB, se llama Taller en tiempo real. Sin uno de ellos no vas a generar código nada.

Así que asumiendo que usted puede codificar a generar:

S-funciones son camino a seguir: http://www.mathworks.co.uk/help/simulink/s-function-basics.html

... aunque hay varias herramientas para ayudar en la creación de funciones S.

En resumen, el proceso es:

  • llevar una copia de la sfunc_basic.c (o algo así) plantilla de archivo S-función C y poblar en consecuencia. Esto no es trivial de ninguna manera, puede llevar bastante tiempo compilarlo (ver más abajo) y no bloquear MATLAB cuando se crea una instancia en un modelo.
  • Compilar con el comando mex (ver la documentación).
  • Usar bloque en el modelo. Cree usted mismo un modelo de arnés de prueba que hace algo muy simple. Use los bloques modelo mínimos necesarios para crear una solución de trabajo.
  • Cree un archivo TLC que definirá cómo usar datos de bloque durante la compilación y el tiempo de ejecución en el programa del modelo C. Aquí hará llamadas a la biblioteca de cristal líquido.
  • Código generar/corregir los errores con TLC y o S-función/corregir los errores en el código generado/repetición hasta :) completa

Todos esos pasos se puede ampliar en un lote. El proceso es un poco complicado la primera vez, pero aprenderá mucho sobre las funciones S, el archivo model.RTW, TLC y la depuración de todo lo anterior.

Oh, sí, la depuración de la función S puede ser un balón de bola. Prepárate para utilizar algo como Visual Studio para "adjuntar" al proceso de Matlab para depurarlo.

Rich

+0

Una cosa menor que creo que vale la pena aclarar/agregar: tienes razón en que necesitas las cajas de herramientas que mencionas para generar código C, por ejemplo, pero no son necesarias simplemente para generar un ejecutable dirigido a Arduino. Puede utilizar [Run-On-Target Hardware] (http://www.mathworks.com/help/simulink/ug/about-run-on-target-hardware-feature.html) en la base Simulink para implementar un modelo Simulink a Arduino. Dicho esto, la característica obviamente es muy limitada en comparación con las cajas de herramientas que mencionaste, así que tal vez no sea el mejor enfoque aquí ya que OP quiere incorporar bibliotecas externas. – grungetta

Cuestiones relacionadas