Comunicacion serial Arduino - Scilab
Universidad de Guadalajara - CUCEI
I7292 - Sistemas de Medicion
Ing. Roberto C. Barragan
En este documento se daran las indicaciones para poder realizar una comunicacion serial (puerto USB)
entre la computadora y algun otro dispositivo externo, que en este caso sera un Arduino. Antes de
comenzar sera necesario que se familiaricen con los siguientes temas:
Scripts - Introduccion a Scilab, Cap. 4, pag. 22,23.
Ordenes y control de flujo - Introduccion Scilab, Cap. 4, pags. 27-30.
Modulos ATOMS en Scilab
Lo primero que tienen que hacer es instalar la herramienta de comunicacion serial en Scilab, para hacer
esto necesitamos estar conectados a internet. Sigan los siguientes pasos:
1. Abrir Scilab.
2. Dar clic en Applications/Module manager - ATOMS.
3. Se abrira una ventana con nombre Main categories - ATOMS, en la lista del lado izquierdo busca-
mos la carpeta con nombre Signal Processing. Seleccionamos la herramienta Serial Communication
Toolbox y damos clic en Install.
4. Una vez instalado cerramos Scilab por completo y lo volvemos abrir. Si la herramienta ha sido
instalada correctamente en la consola de Scilab aparecera un mensaje que dice Start Serialport.
Programacion para la comunicacion serial
El siguiente codigo puede ejecutarse desde la consola de Scilab. Sin embargo, resulta mas practico utilizarlo
mediante scripts de programacion dentro del mismo Scilab. Sino tienes idea de lo que se esta hablando,
es porque no leste acerca de los temas que se mencionan al inicio del documento, te sugiero que los leas.
Script con el codigo para la comunicacion con el puerto serial.
clear; // Borra todas las variables.
clc; // Limpia la consola de Scilab.
clf; // Cierra cualquier grafica de Scilab.
n=200; // Numero de datos que se quieren almacenar.
h=openserial(COM4,"9600,n,8,2"); // Abre el puerto de comunicacion serial.
iniciar = input("Pulse 1 para iniciar: ") // Captura la informacion ingresada en el teclado.
i = iniciar;
while i < n
data(i) = strtod(readserial(h)); // Recepcion del dato.
if data(i) == %nan // Verifica que el dato sea un numero.
then data(i = data(i-1)); // Si data(i) no es numero asigna el valor anterior.
end
plot(i,data(i),b-o); // Grafica el ultimo dato recibido.
drawnow();
xpause(100000); // Retardo en microsegundos.
i=i+1;
end
closeserial(h) // Cierra el puerto de comunicacion serial.