Está en la página 1de 24

ARDUINO IO (también conocido como: PAQUETE DE SOPORTE "tethered" MATLAB para

Arduino):

Este paquete permite el uso de un Arduino conectado al ordenador para realizar

Entrada analógica y digital y de salida, (y motores de mando) de MATLAB.

-------------------------------------------------- -------------------------

DETALLES DE ARDUINO:

Arduino es una placa electronica de código abierto de gran alcance y bajo costo,

con un entorno de desarrollo asociado: http://arduino.cc/

Una amplia base de conocimiento se puede encontrar aquí: http://www.freeduino.org/

La compra de un placa Arduino:

Una extensa lista de sitios donde se puede comprar un Arduino está aquí:

http://www.arduino.cc/en/Main/Buy

En los EE.UU., las industrias Adafruit (http://www.adafruit.com/)

proporciona un paquete inicial que incluye casi todo lo que usted

necesita para empezar con la tabla.

Mientras que la versión anterior de este paquete se dirige a tablas más pequeñas, como

La ONU y Nano, desde agosto de 2012 (ver 3.3) el paquete también trabaja a la derecha

fuera de la caja en los tablones de Mega, sin que sea necesario ningún ajuste relacionados con
Mega.

Las guías de introducción:


El funcionario guía de introducción está aquí: http://arduino.cc/en/Guide/HomePage

y un muy buen tutorial está aquí: http://www.ladyada.net/learn/arduino/

Sin embargo en cuenta que para el propósito de utilizar este paquete sólo se necesita tener

el entorno IDE instalado pero no será necesario utilizarlo, porque se puede

hacer toda la programación en MATLAB.

KIT CHIP 32 TABLAS:

Tenga en cuenta que el paquete funciona bien con las placas de ChipKit32 (Uno32, Max32):

http://www.digilentinc.com/Products/Catalog.cfm?NavPath=2,892&Cat=18

Toda la producción funcionan bien funcionalidad analógica y digital de entrada y,

pero desafortunadamente no todas las funcionalidades interrupciones funcionan de la misma

Así, por lo servos y los codificadores no podría funcionar exactamente como en las placas
Arduino.

Desde sep 2012, cuando la biblioteca AFMotor se ha actualizado para apoyar PIC32,

Adafruit el motor Sield también trabaja con estas placas.

El Cerebot MX7ck también funciona bien con el paquete. Tenga en cuenta que con el fin de

se accede a la MPIDE que necesita para tiro corto JP11, ajuste el interruptor en ON,

y conectarlo al PC a través de la UART (no el DEBUG) puerto USB.

Si usted no tiene alimentación externa a continuación, asegúrese de establecer también el


poder

puente para UART (como opuesta a la posición por defecto DBG).

TI LAUNCHPAD (MSP430) TABLAS:

Usando el IDE Energia (http://energia.nu/Guide_MSP430LaunchPad.html)

la adio.pde y adioe.pde pueden ser compilados para el MSP430G2553 y

MSP430G2452 (el G2231 no tiene suficiente memoria). El boceto adioes.pde


puede ser compilado para la FR5739. Tenga en cuenta sin embargo que ninguna prueba real ha
sido

realizado en estas plataformas sin embargo.

-------------------------------------------------- -------------------------

Descargar e instalar el IDE (por hacer sólo una vez):

Un paso a paso la instalación del controlador se puede encontrar en:

http://arduino.cc/en/Guide/HomePage y no hay necesidad de duplicar aquí.

Es una buena idea para ir trought todos los 9 pasos, aunque después de que haya

instalado los controladores, tal vez la biblioteca escudo, y verificado que el IDE

puede comunicarse con el Arduino, ya se puede empezar a utilizar este paquete.

INSTALACIÓN DEL MOTOR SHIELD adafruit BIBLIOTECA (hay que hacer sólo una vez):

Si desea utilizar este paquete con el protector del motor adafruit, (ya sea

versión 1: http://learn.adafruit.com/adafruit-motor-shield o la versión 2:

http://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino), es necesario

para descargar e instalar la biblioteca escudo respectivo motor adafruit

(Siga las instrucciones dadas en los sitios anteriores, que ascienden a descargar

un archivo zip y descomprimir en la carpeta arduino-1.x / bibliotecas.

Como se explica mejor en el siguiente paso, esto también tendrá que cargar

eiter la motor_v1.pde o el boceto motor_v2.pde en el tablero.

Tenga en cuenta que si usted no tiene el protector del motor adafruit y no planificar

para usarlo, es posible que también omitir este paso.

También tenga en cuenta que el Arduino "oficial" (no Adafruit) protector del motor:
(Http://arduino.cc/it/Main/ArduinoMotorShieldR3)

no requiere ninguna librería adicional, que funciona bien con el chipkit32

tableros, y se pueden utilizar con este paquete de inmediato. Por lo tanto si

va a utilizar el escudo oficial de motor a continuación, puede saltarse este paso.

-------------------------------------------------- -------------------------

SUBIR A ADIOES.PDE la placa Arduino (hay que hacer sólo una vez):

El boceto adioes.pde es el programa "servidor" que se ejecutará de forma continua

en la placa de desarrollo. Se escucha los comandos de MATLAB que llegan desde

el puerto serie, ejecuta los comandos y, si es necesario, devuelve un resultado.

Se necesitan las siguientes instrucciones para cargar el archivo en adioes.pde

la memoria flash del controlador. Mientras ningún otro archivo se carga después,

este paso no es necesario repetir nunca más, y el paquete puede ser

utilizado tan pronto como la placa está conectada al ordenador.

Tenga en cuenta que si desea utilizar la biblioteca escudo adafruit entonces necesita

tanto instalar la biblioteca adecuada (ver paso anterior) y cargar el

el boceto apropiado (ya sea motor_v1.pde o motor_v2.pde) en lugar de

el boceto adioes.pde.

Desde el IDE de Arduino, vaya a Archivo> Abrir, busque el archivo de adioes.pde,

(En la carpeta / PDE / adioes ArduinoIO) y abrirlo. Si aparece un cuadro de diálogo

pidiendo permiso para crear una carpeta de dibujo y mover el archivo,

pulse OK (esto creará una carpeta adioes y mover el adioes.pde

presentar en su interior).

Conectar el Arduino, asegúrese de que el panel a la derecha y el puerto serie son


seleccionada en el IDE, (Herramientas / Herramienta Junta y / Puerto serie) a continuación,
seleccione

Archivo -> Cargar en módulo E / S y esperar a que el mensaje "Done Carga".

En este punto se carga el archivo adioes.pde y se puede cerrar el IDE,

lo que ya no es necesaria para los fines de este paquete. Actualmente

Se sugiere cerrando el IDE, por lo que puede estar seguro de que la conexión serial

a la placa Arduino no es tomada por el IDE cuando MATLAB tiene que usarlo.

-------------------------------------------------- -------------------------

La instalación de paquetes (que se realiza una sola vez):

Al instalar el paquete de Arduino IO en su sistema operativo es

importante que los usuarios tienen derecho a acceder al puerto serie y modificar

el archivo pathdef.m.

En Linux:

---------

Para asegurarse de que el archivo se puede escribir pathdef.m, emitir un comando como este:

sudo chmod 777 usr / local / MATLAB / R2012a / caja de herramientas / local / pathdef.m

(Modificar la ruta anterior de acuerdo con el que está instalado MATLAB).

Además, aún en Linux, cree un enlace simbólico de la siguiente manera:

sudo ln -s / dev / ttyACM0 / dev / ttyS101

y asegúrese de que es accesible por cualquier usuario:

sudo chmod 777 / dev / ttyS101

El olvido de este último paso podría conducir a un puerto en serie que se

unaccessible por un usuario normal (por lo tanto, ser en gris en el IDE).


Luego de MATLAB, lanzar el comando "install_arduino", esto simplemente se

agregar las carpetas correspondientes a la ruta ArduinoIO MATLAB y guardar la ruta.

En Windows:

-----------

MATLAB ejecutar como administrador (solo una vez con el propósito de instalar

el paquete) haciendo clic derecho en el icono y seleccionando MATLAB

"Ejecutar como administrador". Esto permitirá que la ruta actualizada para ser salvado.

Luego de MATLAB, lanzar el comando "install_arduino", esto simplemente se

agregar las carpetas correspondientes a la ruta ArduinoIO MATLAB y guardar la ruta.

-------------------------------------------------- -------------------------

El uso típico:

Asegúrese de que la placa está conectada al ordenador a través del puerto USB, asegúrese

usted sabe qué puerto serie del Arduino está conectado a (este es el mismo

puerto que se encuentra al final de la etapa de instalación de los controladores), y finalmente,

asegúrese de que el puerto no es utilizado por el IDE (en otras palabras, el IDE debe

ser cerrado o desconectado), de manera que MATLAB puede utilizar la conexión en serie.

Desde MATLAB, lanzar el comando a = Arduino ( 'puerto'), donde 'puerto' es la

puerto COM al que el Arduino está conectado a, por ejemplo, 'COM5' o 'COM8' en Windows,

o '/ dev / ttyS101' en Unix (uso '/ dev / ttyUSB0' para las versiones de Arduino antes de Uno)

o 'Demo' (ver más abajo para el modo DEMO) y asegúrese de que caduque la función

exitosamente.
A continuación, utilice el a.pinMode comandos, a.digitalRead, a.digitalWrite, a.analogRead,

y a.analogWrite, para cambiar respectivamente el modo (entrada / salida) de cada pasador,

realizar entrada digital, salida digital, entrada analógica, y la salida analógica.

Consulte la ayuda de los archivos para obtener más información acerca de su uso.

Si también tiene un servomotor, a continuación, puede utilizar comandos como

a.servoAttach, a.servoStatus, a.servoWrite, a.servoRead y a.servoDetach

para fijar respectivamente un servo a un pin PWM, obtener su estado (conectado / individual)

moverlo a un cierto ángulo, y leer su posición.

NOTA que desde agosto de 2012 (ver 3.8) los servos ya no se hace referencia a

por los números 1 y 2, pero no por el número pin PWM al que están

adjunto (egaservoRead (9) lee el servo conectado al pin # 9).

Para los codificadores se puede utilizar el a.encoderAttach comandos, a.encoderStatus,

a.encoderRead, a.encoderReset y a.encoderDetach para sujetar, respectivamente, una

codificador para 2 pines de interrupción (2,3 en el Uno, 2,3,21,20,19,18 en el Mega)

obtener su estado (conectado / individual), leer y restablecer su posición, y

separarlo cuando haya terminado. Las direcciones de giro positivos para codificadores

se supone que es hacia la derecha, y la gama va -32.768-32.767,

si necesita una gama más grande todo lo que tiene que hacer es ir en el codificador

estructura de la línea typedef del archivo de dibujo y reemplazar el tercer campo,

"Int pos;" con "largos pos int;".

Hay un par de otras funciones como a.serial (volviendo el nombre

del puerto serie), a.flush (el lavado del lado de entrada de serie del PC

puerto) y a.roundTrip, que envía un valor a la Arduino y la espalda.

Por último, utilice a.delete para eliminar el objeto Arduino, (y liberar el

puerto serie) cuando la sesión ha terminado.


Echar un vistazo a continuación un ejemplo.

-------------------------------------------------- -------------------------

EJEMPLO:

% Conectar la placa

a = Arduino ( 'COM5')

% Especificar el modo de pasador para los pines 4, 13 y 5

pinMode (a, 4, 'entrada');

pinMode (a, 13, 'output');

pinMode (a, 5, 'output');

% Lee la entrada digital desde el pin 4

dv = digitalRead (a, 4);

% De salida el valor digital (0 o 1) a la clavija 13

digitalWrite (a, 13, dv);

% Leer la entrada analógica del pin analógico 5 (físicamente! = Pin digital de 5)

av = analogRead (a, 5);

% Normalizar av desde 0 1023 a 0: 254

av = (av / 1,023) * 254;

valor% ouptput en digital (pwm) pin 5 (de nuevo, diferente de pin digital 5)

analogWrite (a, 5, redondo (av))

tensión de referencia% cambio para pines analógicos a externa

analogReference (a, 'externo');


% Cambiarlo de nuevo a los valores predeterminados

analogReference (a, 'default');

% Obtiene el nombre del puerto serie al que el Arduino está conectado a

de serie (a)

% Vacía el almacenamiento intermedio de entrada de serie del PC (si acaso)

flush (a);

% Envía el número 42 a la Arduino y la espalda (para ver si todavía está allí)

ida y vuelta (a, 42)

% Conectar servo en el pin # 9

servoAttach (a, 9);

% Devolver el estado de todos los servos

servoStatus (a);

% Servo gira en el pin # 9 de 100 grados

servoWrite (a, 9100);

% Lee el ángulo del servo en el pin # 9

val = servoRead (a, 9)

servo% Separar del pin # 9

servoDetach (a, 9);

% Adjuntar codificador # 0 en las clavijas 3 (pin A) y 2 (pin B)

encoderAttach (a, 0,3,2)


% Leer la posición del codificador

encoderRead (a, 0)

% Adjuntar codificador # 2 en las patillas 18 (pin A) y 21 (pin B)

encoderAttach (a, 2,18,21)

% conjuntos de supresión de rebotes de retardo a 17 (~ 1,7 ms) para codificador # 2

encoderDebounce (a, 2,17)

leer% de posición o codificador # 2

encoderRead (a, 2)

posición de reposición% de codificador # 2

encoderReset (a, 2)

% Obtener el estado de los tres codificadores

encoderStatus (a);

% De separación codificador # 0

encoderDetach (a, 0);

% Cerrar la sesión

borrar (a)

NOTA: En caso de que por alguna razón el puerto serie no se relaesed después de borrar

el objeto Arduino, puede utilizar los siguientes comandos para forzar la liberación

ot la conexión en serie:

% Eliminar la conexión en serie de MATLAB en COM3

eliminar (instrfind ({ 'Puerto'}, { 'COM3'}));


% Eliminar todas las conexiones en serie de MATLAB

eliminar (instrfind ( 'Tipo', 'serie'));

También tenga en cuenta que debido a MATLAB OO convenciones de nomenclatura, el primer


argumento

se puede pasar también antes de cualquier nombre de la función (método), por lo tanto, un
típico

funciones tales como: la función (a, arg2, arg3, ...) también se puede llamar así:

a.function (arg2, arg3, ...)

-------------------------------------------------- -------------------------

SKETCHES prestados:

Los siguientes dibujos se proporcionan con el paquete:

-) adio.pde: comandos serie analógicas y digitales IO, además básicas solamente

-) adioe.pde: el apoyo adio.pde + codificadores

-) adioes.pde: el apoyo adioe.pde + servo

-) motor_v1.pde: escudo adioes.pde + v1 afmotor

-) motor_v2.pde: escudo adioes.pde + v2 afmotor

En la mayoría de los casos el adioes.pde cubrirá todo lo que necesita. Los dos últimos bocetos

son necesarios para la Adafruit Motor Shield (versión 1 y 2 respectivamente).

Los 2 primeros bocetos se proporcionan sobre todo en caso de que su plataforma específica

no soporta servos o codificadores y como punto de partida mejor (más simple)

punto para las personas que desean personalizar un boceto para sus propios fines.

En este último caso, la función de "ida y vuelta" es probablemente el más fácil

lugar para empezar a introducir el código personalizado.

-------------------------------------------------- -------------------------
MODO DE DEMOSTRACIÓN:

Siempre 'Demo' se especifica como argumento de la función Arduino, es decir,

a = Arduino ( 'DEMO'), entonces una conexión virtual se abre que no implique

cualquier hardware. Esto permite tratar el paquete sin necesidad de tener una

placa Arduino. En este modo, todos los "leen" las funciones devuelven valores aleatorios

en función de su rango de salida. Asimismo, los retrasos se utilizan internamente de modo que

el tiempo de ejecución de cualquier función coincide aproximadamente con el promedio

tiempo de ejecución que se puede observar cuando se conecta la placa real.

Tenga en cuenta que el mismo comportamiento (valores de salida al azar) se produce cuando
el boceto

que se ejecuta en el tablero no es compatible con la operación específica (por ejemplo, un


servo

leer, pero se emite el boceto que se ejecuta en el tablero, por ejemplo adio.pde) no

servos de apoyo.

-------------------------------------------------- -------------------------

RETO BLINK:

El "blink_challenge" es un ejemplo de aplicación que cambia los LEDs en y

con frecuencia variable y con el modo de cambiar pulsando un botón interruptor

Echar un vistazo al archivo m para obtener más información, (tipo de ayuda de la


blink_challenge

línea de comandos) y blink_challenge lanzamiento para ejecutar la demo.

Cuenta que la ejecución de este applicaton sólo tiene sentido si es la placa Arduino

conectado a un circuito apropiado donde los pines digitales 9 a 13 están configurados

como salidas y conectado a leds, pin digital # 2 está configurado como entrada y

conectado a un botón que tira de la tensión hacia abajo cuando se presiona, y analógico

pin # 2 está conectado a un potenciómetro. Echar un vistazo a los esquemas de la


blink_challenge_sch.mdl archivo, en la carpeta de ejemplos.

-------------------------------------------------- -------------------------

USO DEL MOTOR SHIELD adafruit:

El protector del motor de adafruit es un escudo (con una biblioteca asociada)

para el control de motores de corriente continua y paso a paso. El paquete Arduino IO permite
el uso de la

Adafruit primitivas biblioteca protector del motor (además de los otros básica

IO y funciones servo descritos anteriormente) directamente desde MATLAB.

Los detalles sobre el escudo están aquí, la versión 1:

http://learn.adafruit.com/adafruit-motor-shield

y la versión 2:

http://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino

Asegúrese de seguir las instrucciones sobre cómo instalar la biblioteca necesaria

(Ver también la sección "Instalación de la biblioteca protector del motor de" arriba).

Si estaba utilizando el boceto adioes.pde entonces usted necesita para cargar cualquiera

la motor_v1.pde (para las versiones 1.x del escudo) o motor_v2.pde (por

la versión 2 del escudo) boceto en el tablero, con el fin de utilizar el motor

proteger a las instrucciones relacionadas. Ambos bocetos necesario que el motor adafruit
relacionados

BIBLIOTECA escudo (véase el paso por encima de la instalación relacionada) para trabajar, sin
tener en cuenta

de si el protector del motor se monta en la parte superior de la Arduino o no.

Ambos bocetos de motor son los más completos, es decir que puede utilizar

ellos también para E / S básicas, servos, codificadores y así sucesivamente, incluso cuando el
motor
escudo no está montado en el Arduino. Sin embargo, tenga en cuenta que el adafruit

V1 protector del motor utiliza una gran cantidad de los pasadores, (ver el manual) así que si
usa tanto

IO digitales analógicas y las instrucciones de motor y es probable que interfieren

Unos con otros, (especialmente para la Versión 1 de la biblioteca y el escudo).

Por lo tanto, el mejor enfoque está usando ya sea las instrucciones IO o las

instrucciones escudo de motor y eliminar y reinstantiate el objeto Arduino

cada uno tiene que cambiar de un conjunto de instrucciones para el otro.

HACER ESCUDOS SWAP no caliente. Antes de montar el protector del motor de eliminar la

Arduino objeto del espacio de trabajo, desconectar, a continuación, montar el protector del
motor

en la parte superior de la Arduino, vuelva a conectar, cargar motor.pde a la junta, y

Por último, desde MATLAB, cree un nuevo objeto Arduino.

Adafruit MOTOR SHIELD Ejemplo:

% Conectar la placa

a = Arduino ( 'COM5')

velocidad conjuntos% de motor 4 como 200/255

MotorSpeed (a, 4200)

% Imprime la velocidad de todos los motores

MotorSpeed (a);

% Corre motor 1 hacia adelante

motorRun (a, 4, 'hacia adelante');

% El motor funciona hacia atrás 3

motorRun (a, 4, 'hacia atrás');


% Motor de liberación 1

motorRun (a, 4, 'liberación');

% ajusta la velocidad de paso a paso 1 como 10 rpm

stepperSpeed (a, 1,10)

% Imprime la velocidad de paso a paso 1

stepperSpeed (a, 1);

% Gira paso a paso 1 hacia delante de 100 pasos en el modo de intercalación

stepperStep (a, 1, 'hacia delante', 'doble', 100);

% Gira paso a paso 1 hacia atrás de 50 pasos en el modo de solo

stepperStep (a, 1, 'hacia atrás', 'single', 50);

% Emisiones paso a paso 1

stepperStep (a, 1, 'liberación');

% Cerrar la sesión

borrar (a)

Tenga en cuenta que todas las demás funciones relacionadas con clavijas analógicas y digitales
IO

así como para servos, todavía se puede utilizar como se describe en la anterior

ejemplo anterior.

También tenga en cuenta que las instrucciones paso a paso están bloqueando, que es la junta

no puede comenzar a ejecutar una nueva instrucción hasta la ejecución de la

comando previo paso a paso ha llegado hasta su finalización (que puede tardar varios

segundos si el número de pasos necesarios es alta).


-------------------------------------------------- -------------------------

USO DE LA ARDUINO MOTOR DE PASOS biblioteca (Stepper.h)

Puede modificar el boceto adafruit para trabajar con el Arduino oficial

stepper Stepper.h biblioteca, (+ info esta biblioteca se puede encontrar aquí:

http://arduino.cc/en/Reference/Stepper?from=Tutorial.Stepper).

A partir de AFMotor_v1.pde, resulta necesario modificar las siguientes líneas:

línea 61: reemplazar "# include <AFMotor.h>" con "# include <Stepper.h>"

líneas 77: Sustituir "AF_Stepper stm1 (200, 1);" con

"Stm1 paso a paso (200, 8,9,10,11);" suponiendo que desea conectar el primer

paso a paso a los pines 8,9,10,11 (por supuesto, usted puede elegir los pasadores que desee).

líneas 78: Sustituir "AF_Stepper STM2 (200, 1);" con

"STM2 paso a paso (200, 3,4,5,6);" asumiendo que desea conectar el segundo

paso a paso a los pines 8,9,10,11 (de nuevo, puede elegir los pasadores que desee).

Si usted no tiene un segundo paso a paso, puede utilizar números de los pines no utilizados

o usar los mismos pines como los utilizados en la línea 77.

borrar el código de las líneas 79 a 82 (que define los objetos de motor de corriente continua)

borrar el código de las líneas 374 (caso 170 a 440 :) (romper; / * s = 181 ... * /)

líneas 489 y 494: sustituir adelante con 1 y hacia atrás con -1

eliminar código de las líneas 499 y 500 (que llaman stm1.release y stm2.release)

eliminar código de las líneas 518, 523, 528, y 533 (ajuste de estilo en SINGLE,
DOBLE, INTERLEAVE DE, y MicroStep)

la línea 547: sustituir stm1.step (val, dir, pocilga); con stm1.step (val * dir);

la línea 548: sustituir stm2.step (val, dir, pocilga); con stm2.step (val * dir);

Ahora puede guardar el archivo (necesita estar en una carpeta separada que tiene el mismo

nombre que el archivo), abrirlo con el IDE, y cargarlo en el Arduino.

Esta será reconocido por MATLAB como el boceto afmotor_v1, y que será

capaz de utilizar las principales instrucciones paso a paso (tenga en cuenta sin embargo que el
estilo

parámetro, mientras que se requiere, es ignorada por el dibujo).

Gracias a Gianmarco Errico para sus entradas iniciales y a Luca para Dalbosco

probar el boceto final resultante.

-------------------------------------------------- -------------------------

SIMULINK BIBLIOTECA

Desde la versión 3.0 de este paquete también viene con una biblioteca que Simulink

tiene bloques de analógico y digital IO, así como servo de lectura y escritura,

Motor y control paso a paso. Tipo "arduino_io_lib" para abrir la biblioteca.

El bloque de configuración puede utilizar un objeto Arduino preexistente en el

espacio de trabajo, o se puede crear una instancia de un objeto de forma automática Arduino
temporal

antes de la simulación. En este último caso, el objeto se pone automáticamente

borrada después de la simulación ha terminado. Usted tiene que utilizar este bloque (el

bloque de configuración) con el fin de utilizar los otros, y hay que utilizar una

bloque diferente configuración para cada variable Arduino diferente que utilice
en la simulación.

Los ejemplos que ilustran cómo utilizar analógicas IO bloques son los archivos

"Blink_challenge_sim.mdl" y "blink_challenge_sf.mdl", que son la

Simulink y Stateflow aplicación de la demostración desafío abrir y cerrar

descrito anteriormente en este archivo Léame. El archivo de muestra "servo_sim.mdl"

cómo usar el Servo leer y escribir bloques.

Tenga en cuenta que estos bloques, que se basan en objetos de MATLAB (y confiar en el

OS pila de comunicación en serie), no apoyan la generación de código.

El paquete de compatibilidad con Simulink para Arduino:

http://www.mathworks.com/academia/arduino-software/arduino-simulink.html

y el Paquete Coder Soporte de Respaldo para Arduino:

http://www.mathworks.com/matlabcentral/fileexchange/30277

puede tanto ser utilizado para generar automáticamente, a partir de Simulink, Arduino

ejecutables que se cargan y ejecutan en el tablero de forma automática.

-------------------------------------------------- -------------------------

SOLUCIÓN DE PROBLEMAS

Este software fue desarrollado principalmente en R2011a, y no ha sido probado totalmente


para

versiones anteriores a R2010a, por lo que sugieren para obtener al menos R2011a (o posterior)

si puedes.

La biblioteca Simulink no funcionará en versiones anteriores a R2010a, (porque

el objeto Arduino se comparte entre los bloques de las características modelo utilizando

introducido desde R2010a). En cualquier caso, este software utiliza el nuevo MATLAB

sistema de objetos, y que sin duda no puede trabajar en las versiones anteriores a R2008a.
Me he encontrado en el pasado para los casos (usando el tablero Duemilanove) en

MATLAB, que tenía problemas en la conexión a la placa Arduino al crear una

objeto (específicamente, esto se tradujo en el mensaje de error: "Conexión

sin éxito, por favor asegúrese de que el Arduino se enciende ... "),

Aunque podía conectar muy bien con el IDE o Hyperterminal.

Creo que esto se resuelve ahora, ya que era probable que se deba a una combinación de

factores, incluyendo la biblioteca servotimer mayor, demasiado tiempo consumidos en el

configuración para inicializar alfileres, y demasiado bajo un retraso entre un intento de


conexión

y la primera operación. De todos modos, si le sucede que tiene un problema similar

la primera sugerencia es entrar en el archivo arduino.m, encontrar estas líneas:

fprintf (1, 'El intento de conexión.');

para i = 1: 12,

pausa (1);

fprintf (1, '');

fin

y aumentar ese 12 hasta 15 o más hasta que funcione. otra sugerencia

está utilizando el adio.pde más simple o adioe.pde bocetos en lugar de la

más adioes.pde complejo o motor_vX.pde.

Tenía algunos casos en los que el error anterior se presentó cuando el motor_v2

esbozo se ejecuta en el Arduino Uno y una placa de prototipos con el

circuito de abrir y cerrar desafío estaba enchufado en la parte superior de la Arduino Uno.
Extracción

que el consejo específico (y / o conectar el protector del motor de uno), parecido a resolver

ese problema (no he sido capaz de reproducir esto con la junta Mega).

Además, si se produce un error como los siguientes:


??? Error al utilizar ==> serial.fwrite en ...

o:

??? Error al utilizar ==> serial.get en ...

instrumento objeto OBJ es un objeto no válido.

o, durante una creación de objetos, como este:

??? Error al utilizar ==> Arduino> arduino.arduino a 77

No se pudo abrir el puerto: COM9

o:

??? Error al utilizar ==> Arduino> arduino.arduino a los 48

Puerto COM 9 ya utilizado por MATLAB

entonces es probable que significa que algo salió mal con su conexión en serie,

(Esto puede suceder a veces, por ejemplo, si la junta se reinicia, el cual

sucede mucho cuando se utilizan los servos sin una buena fuente de energía) y su

mejor oportunidad está haciendo lo siguiente:

1) asegurarse de que ningún otro programa (por ejemplo, el IDE se utiliza el mismo puerto
COM)

2) eliminar el objeto Arduino, ignorar las advertencias de posibles

3) borrar (instrfind ({ 'Puerto'}, { 'COM9'}))%, por supuesto, utilizar el puerto COM correcto

4) Desconectar el cable Arduino, vuelva a conectarlo

5) crear un nuevo objeto Arduino

-------------------------------------------------- -------------------------
Utilizando el paquete SIN MATLAB (EG IDE o HYPETERMINAL)

Tenga en cuenta que si bien este paquete fue diseñado para ser utilizado con MATLAB, puede

puede utilizar con cualquier programa que le permite comunicarse a través del puerto serie.

Esto es realmente una buena estrategia de solución de problemas, ya que le permite a

descubrir si algún problema o comportamiento inesperado se origina en el

hardware o sistema operativo de nivel, o si se origina en MATLAB.

La manera más fácil de hacer esto es usar el Monitor de serie IDE (en la parte superior

esquina derecha de la IDE) para enviar y recibir mensajes de resultados. Una vez tú

iniciar el monitor de serie y seleccione 115200 como velocidad de transmisión, que se puede
escribir

mensajes en la fila superior y los envían a través del puerto serie haciendo clic en "Enviar"

botón.

Un mensaje de serie a adioes.pde se hace típicamente por no más de 3 partes:

1) un número o una letra mayúscula que indica la acción

2) una letra minúscula que indica el número de pin

3) un número o una letra que indica un valor que han de transmitirse

Por ejemplo el comando "1c" lee pin digital # 2, como "1" representa

digitalRead y "c" significa pin # 2 (ascii (c) -ascii (a) = 2)

Del mismo modo (reportado de motor.pde):

0E0: asigna pin digital # 4 (e) como entrada

0f1: asigna pin digital # 5 (f) como salida

0n1: asigna pin digital # 13 (n) como salida

1c: lee pin digital # 2 (c)


1e: lee pin digital # 4 (e)

2N0: establece pin digital # 13 (n) baja

2n1: establece pin digital # 13 (n) de alto

2F1: establece pin digital # 5 (f) de alto

2f0: establece pin digital # 5 (f) baja

4J2: establece pin digital # 9 (j) a 50 = ascii (2) sobre 255

4JZ: establece pin digital # 9 (j) a 122 = ascii (z) sobre 255

3a: lee pin analógico # 0 (a)

3f: lee pin analógico # 5 (f)

5j: lee el estado (conectado / extraíble) de servo en el pin # 9

5k: lee el estado (conectado / independiente) del servo en el pin # 10

6J1: concede servo en el pin # 9

8JZ: mueve servo en el pin # 9 de 122 grados (122 = ascii (z))

7j: lee ángulo del servo en el pin # 9

6j0: se separa del servo en el pin # 9

A1z: establece la velocidad de motor # 1 para 122 sobre 255 (122 = ascii (z))

A4A: establece la velocidad de motor # 4 a 65 sobre 255 (65 = ascii (A))

B1F: El motor funciona # 1 hacia delante (f = hacia adelante)

B4b: El motor funciona # 4 hacia atrás (b = hacia atrás)

B1R: comunicados de motor # 1 (r = liberación)

C12: conjuntos de velocidad de motor paso a paso # 1 a 50 rpm (50 = ascii (2))

C2Z: establece la velocidad de motor paso a paso # 2 a 90 rpm (90 = ascii (Z))

D1fsz: hacer 122 pasos en el motor # 1 hacia adelante en el modo simple (s)

D1biA: hace 65 pasos en motor # 1 hacia atrás en el interleave (i) Modo

D2fdz: hace 122 pasos en motor # 1 hacia adelante en el modo doble (d)

D2bmA: hace 65 pasos en motor # 2 hacia atrás en microstep modo (m)

D1R: comunicados de motor # 1 (r = liberación)

D2R: comunicados de motor # 2 (r = liberación)


E0cd: concede codificador # 0 (0) en las patillas 2 (c) y 3 (d)

E1st: concede codificador # 1 en las patillas 18 (S) y 19 (t)

E2vu: concede codificador # 2 en los pines 21 (v) y 20 (u)

G0: consigue 0 posición del codificador # 0

I0u: establece retardo de entrada para 20 (2 ms) para el codificador # 0

H1: restablece la posición del codificador # 1

F2: separa codificador # 2

R0: establece la referencia analógica a DEFAULT

R1: establece referencia analógica a INTERNAL

R2: establece referencia analógica a EXTERNAL

X3: caso de ejemplo de ida y vuelta de regresar la entrada (ascii (3))

99: vuelve script type (0 adio.pde ... 3 motor.pde)

En general, se espera que si cualquiera de los 4 bocetos servidor estaba

compilado y cargado en el tablero con éxito, entonces uno debe ser capaz de

para comunicarse con la junta a través del puerto de serie como se describe anteriormente.

En plataformas Windows anteriores a Vista, puede abrir el hyperterminal,

(Inicio -> Programas -> Accesorios -> Comunicaciones -> HyperTerminal)

Seleccione el puerto COM correcto en el inicial "conectarse a" de diálogo, a continuación,


seleccione

115.200 como "bits por segundo", y también seleccionar "None" como control de flujo.

No se puede ver lo que escribe, sino que debe ver los resultados, por lo que escribir

"99" deben devolver el tipo sript (1,2 o 3) de inmediato. Esto le da una forma

para probar el paquete de una manera independiente de IDE, que también podría ser
importante

en la solución de un problema.

-------------------------------------------------- -------------------------
Personalización:

Para las personas que desean personalizar el paquete o simplemente añadir su propio código

para hacer cosas, se sugiere a partir de la función de ida y vuelta mencionado

anteriormente, que está provisto específicamente como un ejemplo para este propósito.

El manejo de esta función maniquí en el fichero pde sección se encuentra partida

del "caso 400:", uno puede tomar el parámetro, realizar alguna potencialmente

operación útil y, a continuación, enviar cualquier resultado de nuevo a través de la conexión en


serie.

-------------------------------------------------- -------------------------

ARCHIVOS E HISTORIA:

Ver contents.m para obtener información sobre los archivos y el historial de versiones.

-------------------------------------------------- -------------------------

Giampiero Campa, junio de 2014, Derechos de autor 2014, The MathWorks, Inc.

También podría gustarte