LabView + Arduino Guía de Iniciación
Por: Carlos A. Guzm án Hdez. Ingeniero Electrónico
Julio del 2012
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
PREFACIO Hoy en día estamos rodeado de tecnología, pero desconocemos como lograr interactuar con ella, la idea que me llevó a realizar este material fue la preocupación de que los estudiantes estudiantes requieren de una herramienta de bao costo para realizar la lectura y control de los equipos electrónicos que les rodea, y en vista que día a día va creciendo el auge de los dispositivos de adquisición de datos, me resulta grato el poder mostrar como utilizar la herramienta de !rduino como elemento de !dquisición de datos, un "!#, como se le conoce por sus siglas del ingl$s %"ata !dquisition&, que no es mas que interactuar con el entorno físico tomando muestras y convirtiendo $stas en valores digital para su posterior proceso dentro del computar'
!dem(s, con la utilización utilización del !rduino, podemos podemos obtener obtener resultados resultados sorprendentes sorprendentes a bao costo y, la comunicación con el entorno gr(fico de )ab*ie+ es muy simple gracias a las labores de diseo de -am .ristoff de /ational nstruments, quien escribió el -etch b(sico para el !rduino, el cual permite la interacción con )ab*ie+, el archivo se conoce como )*!3irm+are el cual puede ser modificado y redistribuido gratuitamente, el arch archiv ivo o orig origin inal al pued puede e ser ser desc descar arga ga de la p(gi p(gina na de /ati /ation onal al nst nstru rume ment nts s en http455+++'ni'com5arduino '
2
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
PREFACIO Hoy en día estamos rodeado de tecnología, pero desconocemos como lograr interactuar con ella, la idea que me llevó a realizar este material fue la preocupación de que los estudiantes estudiantes requieren de una herramienta de bao costo para realizar la lectura y control de los equipos electrónicos que les rodea, y en vista que día a día va creciendo el auge de los dispositivos de adquisición de datos, me resulta grato el poder mostrar como utilizar la herramienta de !rduino como elemento de !dquisición de datos, un "!#, como se le conoce por sus siglas del ingl$s %"ata !dquisition&, que no es mas que interactuar con el entorno físico tomando muestras y convirtiendo $stas en valores digital para su posterior proceso dentro del computar'
!dem(s, con la utilización utilización del !rduino, podemos podemos obtener obtener resultados resultados sorprendentes sorprendentes a bao costo y, la comunicación con el entorno gr(fico de )ab*ie+ es muy simple gracias a las labores de diseo de -am .ristoff de /ational nstruments, quien escribió el -etch b(sico para el !rduino, el cual permite la interacción con )ab*ie+, el archivo se conoce como )*!3irm+are el cual puede ser modificado y redistribuido gratuitamente, el arch archiv ivo o orig origin inal al pued puede e ser ser desc descar arga ga de la p(gi p(gina na de /ati /ation onal al nst nstru rume ment nts s en http455+++'ni'com5arduino '
2
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
Índice de contenido P!"ACI#.........................................................................................................................................2 $%u& es el Arduino'...........................................................................................................................( )* Conociendo el módulo ue será en lo adelan,e nues,ra -erramien,a de in,eracción con el en,orno ísico.................................................................................................................................( Hardware.......................................................................................................................................( esumen......................................................................................................................................../ !suema de dise0o de reerencia 1 esuemá,ico.........................................................................../ "uen,e de alimen,ación.................................................................................................................. 3emoria.........................................................................................................................................4 !n,radas 1 5alidas..........................................................................................................................4 Comunicación................................................................................................................................6 Programación...............................................................................................................................)7 Au,omá,ica 85o,ware9 es,ablecer 8au,oma,ic so,ware rese,9..................................................)) Pro,ección :5; con,ra sobrecorrien,e........................................................................................)2 Carac,erís,icas ísicas..................................................................................................................)2 5-ields.........................................................................................................................................)( Hardware de ,erceros recomendado............................................................................................)( 2* LabView.......................................................................................................................................)< 2.) Conociendo el en,orno gráico =ara el Arduino.....................................................................)/ 2.2 !m=ezando con el Arduino....................................................................................................2) >* !?ercicios =ro=ues,os...................................................................................................................26 >.) !ncendiendo 1 a=agando un led desde el LabView..............................................................26 Pasos =ara Ins,alar el Arduino en LabView.................................................................................>2 >.2* !ncendiendo 1 a=agando mul,i=les led desde el LabView..................................................>( >.> Con,rol de encendido 1 a=agado de los L!@ con ma,ri cons,an,e......................................> >.( In,erac,uando con las !n,radas @igi,ales...............................................................................(7 >.< Con,rol del encendido 1 a=agado local B remo,o..................................................................(> >./ Con,rol de !n,rada Analógica................................................................................................(/ >. Con,rol de !n,radas Analógicas mul,i=les.............................................................................(4 >.4 Con,rol de L!@ G; segn =ale,a de colores......................................................................<7 >.6 Con,rol del L!@ G; con los =o,enciome,ros del módulo..................................................<2 >.)7 Generando Donos con el Arduino*LabView........................................................................<< >.)) 5,e=er 3o,or 1 5erEo 3o,or................................................................................................
>
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
6#u$ es el !rduino7 18 9onociendo el módulo que ser( en lo adelante nuestra herramienta de interacción con el entorno físico' -eg:n -eg:n la descripción descripción de la p(gina oficial oficial de !rduino !rduino http455+++'arduino'cc5es5 , !rduino !rduino es una plataforma plataforma de electrón electrónica ica abierta abierta para la creació creación n de prototip prototipos os basada basada en soft+are y hard+are fle;ibles y f(ciles de usar' -e creó para artistas, diseadores, aficionados y cualquiera interesado en crear entornos u obetos interactivos'
!rduino puede tomar información información del entorno a trav$s de sus pines de entrada de toda una gama de sensores sensores y puede afectar aquello que le rodea controlando luces, motores y otros actuadores'
rocess >rocessing& ing&'' )os proyecto proyectos s hechos hechos con !rduino !rduino pueden pueden eecutar eecutarse se sin neces necesida idad d de cone conecta ctarr a un orde ordena nador dor,, si bien bien tienen tienen la posib posibili ilida dad d de hace hacerlo rlo y comunicar con diferentes tipos de soft+are %p'e' lash, >rocessing, ?a;?->&'
)as placas pueden ser hechas a mano o compradas montadas de f(brica@ el soft+are puede ser descargado de forma gratuita' )os ficheros de diseo de referencia %9!"& est(n disponibles bao una licencia abierta, así pues eres libre de adaptarlos a tus necesidades'
!rduino recibió una ?ención Honorífica en la sección Digital Communities de la edición del 200A del Ars Electrónica Elec trónica Prix '
Hardware )a placa actual utilizada es la !rduino !rduino E/F, !rduino es una placa electrónica basada en (
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
el !CmegaG2' 9uenta con 1I entradas 5 salidas digitales pines %de los cuales A pueden ser utilizados como salidas >=?&, A entradas analógicas, un oscilador de cristal de 1A ?Hz, una cone;ión E-B, un conector de alimentación, una cabecera de 9->, y un botón de reinicio' 9ontiene todo lo necesario para apoyar a la micro, sólo tiene que conectarlo a un ordenador con un cable E-B o el poder con un adaptador !98"9 o la batería para empezar'
or el contrario, cuenta con la !tmega1AE2 %!tmegaE2 hasta la versión 2& programado como un convertidor de E-B a serie'
evisión 2 de la placa Eno tiene una resistencia tirando de la línea H=B E2 a tierra, por lo que es m(s f(cil de poner en modo "E '
evisión G de la placa tiene las siguientes nuevas características4 •
1,0 pinout4 aade pines -"! y -9) que se encuentran cerca al pin !< y dos pasadores de otros nuevos que se pongan cerca del pin de <-
•
•
</9! %<-
LEnoL significa uno en italiano y se nombra para celebrar el pró;imo lanzamiento de !rduino 1'0'
<
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
Resumen ?icrocontroladores *oltae de funcionamiento *oltae de ines de entrada analógica 9orriente de 5 - de 99 >in "e corriente continua de G,G * >in ?emoria lash -!? <<>F? *elocidad de relo
!CmegaG2 K* M812* A820* 1I %A de las cuales proporcionan una salida >=?& A I0 m! K0 m! G2 .B %!CmegaG2& de los cuales 0,K .B utilizado por gestor de arranque 2 .B %!CmegaG2& 1 .B %!CmegaG2& 1A ?Hz
Esuema de dise!o de re"erencia # esuem$tico
%ota&
/
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
Fuente de a'imentación
<;terno %no E-B&, el poder puede venir de un adaptador de 9! a 99 %en la pared& o de una batería'
)a placa puede operar en un suministro e;terno de A a 20 voltios' -in embargo, si se suministran con menos de M*, el regulador de K* puede suministrar menos de cinco voltios y la placa puede ser inestable' -i utiliza m(s de 12*, el regulador de voltae se puede sobrecalentar y daar la placa'
)os pines de alimentación son los siguientes4 •
VI%(
•
)V(
•
*V*( En suministro voltios G,G generada por el regulador de a bordo' 9onsumo de corriente m(;ima es de K0 m!'
•
G%(
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
,emoria F? %que se puede leer y escribir con la librería <<>F? &'
Entradas # -a'idas 9ada uno de los 1I pines digitales en el Eno se puede utilizar como entrada o de salida, pinMode() e(), , digita digitalWr lWrite ite(), (), y digitalRead()'
operan a K voltios' 9ada pin puede proporcionar o recibir un m(;imo de I0 m! y tiene una resistencia interna de pull8up %desconectado por defecto& de 20 a K0 Fhm' !dem(s, algunos pines tienen funciones especializadas4 •
-erie&( . /R01 # 2 /301 -e utiliza para recibir %P& y transmitir %CP& datos serie CC)' CC)'
•
Interru4ciones e5ternas& 6 # *
•
P7,&( *8 )8 98 :8 2. # 22 >roporcionar 8bits de salida >=? con la función analog=rite %&'
•
-PI& 2. /--18 22 /,O-I18 26 /,I-O18 2* /-C;1 -e trata de los pines de apoyo con la comunicación -PI( biblioteca de -> '
•
LE& 2* Hay un built8in )<" conectado al pin digital 2*(( 9uando el pin es de alto valor, el )<" est( encendido, cuando el pin es bao, es apagado'
or defecto miden desde el D/" a K voltios, aunque es posible cambiar el e;tremo superior de su rango
4
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
con el pin pin !< !< y la funci función ón analo analog gefe efere rence nce %&' !dem(s !dem(s,, algun algunos os pines pines tiene tienen n funciones especializadas4 •
I-3& A< o A) # 4in -A o -CL pin de soporte de comunicación con el I-3( librería =ire '
Hay un par de pines adicionales en el tablero4 •
oltae e de refe refere renc ncia ia para para las las entr entrad adas as anal analóg ógic icas as'' -e util utiliz iza a con con AREF( *olta analogeference %&'
•
Reset( )leve esta línea a )F= para reiniciar el microcontrolador' /ormalmente se utiliza para aadir un botón de reinicio para los -H<)" que bloquean el tablero E/F'
*$as *$ase e tamb tambi$ i$n n el mape mapeo o entr entre e los los pine pines s de !rdui !rduino no y puer puerto tos s !Cmeg CmegaG aG2 2 ' )a asignación para el !tmega, 1A, y G2 es id$ntico'
Comunicación
Ena biblioteca de -oft+are -erial permite la comunicación serial en cualquiera de los pines digitales de la E/F'
6
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
' ara la comunicación ->, utilice la biblioteca de -> '
Pro=ramación 3ab'ero %de acuerdo con el microcontrolador en el tablero&' >ara obtener m(s información, consulte la referencia y tutoriales '
Cambi$n puede pasar por alto el gestor de arranque y el programa del microcontrolador a trav$s de la cabecera 9-> %programación n89ircuit -erial&, ver las instrucciones para los detalles'
•
)7
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
Autom$tica /-o"tware1 Restab'ecer /automatic so"tware reset1
ara el siguiente medio segundo segundo m(s o menos, el gestor de arranque se est( eecutando en la F/E' ?ientras que est( programado para ignorar los datos con formato incorrecto %es decir, nada, adem(s de un proceso de carga del nuevo código&, que interceptar( los primeros bytes de datos enviados a la placa despu$s de abrir una cone;ión' -i un esquema que se eecuta en la placa recibe una configuración en tiempo u otros datos cuando se inicia por primera vez, aseg:rese de que el soft+are con el que se comunica espera un segundo despu$s de abrir la cone;ión y antes de enviar estos datos'
))
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
Protección ?-@ contra sobrecorriente
Características "ísicas )a longitud m(;ima y la anchura de la placa E/F son 2,M y 2,1 pulgadas respectivamente, con el conector E-B y conector de alimentación se e;tiende m(s all( de la dimensión anterior' 9uatro orificios para tornillos permite que la tareta sea suetada a una superficie o caa' Fbs$rvese que la distancia entre los pines digitales M y es de 1A0 mil$simas de pulgada %0,1A L&, no un m:ltiplo par de la separación 100 mil$simas de los otros pines'
Hay multitud de diferentes versiones de placas !rduino' )a predecesora placa b(sica, el "uemilanove, usa !tmel !CmegaG2' )a anterior "iecimila, y las primeras unidades de "uemilanove usaban el !tmel !Cmega1A, mientras que las placas mas antiguas usan el !Cmega'
/ota4 )os diseos y esquemas de !rduino se distribuyen bao licencia 9reative 9ommons !ttribution8-hare!lie 2'K' ?ira 6#uieres hacer un !rduino7 para indicaciones sobre como producir tu propio hard+are' >lacas de <5•
"uemilanove 8
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
•
"iecimila 8
•
/ano 8 Ena placa compacta diseada para usarse directamente en placas de desarrollo, el /ano se conecta al ordenador con un cable ?ini8B E-B'
•
?ega 8 ?as grande y potente placa !rduino, compatible con los shields de "uemilanove y "iecimila'
•
Bluetooth 8
•
)ily>ad 8 "iseado para aplicaciones sobre prendas, esta placa puede ser cosida a la ropa y es de color purpura y con un diseo con estilo'
•
io 8 "iseada para aplicaciones inal(mbricas' ncluye un zócalo para PBee, un conector para baterías )i>o y electrónica para cargar baterías'
•
?ini 8 )a placa !rduino mas pequea' unciona perfectamente en una placa de desarrollo o en aplicaciones donde el espacio es primordial' -e conecta al ordenador usando el adaptador ?ini E-B'
•
!daptador ?ini E-B 8
•
>ro 8 ero requiere de componentes e;tra y montae'
•
>ro ?ini 8 9omo la >ro, la >ro ?ini esta diseada para usuarios avanzados que requieren de bao coste, menor tamao y dispuestos a un poco de trabao e;tra'
•
-erial 8 >laca b(sica que utiliza una interfaz -2G2 como comunicación con el ordenador para programar o intercambiar datos'
•
-erial a una cara %-ingle -ided& 8
)>
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
-ie'ds )os -hields son placas que se colocan encima de la placa !rduino y para ampliar una nueva función para que sea controlada desde !rduino, para controlar diferentes aparatos, adquirir datos, etc' •
-hield Pbee 8
•
-hield ?otores8
•
-hield
Hardware de terceros recomendado >roductos de otros que hemos probado y nos gustan, compatibles con el soft+are de !rduino' •
Boarduino de !dafruit ndustries' >ara usar en placas de desarrollo unto a un cable C" E-B8to8CC)8-erie o otro adaptador de E-B a serie' "isponible solo el >9B o en formato de it'
)(
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
6B LabView )ab*ie+ no es mas que un entorno gr(fico que permite adquirir, procesar y controlar cualquier entorno que haya sido digitalizado por medio de un módulo de adquisición de datos, dichos módulos pueden ser adquiridos en la /ational nstruments o de otros proveedores los cuales brindar hard+are y drivers para la interacción con )ab*ie+'
)ab*ie+ utiliza un lengua de programación gr(fico, o sea, que la realización del programa se realiza interconectando iconos que est(n previamente configurados y la personalización en función de los que se requiere eecutar es mínimo, no obstante e;isten una gran variedad de estos iconos, com:nmente llamado en el entorno gr(fico como Uvi est(ndarS, otros por ser mas compleos Uvi e;pressS y seg:n la erarquía de la configuración Uvi para maneos de "))S'
!dem(s, )ab*ie+ posee una vasta librería de herramientas que permite la programación (gil y detallada que van desde funciones muy b(sicas como las aritm$ticas y lógicas hasta manipulación de funciones de librerías din(micas %"))& y especiales %E<, ?!C)!B, *-F/, ?FCF/, -FE/", *B!CF/,
!quí nos enfocaremos al uso de la librería especializada para !rduino, la cual puede ser descargada de la p(gina de /ational nstruments, detallaremos de forma clara y sencilla las funciones que est(n disponibles para la adquisición, proceso y control de los pines que posee el !rduino, cabe destacar que el uso de las funciones de la librería pueden trabaar en tres módulos de !rduino %E/F, "imuelanove +5!tmega G2 y ?ega 2KA0&, aquí nos enfocaremos en el !rduino E/F, por su alto desempeo y que adem(s es mas moderno que los anteriores'
)a forma de comunicación con el módulo !rduino, )ab*ie+ lo puede realizar de tres maneras que pueden ser E-B5-erial, PB<< y Blue-mirf %Bluetooth&' /osotros utilizaremos el E-B5-erial'
)<
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
6(2 Conociendo e' entorno =r$"ico 4ara e' Arduino )o primero que debemos hacer antes de empezar a disear nuestro programa en )ab*ie+ es grabarle el -etch 1 correspondiente al !rduino que permita que el computador lo reconozca como un dispositivo de adquisición de datos'
>ara esto, solo tenemos que grabarle el -etch cuyo nombre es )*!3Base'pde, el cual se encuentra en la ruta de la carpeta de /ational nstruments, se compila y se graba utilizando el "< de !rduino que se puede descargar de la p(gina oficial de !rduino http455+++'arduino'cc, luego debemos tener el paquete de drivers de )ab*ie+ llamado *-! completamente instalado y como es lógico el )ab*ie+ a partir de la versión Q'0 en adelante con su licencia'
Ena vez realizado el proceso de grabado del -etch podemos empezar a conocer los diferentes iconos para realizar los eemplos y practicas que se plantearan a los largo de este material'
*amos a ver las diferentes pantallas que est(n bao la librería de !rduino, empezando por la pantalla principal donde se pueden apreciar las funciones de inicio %nt&, cerrado %9lose&, seales %)o+ )evel&, sensores %-ensors&, utilerías %Etility& y eemplos %<;amples&
)
!l 5Fe,c- a grabar se encuen,ra en la =ágina de www.ni.com 1 ,ambi&n en la seccíon de aneos
)/
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
=?&, pines G, K, A, Q, 10 y 11 con seales que se controlan con valores de 0 a 2KK, tambi$n tiene A entradas analógicas, adem(s, de las seales de *99 y D/", así como de !< %*alor de referencia analógicas para auste e;terno, y <-
)as funciones son4 !nalog ead >in, !nalog ead >ort, -et "igital >in ?ode, "igital ead >in, "igital ead >ort, "igital =rite >in, "igital =rite >ort, >=? =rite >in, >=? 9onfigure >ort, >=? =rite >ort, Cone, Bus -pecific %29, ->&,
!nalog -ampling
%9ontinuous !quisition Fn, 9ontinuous !quisition Fff, 9ontinuous !quisition -ample, Det inite !nalog -ample' )
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
hotocell ead, -ensor ead, DB )<" 9onfigure, DB )<" =rite, -even -egment 9onfigure, -even -egment =rite 9har, -even -egment =rite -tring, Chumbstic 9onfig, Chumbstic ead, Blin?, -ervo -tepper ?otor y )9"'
)4
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
acetize, -end eceive, 9alculate Epdate ates, Det Ciming "ata, y Helpers'
in Fut Ff ange, =ait or Bytes !ngle ?ag Co DB, Chumbstic *alue Co !ngle, 9ycle DB 9olors'
)6
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
in <;ample, Chermistor ead <;ample, >hotocell <;ample, Cone <;ample, DB )<" <;ample, -even -egment "isplay <;ample, Chumb -tic DB )<" <;ample, Blin? <;ample, -ervo <;ample, )ight -ho+ <;ample, -ensor <;ample, -tepper ?otor <;ample, )9"
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
6(6 Em4eando con e' Arduino !hora empezaremos a conocer las herramientas principales para poder inicializar al !rduino dentro del entorno de )ab*ie+, para esto se dispone de dos vi que son de car(cter obligatorio, uno es el de inicio y el otro es el de cierre'
>ara familiarizarnos meor con estos vi, los veremos con mayor detalle4
2)
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
cs modernos que carecen del puerto serial, esto nos ayuda a poder conectarnos con el !rduino sin necesidad de poseer un puert -erial físico instalado en la >9'
)a siguiente es la de Baud Rate que como diimos es -erial hay que configurarla a 11K200 bps para que el )ab*ie+ pueda negociar la comunicación con $l'
Cenemos tambi$n, el Board Type, este me permite seleccionar el módulo de !rduino que usaremos con el )ab*ie+, al momento la herramienta de comunicación nos permite seleccionar al !rduino E/F, el "imuelanove +5!tmegaG2 y al ?
Connection Type seala la forma como nos comunicaremos con el entorno del !rduino, entre las conecciones tenemos la E-B5-erial, PB<< y Blue-mirf %Bluetooth&, para los fines pr(cticos la comunicación E-B5-erial es la que viene por defecto con el !rduino, no obstante este puede ser accesado utilizando accesorios %-hields&, que permiten que adopte el medio mas propicio para la comunicación con el !rduino'
Error in es una entrada para sincronizar seales de errores desde otras secciones' Arduino Resource nos habilita la comunicación de datos entre !rduino8)ab*ie+'
Error out es una salida para sincronizar seales de errores hacia otras secciones'
22
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
>ara el módulo de cierre, este nos permite cerrar el !rduino y posterior cerrar el programa que se ha eecutado en )ab*ie+'
Arduino Resource entrega las características para garantiza el cierre del puerto donde se encuentra conectado el !rduino antes de finalizar el programa'
Error in es una entrada para sincronizar seales de errores desde otras secciones'
Error out es una salida para sincronizar seales de errores hacia otras secciones'
!hora veremos los módulos b(sicos de control de puertas tanto analógicas como de las digitales, para conocimiento, las entradas analógicas como son entradas, siempre est(n configuradas como tal, por esa razón no hay que configurarla para dichos fines, sin embargo, las digitales como son bidireccionales hay que previamente configurarle la condición que tendr( en el sistema, no obstante, $stas vienen pre8configuradas como salidas, pero a:n así es recomendable la configuración de la misma'
2>
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
2(
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
!quí podemos observar, que tenemos dos vi que controlan la escritura digital, el primero es el escritura digital a un pin "igital =rite >in, este seleccionando el pin correspondiente desde el 2 hasta el 1G, nos permite colocarle un 0 ó 1, dependiendo si la condición es )F= o HDH'
>ara el caso de las entradas !nalógicas, recordaremos que estas est(n por defecto configuradas como entradas, por tal razón no es necesario la configuración de los pines para tales fines'
"e acuerdo a la arquitectura del !rduino los pines de entrada analógicos est(n identificados desde el !0 hasta el !K, en !rduino se representan desde 0 hasta K, puesto que el reconoce internamente por el interprete que se trata de las seales analógicas al momento de colocarle la instrucción correspondiente para esos fines, sin embargo, en la 2<
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
programación del programa o -etch del !rduino los pines analógicos se encuentran desde el 1I al 1Q, pero esto es transparente para el usuario final'
?ódulos de lecturas analógicas4
Ena observación importante que se debe conocer, la salida que nos da este módulo es una se!a' e54resada en ran=o de tensión, o sea, esta seal es flotante de doble precisión por tanto se e;presa en función de los K voltios aplicados com:nmente al sistema en la forma 0'000<0'
-i se requiere que se e;prese de otra forma habr( que darle el tratamiento de conversión adecuado para tales fines'
2/
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
>ara lo que representaría lo que seria la escritura analógica, el !rduino posee dentro de sus pines digitales algunos que pueden ser utilizados para salidas analógicas, estos pines est(n representados con el símbolo %V&, el cual nos muestra que este pin digital puede ser por configuración como salida analógica entregando una seal que se encuentra dentro del rango de 0 a 2KK bits, cuya interpretación es una seal en forma de >=? a la salida del pin'
2
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
=? de 0 a 2KK bits para la interpretación seg:n el nivel en el pin de salida correspondiente'
%ota& esta seal es de 0 a 2KK, se debe tener cuidado de no conectar directamente las entradas analógicas del módulo de entrada a las de salidas analógicas, puesto que no son del mismo tipo ni rango'
Hasta ahora ya conocemos los vi y módulos b(sicos que se necesitan para controlar el !rduino desde )ab*ie+'
24
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
*B EDercicios 4ro4uestos6 !* Encendiendo y apagando un led desde el 'a(Vie)
Los e?ercicios =ro=ues,os auí es,án realizados en unción del módulo s-ield dise0ado =ara acom=a0ar es,e ma,erial el cual es,á de,allado su esuemá,ico en la sección de aneos
26
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
Pasos para reali-ar el e.ercicio propuesto co%o e.ercicio / 18 9reamos un nueo i en )ab*ie+ 28 9ambiamos a pantalla y nos vamos a la ventana del diagrama en bloques % @'oc
ia=ram&, con el cursor del mouse o presionando la combinación de teclas Ctr' + e' G8 "ando clic derecho abrimos la sección Funtions del )ab*ie+ y entramos en la sección de Arduino y le damos clic al icono Init y lo colocamos en el diagrama en bloques' I8 Hacemos los mismo otra vez y sacamos el icono Close* K8 /uevamente hacemos lo mismo otra vez y entramos a la sub8sección Low Lee' y sacamos los iconos -et i=ita' Pin mode y i=ita' 7rite Pin y lo colocamos en el diagrama en bloques como se muestra en la figura' A8 !hora nos vamos a la sección E54ress>E5ec Contro'> y sacamos el módulo 7i'e
Loo4, y cuando le demos clic arrastramos el mouse para expandir el wi'e 'oo4 como se muestra en la figura' M8 >rocederemos a realizar las intercone;iones correspondientes en el diagrama' 8 ara la constante 1G se realiza los mismo pasos pero se selecciona Constant en la sección de Create' 118 7
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
entrada del control del loop esquina inferior derecha y cre(ndole un control, este es el mismo que veremos en el panel frontal como
-3OP( Im4ortante cuando se eDecuta
cua'uier 4ro=rama ue interacta con e' Arduino es Ob'i=atorio ue e' mismo sea a4a=ado uti'iando 'a tec'a de contro' -3OP ue "ue co'ocado 4ara esos "ines # no uti'iar e' sto4 ue trae e' sistema en e' men arriba8 4uesto ue esto rea'ia a' 4ro=rama una 4arada brusca /Abort E5ecution18 o sea8 una 4arada de emer=encia "orada8 im4idiendo ue se cierre correctamente e' Arduino # esto 4uede causar 4osteriormente "a''as en 'a comunicación entre e' LabView # Arduino8 "orando a tener ue reiniciar tanto a' Arduino como a' LabView( !hora solo nos queda configurar que el puerto donde se encuentra el !rduino este debidamente colocado donde dice Arduino Port y procederemos a realizar la eecución del programa, si todo est( correcto se debe esperar que el !rduino inicialice y empiece a interactuar con el )ab*ie+, luego con el s+itch procederemos a encender y apagar el pin previamente configurado en nuestro sistema, para este eercicio estar( en el pin 1G'
>)
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
Pasos 4ara Insta'ar e' Arduino en LabView( 18 9olocamos el !rduino en el >uerto E-B' 28 9uando nos pida el "river lo enviamos a la carpeta drivers que esta dentro de la carpeta del !rduino y procedemos a verificar que se instale correctamente' G8 )uego eecutamos el "< del !rduino %versión 1'0'1&, abrimos el -etch del >rograma de interfaz para la comunicación entre )ab*ie+ y !rduino, y buscamos la carpeta )*!3Base y seleccionamos el archivo con el mismo nombre LVIFA@ase( I8 )o verificamos presionando sobre el icono de
verificar'
K8
Ena vez realizado todo esto procederemos a configurarlo dentro del entorno del )ab*ie+'
Para esto aremos 'o si=uiente& 18 <ecutaremos el Measure%ent 7 Auto%ation E:plorer ,
una vez abierto nos vamos a la sección My Syste%1Serial 7 Parallel y seleccionamos el Puerto CO, donde se instaló el !rduino bao =indo+s, >2
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
lo abrimos y en la sección VISA Alias on My Syste% le ponemos el nombre !rduino, luego cambiamos la ventana a la de Port Settings y configuramos el Baud Rate a ;2"" lo dem(s se mantiene igual, *alidamos y salvamos y cerramos'
Hasta aquí, se ha instalado y configurado nuestro !rduino y solo debemos en )ab*ie+ seleccionarlo en el *isa esource y eecutar nuestro programa'
>>
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
!*2< Encendiendo y apagando %ultiples led desde el 'a(Vie)
)a imagen muestra el entorno del (rea del >anel rontal en )ab*ie+, nótese que esto es un arreglo con -+itch de control duplicado I veces'
, es el correspondiente al de control del =hile )oop del programa con una variación del color de fondo en modo F, para realizarlo le dan clic derecho sobre el icono y selecciona >roperties, y en la casilla Fff le damos clic y le colocamos el color de nuestra preferencia y adem(s, le ponemos en Fff te;t el nombre que deseemos'
)o mismo con los -+itch, podemos personalizarlos a nuestro gusto, algo importante cuanto se agrupan elementos de igual tipo dentro de un arreglo el label es :nico, si cambian uno los dem(s asumen el mismo, para que salga el te;to deseado deben abrir la herramienta de paleta y colocar etiquetas individuales en cada interruptor para poder identificarlos'
!rduino >ort viene del icono de nit cuando se crea' efierace a la guía del ee'1' >(
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
"iagrama en bloques del eercicio 2 ><
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
/ótese que en este eercicio se ha utilizado un or )oop para poder configurar los pines que se utilizar(n, y adem(s, otro dentro del =hile )oop para ir seleccionando a cual de los pines se le escribir( el U1S si se da el caso o de lo contrario sería un U0S'
)as funciones se encuentran en la sección >rogramming y !rduino' rogrammingW"ialog O Eser nterface 0or 'oop untionsW>rogrammingW-tructures +hile 'oop untionsW>rogrammingW-tructures Add untionsW>rogrammingW/umeric Su(tract untionsW>rogrammingW/umeric Inde: Array untionsW>rogrammingW!rray Case Structure untionsW>rogrammingW-trutures +ait until =e:t %s Multiple untionsW>rogrammingWCiming 8n(undle By =a%e untionsW>rogrammingW9luster, 9lass, O *ariant To 8nsigned Byte Interger untionsW>rogrammingW/umericW9onversion 9r untionsW>rogrammingWBoolean =u%eric Constant untionsW>rogrammingW/umeric >/
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
!*! Control de encendido y apagado de los 'ED con %atri: constante
uerto donde esta el !rduino y poder apagar el mismo'
ecuerden que se debe finalizar el programa presionando la barra de -CF> en el sistema y no realizandole un Brea orce por arriba'
>
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
"iagrama en bloques del eercicio G >4
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
)as funciones se encuentran en la sección >rogramming y !rduino' rogrammingW"ialog O Eser nterface 0or 'oop untionsW>rogrammingW-tructures +hile 'oop untionsW>rogrammingW-tructures Add untionsW>rogrammingW/umeric Inde: Array untionsW>rogrammingW!rray +ait until =e:t %s Multiple untionsW>rogrammingWCiming 8n(undle By =a%e untionsW>rogrammingW9luster, 9lass, O *ariant To 8nsigned Byte Interger untionsW>rogrammingW/umericW9onversion 9r untionsW>rogrammingWBoolean =u%eric Constant untionsW>rogrammingW/umeric >uotient 7 Re%ainder untionsW>rogrammingW/umeric =u%(er to Boolean Array untionsW>rogrammingW/umericW9onversion
>6
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
!*? Interactuando con las Entradas Digitales !hora trataremos las EC a las correspondientes y FEC>EC a las dem(s'
)a pantalla es simbólica para el control del !rduino y poder detener el programa cuando querramos, los pines de entradas que utilizaremos ser(n el 2, I, M y , y los de salidas ser(n 10, 11, 12 y 1G'
>ara el caso de la configuración de inicio, los pines habr( que configurarlos uno a uno en función de su condición en el eercicio'
(7
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
"iagrama en bloques del eercicio I ()
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
!hora en este eercicio incorporamos una nueva función de entrada digital, esta nos da una salida de datos de valor entero de 0 ó 1 y debe ser convertido a byte entero para que el sistema pueda interpretarlo dentro del arreglo'
9uando eecutamos el eercicio a medida que presionamos un s+itch en el módulo observaremos el )<" que se le asignó encendiendo'
)as funciones se encuentran en la sección >rogramming y !rduino' rogrammingW"ialog O Eser nterface 0or 'oop untionsW>rogrammingW-tructures +hile 'oop untionsW>rogrammingW-tructures Add untionsW>rogrammingW/umeric Su(tract untionsW>rogrammingW/umeric Inde: Array untionsW>rogrammingW!rray Build Array untionsW>rogrammingW!rray Case Structure untionsW>rogrammingW-trutures +ait until =e:t %s Multiple untionsW>rogrammingWCiming 8n(undle By =a%e untionsW>rogrammingW9luster, 9lass, O *ariant To 8nsigned Byte Interger untionsW>rogrammingW/umericW9onversion 9r untionsW>rogrammingWBoolean =u%eric Constant untionsW>rogrammingW/umeric
(2
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
*() Contro' de' encendido # a4a=ado 'oca' remoto
9omo se observa en el panel frontal, aquí tenemos los interruptores remotos y el selector )ocal5emoto para transferir el mando al módulo o vía soft+are del control de los )<"s en el módulo'
ecordando que, cuando est$ remoto solo se podr( encender los )<"s del módulo mediante los interruptores en el programa y los interruptores en el módulo quedar(n desactivados y viceversa cuando este local'
(>
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
"iagrama en bloques del eercicio K ((
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
9uando eecutamos debemos seleccionar el s+itch en local o remoto, si esta off se encuentra local y si activamos el interruptor cambia la lógica a remoto permitiendose controlar desde el programa, el eercicio a medida que presionamos un s+itch en el módulo observaremos el )<" que se le asignó encendiendo'
)as funciones se encuentran en la sección >rogramming y !rduino' rogrammingW"ialog O Eser nterface 0or 'oop untionsW>rogrammingW-tructures +hile 'oop untionsW>rogrammingW-tructures Add untionsW>rogrammingW/umeric Su(tract untionsW>rogrammingW/umeric Inde: Array untionsW>rogrammingW!rray Build Array untionsW>rogrammingW!rray Case Structure untionsW>rogrammingW-trutures +ait until =e:t %s Multiple untionsW>rogrammingWCiming 8n(undle By =a%e untionsW>rogrammingW9luster, 9lass, O *ariant To 8nsigned Byte Interger untionsW>rogrammingW/umericW9onversion 9r untionsW>rogrammingWBoolean =u%eric Constant untionsW>rogrammingW/umeric Select untionsW>rogrammingW9omparison
(<
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
*(9 Contro' de Entrada Ana'ó=ica 9uando se manean las entradas analógicas debemos recordar que las mismas por ser solo entradas no hay que darles configuración inicial' )os pines que se pueden utilizar para tales fines est(n reservados en el !rduino y se enumeran desde el !0 al !K'
)a salida de datos se e;presa en formato entero de 0'000<0 hasta K'000<0 con sus margenes de error, dependiendo de la regulación de la fuente interna del !rduino' /o obstante, podemos manearla así o convertirla para propositos posteriores'
*ista del panel frontal del programa para visualizar las entradas analógicas'
>ara voltaes maores de K*, debemos tener cuidado, puesto que podemos daar el !rduino' (/
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
!l eecutar el eercicio, solo debemos seleccionar la entrada analógica que deseamos visualizar y esperamos hasta que refresque la visualización'
)as funciones se encuentran en la sección >rogramming y !rduino' rogrammingW"ialog O Eser nterface +hile 'oop untionsW>rogrammingW-tructures +ait 3%s5 untionsW>rogrammingWCiming 8n(undle By =a%e untionsW>rogrammingW9luster, 9lass, O *ariant 9r untionsW>rogrammingWBoolean =u%eric Constant untionsW>rogrammingW/umeric
(
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
*(J Contro' de Entradas Ana'ó=icas mu'ti4'es
/otese que aquí, se puede personalizar cada visualizador en función de la seal que se requiere capturar, por eemplo para el voltae la escala sería en voltios, para temperatura sería en 9elcios, y así dependiendo de la entrada y el circuito que tenga acoplado'
ecordando que los niveles ser(n siempre de 0 a K* en formato nterger %enteros&, y que el tratamiento o conversión sería en función con el circuito acoplado a la entrada, valiendonos a veces, de funciones matem(ticas o leyes conocidas de circuito'
(4
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
>ara identificar las entradas analógicas, en )ab*ie+ se hace referencia a los pines desde !0 hasta !K, con los terminos de 0 a K, puesto que la función para lectura analógicas es :nica, no interfiere con las de los pines digitales'
)as funciones se encuentran en la sección >rogramming y !rduino' rogrammingW"ialog O Eser nterface 0or 'oop untionsW>rogrammingW-tructures +hile 'oop untionsW>rogrammingW-tructures Case Structure untionsW>rogrammingW-trutures +ait 3%s5 untionsW>rogrammingWCiming 8n(undle By =a%e untionsW>rogrammingW9luster, 9lass, O *ariant 9r untionsW>rogrammingWBoolean =u%eric Constant untionsW>rogrammingW/umeric (6
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
*(K Contro' de LE RG@ se=n 4a'eta de co'ores Codos conocemos la paleta de colores, esta nos da una representación gr(fica del color que queremos interpretar en el )<" DB, el cual esta conectado a las salidas digitales con control de >=?, los pines K, A y Q'
ecordando que el color mostrado y el color en el )<" es un apro;imado, hay muchas variantes que hay que tomar en cuenta para lograr el color del pi;el que visualimos en la paleta de colores'
=?, el cual varia los rangos desde el 0 a 2KK'
>ara este eercicio utilizamos una función %-ub*& dentro del )ab*ie+ que procesa la información entregada a los pines configurados y los interpreta en la lógica del >=? de 0 a 2KK'
<7
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
!l eecutar este eercicio, solo debemos darle un clic al icono de los colores y abrir( una paleta de colores, seleccionamos el color y el programa enviar( la interpretación correcpondiente para el color visualizarse en el )<"'
)as funciones se encuentran en la sección >rogramming y !rduino' rogrammingW"ialog O Eser nterface +hile 'oop untionsW>rogrammingW-tructures =u%eric Constant untionsW>rogrammingW/umeric
<)
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
*(: Contro' de' LE RG@ con 'os 4otenciometros de' módu'o
ecordando que el valor leído en los potenciometros es del orden de 0 a K *oltios, debemos de convertirlo a un rango compatible con el de la función de escritura >=? que debe estar dentro del rango de 0 a 2KK'
>ara esto, tomamos el valor de entrada y lo dividimos entre el valor de referencia que en nuestro caso es K voltios, luego lo multiplicamos por la constante m(;ima que tendremos que ser( de 2KK y por :ltimo lo sometemos a un filtro para que se conserve el rengo de trabao de 0 a 2KK, luego lo convertimos a un rango que el sistema pueda interpretar de byte'
<2
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
"iagrama en bloques del eercicio Q <>
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
al eecutar el programa luego que inicialice, solo debemos mover los potenciometros y austar al valor que se desee'
)as funciones se encuentran en la sección >rogramming y !rduino' rogrammingW"ialog O Eser nterface +hile 'oop untionsW>rogrammingW-tructures 0or 'oop untionsW>rogrammingW-tructures Case Structure untionsW>rogrammingW-tructures =u%eric Constant untionsW>rogrammingW/umeric Di$ide untionsW>rogrammingW/umeric Multiply untionsW>rogrammingW/umeric I+ait until =e:t %s Multiple untionsW>rogrammingWCiming 8n(undle By =a%e untionsW>rogrammingW9luster, 9lass, O *ariant To 8nsigned Byte Interger untionsW>rogrammingW/umericW9onversion 9r untionsW>rogrammingWBoolean In Range and Coerce untionsW>rogrammingW9omparison
<(
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
*(2. Generando 3onos con e' ArduinoBLabView =? al cual se conectar( el Buzzer'
!l eecutarce el programa, solo debemos austar frecuencia y duración'
)as funciones se encuentran en la sección >rogramming y !rduino' rogrammingW"ialog O Eser nterface +hile 'oop untionsW>rogrammingW-tructures =u%eric Constant untionsW>rogrammingW/umeric 8n(undle By =a%e untionsW>rogrammingW9luster, 9lass, O *ariant 9r untionsW>rogrammingWBoolean <<
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
*(22 -te4er ,otor # -ero ,otor )os eercicios de control de -ervo motores y motore >aso a >aso son los que est(n propuesto en )ab*ie+ como eemplos, recuerden que las funciones est(n dentro de la librería de !rduino como -ub*'
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
en
-earch
!rduino,
o
pueden
accesarlos
en
la
ruta
/ationalnstrumentWe;amplesW)ab*<= nterface for !rduinoWY'vi' <
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
A%E0O-
<4
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
'VI0ABase*ino 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY YY )*!3irm+are 8 >rovides Basic !rduino -etch or nterfacing =ith )ab*<=' YY YY =ritten By4 -am .ristoff 8 /ational nstruments YY =ritten Fn4 /ovember 2010 YY )ast Epdated4 "ec 2011 8 .evin ort 8 /ational nstruments YY )ast ?odification4 Jul 2012 8 9arlos Duzman 8 E/!><9 YY YY Chis ile ?ay Be ?odified !nd e8"istributed reely' Friginal ile 9ontent YY =ritten By -am .ristoff !nd !vailable !t +++'ni'com5arduino' YY YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY YY ncludes' YY YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 55 -tandard includes' Chese should al+ays be included' Zinclude [=ire'hW Zinclude [->'hW Zinclude [-ervo'hW Zinclude L)ab*<=nterface'h L 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY setup%& YY YY nitialize the !rduino and setup serial communication' YY YY nput4 /one YY Futput4 /one YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void setu4%& \ 55 nitialize -erial >ort =ith Che "efault Baud ate sync)*%&@ 55 >lace your custom setup code here ]
<6
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY loop%& YY YY Che main loop' Chis loop runs continuously on the !rduino' t YY receives and processes serial commands from )ab*<=' YY YY nput4 /one YY Futput4 /one YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void 'oo4%& \ 55 9hec for commands from )ab*<= and process them' checor9ommand%&@ 55 >lace your custom loop code here %this may slo+ do+n communication +ith )ab*<=&
if %acq?odeNN1& \ sample9ontinously%&@ ] ]
/7
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
'a(VIE+Inter,ace*h 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY YY YY )*!3irm+are 8 >rovides unctions or nterfacing =ith Che !rduino Eno YY YY =ritten By4 -am .ristoff 8 /ational nstruments YY =ritten Fn4 /ovember 2010 YY )ast Epdated4 "ec 2011 8 .evin ort 8 /ational nstruments YY )ast modification4 Jul 2012 8 9arlos Duzman 8 E/!><9 YY YY Chis ile ?ay Be ?odified !nd e8"istributed reely' Friginal ile 9ontent YY =ritten By -am .ristoff !nd !vailable !t +++'ni'com5arduino' YY YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY "efine 9onstants YY YY "efine directives providing meaningful names for constant values' YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 Zdefine ?=!<3?!JF 02 Zdefine ?=!<3?/F 00 Zif defined%33!*3!Cmega12033& ^^ defined%33!*3!Cmega2KA033& Zdefine "<!E)CB!E"!C< QA00 55 "efines Che "efault -erial Baud ate %Chis must match the baud rate specifid in )ab*<=& Zelse Zdefine "<!E)CB!E"!C< 11K200 Zendif Zdefine ?F"<3"<!E)C 0 55 "efines !rduino ?odes %9urrently /ot Esed& Zdefine 9F??!/")><3-E>>FC 1 55 "efines =hether Che -tepper )ibrary s ncluded 8 9omment Chis )ine Co <;clude -tepper -upport
55 "eclare *ariables unsigned char current9ommand_9F??!/")rocess 55Dlobals for continuous aquisition unsigned char acq?ode@ unsigned char cont!cq>in@ float cont!cq-peed@
55 Che 9urrent 9ommand or
/)
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
float acquisition>eriod@ float iterationslt@ int iterations@ float delayCime@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY sync)* YY YY -ynchronizes +ith )ab*<= and sends info about the board and firm+are %Enimplemented& YY YY nput4 /one YY Futput4 /one YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void sync)*%&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY set?ode YY YY -ets the mode of the !rduino %eserved or uture Ese& YY YY nput4 nt 8 ?ode YY Futput4 /one YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void set?ode%int mode&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY checor9ommand YY YY 9hecs for ne+ commands from )ab*<= and processes them if any e;ists' YY YY nput4 /one YY Futput4 1 8 9ommand received and processed YY 0 8 /o ne+ command YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 int checor9ommand%void&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY process9ommand YY YY >rocesses a given command YY YY nput4 command of 9F??!/")
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
YY 0 8 /o ne+ command YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void process9ommand%unsigned char command_`&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY +rite"igital>ort YY YY =rite values to "F pins 0 8 1G' >ins must first be configured as outputs' YY YY nput4 9ommand containing digital port data YY Futput4 /one YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void +rite"igital>ort%unsigned char command_`&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY analogead>ort YY YY eads all A analog input ports, builds byte pacet, send via -2G2' YY YY nput4 /one YY Futput4 /one YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void analogead>ort%&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY seven-egment39onfig YY YY 9onfigure digital 5F pins to use for seven segment display' >ins are stored in seven-egment>ins array' YY YY nput4 >ins to use for seven segment )<" _!, B, 9, ", <, , D, ">` YY Futput4 /one YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void seven-egment39onfig%unsigned char command_`&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY seven-egment3=rite YY YY =rite values to seven-egment display' ?ust first use seven-egment39onfigure YY YY nput4
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY spi3set9loc"ivider YY YY -et the -> 9loc "ivisor YY YY nput4 -> 9loc "ivider 2, I, , 1A, G2, AI, 12 YY Futput4 /one YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void spi3set9loc"ivider%unsigned char divider&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY spi3sendeceive YY YY -ens 5 eceive -> "ata YY YY nput4 9ommand >acet YY Futput4 /one %Chis command sends one serail byte bac to )* for each data byte' YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void spi3sendeceive%unsigned char command_`&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY checsum39ompute YY YY 9ompute >acet 9hecsum YY YY nput4 9ommand >acet YY Futput4 9har 9hecsum *alue YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 unsigned char checsum39ompute%unsigned char command_`&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY checsum3Cest YY YY 9ompute >acet 9hecsum !nd Cest !gainst ncluded 9hecsum YY YY nput4 9ommand >acet YY Futput4 0 f 9hecsums !re
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
YY eturns several analog input points at once' YY YY nput4 void YY Futput4 void YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void sample9ontinously% void&@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY finite!cquisition YY YY eturns the number of samples specified at the rate specified' YY YY nput4 pin to sampe on, speed to sample at, number of samples YY Futput4 void YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void finite!cquisition%int analog>in, float acquisition-peed, int numberFf-amples &@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY lcd3print YY YY >rints "ata to the )9" =ith Che Diven Base YY YY nput4 9ommand >acet YY Futput4 /one YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 void lcd3print%unsigned char command_`&@
/<
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
'a(VIE+Inter,ace*ino 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY YY )*!3irm+are 8 >rovides unctions or nterfacing =ith Che !rduino Eno YY YY =ritten By4 -am .ristoff 8 /ational nstruments YY =ritten Fn4 /ovember 2010 YY )ast Epdated4 "ec 2011 8 .evin ort 8 /ational nstruments YY )ast modification4 Jul 2012 8 9arlos Duzman 8 E/!><9 YY YY Chis ile ?ay Be ?odified !nd e8"istributed reely' Friginal ile 9ontent YY =ritten By -am .ristoff !nd !vailable !t +++'ni'com5arduino' YY YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 Zinclude [=ire'hW Zinclude [->'hW Zinclude [)iquid9rystal'hW 55 *ariables unsigned int ret*al@ int seven-egment>ins_`@ int current?ode@ unsigned int freq@ unsigned long duration@ int i2ceadCimeouts N 0@ char spiBytesCo-end N 0@ char spiBytes-ent N 0@ char spi9->in N 0@ char spi=ord-ize N 0@ -ervo Yservos@ byte custom9har_`@ )iquid9rystal lcd%0,0,0,0,0,0,0&@ 55 -ets the mode of the !rduino %eserved or uture Ese& void set?ode%int mode& \ current?ode N mode@ ] 55 9hecs for ne+ commands from )ab*<= and processes them if any e;ists' int checor9ommand%void& \ int bufferBytes N -erial'available %&@ //
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
if %bufferBytes WN 9F??!/")rocess t 55 Build 9ommand rom -erial Buffer for %int iN0@ i[9F??!/")rocesses a given command void process9ommand%unsigned char command_`& \ 55 "etermine 9ommand if %command_0` NN 0; OO checsum3Cest%command& NN 0& \ s+itch%command_1`& \ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY )! ?aintenance 9ommands YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;004 55 -ync >acet -erial'print%LsyncL&@ -erial'flush%&@ brea@ case 0;014 55 lush -erial Buffer -erial'flush%&@ brea@
5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY )o+ )evel 8 "igital 5F 9ommands YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;024 55 -et >in !s nput Fr Futput pin?ode%command_2`, command_G`&@ -erial'+rite%R0R&@ brea@ /
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
case 0;0G4 55 =rite "igital >in digital=rite%command_2`, command_G`&@ -erial'+rite%R0R&@ brea@ case 0;0I4 55 =rite "igital >ort 0 +rite"igital>ort%command&@ -erial'+rite%R0R&@ brea@ case 0;0K4 55Cone freq N % %command_G`[[& command_I`&@ durationN%command_` %command_M`[[& %command_K`[[2I&&@
%command_A`[[1A&
if %freq W 0& \ tone%command_2`, freq, duration&@ ] else \ noCone%command_2`&@ ] -erial'+rite%R0R&@ brea@ case 0;0A4 55 ead "igital >in ret*al N digitalead%command_2`&@ -erial'+rite%ret*al&@ brea@ case 0;0M4 55 "igital ead >ort ret*al N 0;0000@ for %int iN0@ i [N1G@ i& \ if %digitalead%i&& \ ret*al N %1[[i&@ ] ] -erial'+rite% %ret*al O 0;&&@ -erial'+rite% %ret*al WW &&@ brea@
5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY )o+ )evel 8 !nalog 9ommands YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;04 55 ead !nalog >in /4
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
ret*al N analogead%command_2`&@ -erial'+rite% %ret*al WW &&@ -erial'+rite% %ret*al O 0;&&@ brea@ case 0;0Q4 55 !nalog ead >ort analogead>ort%&@ brea@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY )o+ )evel 8 >=? 9ommands YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;0!4 55 >=? =rite >in analog=rite%command_2`, command_G`&@ -erial'+rite%R0R&@ brea@ case 0;0B4 55 >=? =rite G >ins analog=rite%command_2`, command_K`&@ analog=rite%command_G`, command_A`&@ analog=rite%command_I`, command_M`&@ -erial'+rite%R0R&@ brea@
5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY -ensor -pecific 9ommands YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;094 55 9onfigure -even -egment "isplay seven-egment39onfig%command&@ -erial'+rite%R0R&@ brea@ case 0;0"4 55 =rite Co -even -egment "isplay seven-egment3=rite%command&@ -erial'+rite%R0R&@ brea@
5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY 29 YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;0<4 55 nitialize 29 =ire'begin%&@ -erial'+rite%R0R&@ brea@ case 0;04 55 -end 29 "ata =ire'beginCransmission%command_G`&@ for %int iN0@ i[command_2`@ i& /6
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
\ Zif defined%!"E/F& OO !"E/F WN 100 =ire'+rite%command_iI`&@ Zelse =ire'send%command_iI`&@ Zendif ] =ire'endCransmission%&@ -erial'+rite%R0R&@ brea@ case 0;104 55 29 ead i2ceadCimeouts N 0@ =ire'requestrom %command_G`, command_2`&@ +hile%=ire'available%& [ command_2`& \ i2ceadCimeouts@ if %i2ceadCimeouts W 100& \ return@ ] else \ delay%1&@ ] ] for %int iN0@ i[command_2`@ i& \ Zif defined%!"E/F& OO !"E/F WN 100 -erial'+rite%=ire'read%&&@ Zelse -erial'+rite%=ire'receive%&&@ Zendif ] brea@
5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY -> YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;114 55 -> nit ->'begin%&@ -erial'+rite%R0R&@ 7
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
brea@ case 0;124 55 -> -et Bit Frder %?-B )-B& if %command_2` NN 0& \ ->'setBitFrder %)-B-C&@ ] else \ ->'setBitFrder %?-B-C&@ ] -erial'+rite%R0R&@ brea@ case 0;1G4 55 -> -et 9loc "ivider spi3set9loc"ivider%command_2`&@ -erial'+rite%R0R&@ brea@ case 0;1I4 55 -> -et "ata ?ode s+itch%command_2`& \ case 04 ->'set"ata?ode%->3?F"<0&@ brea@ case 14 ->'set"ata?ode%->3?F"<1&@ brea@ case 24 ->'set"ata?ode%->3?F"<2&@ brea@ case G4 ->'set"ata?ode%->3?F" -end 5 eceive spi3sendeceive%command&@ brea@ case 0;1A4 55 -> 9lose ->'end%&@ -erial'+rite%R0R&@ brea@
)
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY -ervos YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;1M4 55 -et /um -ervos free%servos&@ servos N %-ervoY& malloc%command_2`Ysizeof%-ervo&&@ for %int iN0@ i[command_2`@ i& \ servos_i` N -ervo%&@ ] if %servos NN 0& \ -erial'+rite%R1R&@ ] else \ -erial'+rite%R0R&@ ] brea@ case 0;14 55 9onfigure -ervo servos_command_2``'attach%command_G`&@ -erial'+rite%R0R&@ brea@ case 0;1Q4 55 -ervo =rite servos_command_2``'+rite%command_G`&@ -erial'+rite%R0R&@ brea@ case 0;1!4 55 -ervo ead !ngle -erial'+rite%servos_command_2``' read%&&@ brea@ case 0;1B4 55 -ervo =rite u- >ulse servos_command_2``'+rite?icroseconds % %command_G` %command_I`[[&& &@ -erial'+rite%R0R&@ brea@ case 0;194 55 -ervo ead u- >ulse ret*al N servos_command_2``' read?icroseconds%&@ -erial'+rite %%ret*al O 0;&&@ -erial'+rite% %ret*al WW &&@ brea@ case 0;1"4 55 -ervo "etach servos_command_2``'detach%&@ -erial'+rite%R0R&@ brea@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY 2
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
YY )9" YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;1<4 55 )9" nit lcd'init%command_2`, command_G`, command_I`, command_K`, command_A`, command_M`, command_`, command_Q`, command_10`, command_11`, command_12`, command_1G`&@
-erial'+rite%R0R&@ brea@ case 0;14 55 )9" -et -ize lcd'begin%command_2`, command_G`&@ -erial'+rite%R0R&@ brea@ case 0;204 55 )9" -et 9ursor ?ode if %command_2` NN 0& \ lcd'no9ursor %&@ ] else \ lcd'cursor %&@ ] if %command_G` NN 0& \ lcd'noBlin%&@ ] else \ lcd'blin%&@ ] -erial'+rite%R0R&@ brea@ case 0;214 55 )9" 9lear lcd'clear %&@ -erial'+rite%R0R&@ brea@ case 0;224 55 )9" -et 9ursor >osition lcd'set9ursor %command_2`, command_G`&@ -erial'+rite%R0R&@ brea@ case 0;2G4 55 )9" >rint lcd3print%command&@ brea@ case 0;2I4 55 )9" "isplay >o+er >
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
if %command_2` NN 0& \ lcd'no"isplay%&@ ] else \ lcd'display%&@ ] -erial'+rite%R0R&@ brea@ case 0;2K4 55 )9" -croll if %command_2` NN 0& \ lcd'scroll"isplay)eft %&@ ] else \ lcd'scroll"isplayight %&@ ] -erial'+rite%R0R&@ brea@ case 0;2A4 55 )9" !utoscroll if %command_2` NN 0& \ lcd'no!utoscroll%&@ ] else \ lcd'autoscroll%&@ ] -erial'+rite%R0R&@ brea@ case 0;2M4 55 )9" >rint "irection if %command_2` NN 0& \ lcd'rightCo)eft%&@ ] else \ lcd'leftCoight%&@ ] -erial'+rite%R0R&@ brea@ case 0;24 55 )9" 9reate 9ustom 9har (
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
for %int iN0@ i[@ i& \ custom9har_i` N command_iG`@ ] lcd'create9har %command_2`, custom9har&@ -erial'+rite%R0R&@ brea@ case 0;2Q4 55 )9" >rint 9ustom 9har lcd'+rite%command_2`&@ -erial'+rite%R0R&@ brea@
5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY 9ontinuous !quisition YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 case 0;2!4 55 9ontinuous !quisition ?ode Fn acq?odeN1@ cont!cq>inNcommand_2`@ cont!cq-peedN%command_G`&%command_I`[[&@ acquisition>eriodN15cont!cq-peed@ iterationslt N'05acquisition>eriod@ iterationsN%int&iterationslt@ if %iterations[1& \ iterationsN1@ ] delayCimeN acquisition>eriod@ if %delayCime[0& \ delayCimeN0@ ] brea@ case 0;2B4 55 9ontinuous !quisition ?ode Fff acq?odeN0@ brea@ case 0;294 55 eturn irm+are evision -erial'+rite%byte%?=!<3?!JF&&@ -erial'+rite%byte%?=!<3?/F&&@ brea@ case 0;2"4 55 >erform inite !quisition -erial'+rite%R0R&@ finite!cquisition%command_2`,%command_G`&%command_I`[[&,command_K` <
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
%command_A`[[&&@ brea@ 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY Enno+n >acet YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 default4 55 "efault 9ase -erial'flush%&@ brea@ ] ] else\ 55 9hecsum ailed, lush -erial Buffer -erial'flush%&@ ] ] 5YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YY unctions YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY5 55 =rites *alues Co "igital >ort %"F 081G&' >ins ?ust Be 9onfigured !s Futputs Before Being =ritten Co void +rite"igital>ort%unsigned char command_`& \ digital=rite%1G, %% command_2` WW K& O 0;01& &@ digital=rite%12, %% command_2` WW I& O 0;01& &@ digital=rite%11, %% command_2` WW G& O 0;01& &@ digital=rite%10, %% command_2` WW 2& O 0;01& &@ digital=rite%Q, %% command_2` WW 1& O 0;01& &@ digital=rite%, %command_2` O 0;01& &@ digital=rite%M, %% command_G` WW M& O 0;01& &@ digital=rite%A, %% command_G` WW A& O 0;01& &@ digital=rite%K, %% command_G` WW K& O 0;01& &@ digital=rite%I, %% command_G` WW I& O 0;01& &@ digital=rite%G, %% command_G` WW G& O 0;01& &@ digital=rite%2, %% command_G` WW 2& O 0;01& &@ digital=rite%1, %% command_G` WW 1& O 0;01& &@ digital=rite%0, %command_G` O 0;01& &@ ] 55 eads all A analog input ports, builds byte pacet, send via -2G2' void analogead>ort%& \ /
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
55 ead in int pin0 N analogead%0&@ int pin1 N analogead%1&@ int pin2 N analogead%2&@ int pinG N analogead%G&@ int pinI N analogead%I&@ int pinK N analogead%K&@ 55Build 8Byte >acet rom A0 Bits of "ata ead char output0 N %pin0 O 0;&@ char output1 N % %%pin1 [[ 2& O 0;9& ^ % %pin0 WW & O 0;0G& &@ char output2 N % %%pin2 [[ I& O 0;0& ^ % %pin1 WW A& O 0;0& &@ char outputG N % %%pinG [[ A& O 0;90& ^ % %pin2 WW I& O 0;G& &@ char outputI N % %pinG WW 2& O 0;&@ char outputK N %pinI O 0;&@ char outputA N % %%pinK [[ 2& O 0;9& ^ % %pinI WW & O 0;0G& &@ char outputM N % %pinK WW A& O 0;0 &@ 55 =rite Bytes Co -erial >ort -erial'print%output0&@ -erial'print%output1&@ -erial'print%output2&@ -erial'print%outputG&@ -erial'print%outputI&@ -erial'print%outputK&@ -erial'print%outputA&@ -erial'print%outputM&@ ] 55 9onfigure digital 5F pins to use for seven segment display void seven-egment39onfig% unsigned char command_`& \ 55 9onfigure pins as outputs and store in seven-egment>ins array for use in seven-egment3=rite for %int iN2@ i[10@ i& \ pin?ode%command_i`, FEC>EC&@ seven-egment>ins_%i81&` N command_i`@ ] ] 55 =rite values to seven-egment display' ?ust first use seven-egment39onfigure void seven-egment3=rite%unsigned char command_`& \
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
for %int iN1@ i[Q@ i& \ digital=rite%seven-egment>ins_%i81&`, command_i`&@ ] ] 55 -et the -> 9loc "ivisor void spi3set9loc"ivider%unsigned char divider& \ s+itch%divider& \ case 04 ->'set9loc"ivider %->39)F9.3"*2&@ brea@ case 14 ->'set9loc"ivider %->39)F9.3"*I&@ brea@ case 24 ->'set9loc"ivider %->39)F9.3"*&@ brea@ case G4 ->'set9loc"ivider %->39)F9.3"*1A&@ brea@ case I4 ->'set9loc"ivider %->39)F9.3"*G2&@ brea@ case K4 ->'set9loc"ivider %->39)F9.3"*AI&@ brea@ case A4 ->'set9loc"ivider %->39)F9.3"*12&@ brea@ default4 ->'set9loc"ivider %->39)F9.3"*I&@ brea@ ] ] void spi3sendeceive%unsigned char command_`& \ if %command_2` NN 1& 559hec to see if this is the first of a series of -> pacets \ spiBytes-ent N 0@ spi9->in N command_G`@ 4
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
spi=ord-ize N command_I`@ 55 -end irst >acetRs "ata Bytes for %int iN0@ i[command_K`@ i& \ 55 f this is the start of a ne+ +ord toggle 9- )F= if % %spiBytes-ent NN 0& ^^ %spiBytes-ent spi=ord-ize NN 0& & \ digital=rite%spi9->in, )F=&@ ] 55 -end -> Byte -erial'print%->'transfer %command_iA`&&@ spiBytes-ent@ 55 f +ord is complete set 9- High if %spiBytes-ent spi=ord-ize NN 0& \ digital=rite%spi9->in, HDH&@ ] ] ] else \ 55 -> "ata >acet 8 -end -> Bytes for %int iN0@ i[command_G`@ i& \ 55 f this is the start of a ne+ +ord toggle 9- )F= if % %spiBytes-ent NN 0& ^^ %spiBytes-ent spi=ord-ize NN 0& & \ digital=rite%spi9->in, )F=&@ ] 55 -end -> Byte -erial'+rite%->'transfer %command_iI`&&@ spiBytes-ent@ 55 f +ord is complete set 9- High if %spiBytes-ent spi=ord-ize NN 0& \ digital=rite%spi9->in, HDH&@ ] ] ] ]
6
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
55 -ynchronizes +ith )ab*<= and sends info about the board and firm+are %Enimplemented& void sync)*%& \ -erial'begin%"<!E)CB!E"!C<&@ i2ceadCimeouts N 0@ spiBytes-ent N 0@ spiBytesCo-end N 0@ -erial'flush%&@ ] 55 9ompute >acet 9hecsum unsigned char checsum39ompute%unsigned char command_`& \ unsigned char checsum@ for %int iN0@ i[%9F??!/")acet 9hecsum !nd Cest !gainst ncluded 9hecsum int checsum3Cest% unsigned char command_`& \ unsigned char checsum N checsum39ompute%command&@ if %checsum NN command_9F??!/")in&@ if %cont!cq-peedW1000& 55delay ?icroseconds is only accurate for values less that 1AGG \ 47
LabView + Arduino Guía de Iniciación
Ing. Carlos A. Guzmán Hdez.
-erial'+rite% %ret*al WW 2&&@ delay?icroseconds %delayCimeY1000000&@ 55"elay for neccesary amount of time to achieve desired sample rate ] else \ -erial'+rite% %ret*al O 0;& &@ -erial'+rite% %ret*al WW &&@ delay%delayCimeY1000&@ ] ] ] void finite!cquisition%int analog>in, float acquisition-peed, int numberFf-amples& \ 55+ant to e;it this loop every ms acquisition>eriodN15acquisition-peed@ for %int iN0@ i[numberFf-amples@ i& \ ret*al N analogead%analog>in&@ if %acquisition-peedW1000& \ -erial'+rite% %ret*al WW 2&&@ delay?icroseconds %acquisition>eriodY1000000&@ ] else \ -erial'+rite% %ret*al O 0;& &@ -erial'+rite% %ret*al WW &&@ delay%acquisition>eriodY1000&@ ] ] ] void lcd3print%unsigned char command_`& \ if %command_2` N 0& \ 55 Base -pecified By Eser int base N 0@ s+itch%command_2`& \ case 0;014 55 B/ 4)