Paso 3: Matlab: vamos a domar a la bestia!
Aquí supongo que estás familiarizado con el entorno de Matlab, por lo menos con la base. Si mi suposición no es correcta, no se asuste, y echar un vistazo aquí: Matlab para principiantes!
Afronto el lado de Matlab de la siguiente manera: va a crear un archivo .m de solo escritura que incluirá todas las funciones que vamos a utilizar. De esta manera, una vez que a comprender cada sección de la secuencia de comandos (MainScript), todo lo que tienes que hacer es iniciar escribiendo su nombre en el espacio de trabajo, y de repente tienes Arduino y su PC intercambiar datos fácilmente y muy bien! Asegúrese de que guardar todos los tres documentos que he adjuntamos en la misma carpeta que tiene que ser seleccionada como la carpeta actual en la ventana "Carpeta actual" en la ventana principal de Matlab. Como regla general que usted debe recordar que tiene Matlab para acceder fácilmente que están citando dentro de la secuencia principal, de lo contrario usted está recibiendo una señal de error de una función no declarada!
Vamos a empezar la secuencia de comandos con el nombre de puerto serie de ahorro en la variable comportamiento. Como te dije antes, asegúrese de que saber el nombre exacto del Arduino está conectado al puerto. Con la nueva sección, nos encargamos de la inicialización de la comunicación serial. Vamos a escribir un archivo de función llamado setupSerial, que acepta como entrada de la cabecera de puerto serie y devuelve el objeto serial arduino y el valor de "serialFlag" que nos dice que se ha creado el objeto serial.
Consejo: Si usted necesita ayuda con la función de sintaxis o con cualquier otro comando de Matlab, no dude en preguntar Matlab! Tienes solo que escriba en la ventana de comandos Matab, "ayuda" seguido por el tema que desea saber más acerca de. Si el tema existe, Matlab le dará una respuesta corta directamente en la viuda de comando, de lo contrario puedes navegar el "navegador de ayuda" escribiendo "doc" en el espacio de trabajo y haga clic en entrar.
Vamos a pasar! Te termino analizando la MainScript antes de tomar en consideración las otras funciones.
Se trata de la sección dedicada a la visualización gráfica de los datos: se crea una figura h , y creó un sistema de una x y el eje y y una línea, que nos ayudará a visualizar los datos que estamos recibiendo de la sensor., son también mantener en mente que cada vez se crea un objeto, cualquiera que sea su tipo (serie objetos una figura, un GUI objetos... ecc) se crea también una serie de propiedades asociadas a él. Puede utilizar estas propiedades para llamar a funciones o crear condiciones para los bucles (mientras, pues, si... ecc). El comando "if(~exist('h','var'))..." tiene más sentido ahora?? ¿No? Escuchar: queremos comprobar si el var de la propiedad del objeto h es igual a cero. Si es el caso que tenemos que crear el objeto de la figura, desde un 0 en la propiedad de var , significa que la cifra aún no existe!!
Ahora vamos a llegar a la última sección de la secuencia de comandos. Aquí tienes algunas líneas que actúan como núcleo de todo el programa: con el bucle "mientras" nos vamos a enviar a Arduino el comando "R", que significa ¡ Hola, leer la temperatura para mí y me devuelva el resultado de su lectura!. Te darás cuenta que tenemos una nueva función dentro del tiempo de bucle es readTemp, brevemente, se encargará de la burocracia que hay detrás de la comunicación serial desde el punto de vista de Matlab. Volverá a ella cuando lo analizo las dos funciones de la escritura. Falta un dato: la velocidad de muestreo, en el cual queremos obtener las lecturas de temperatura. Se expresa mediante el comando "pause" al final de lo tiempo bucle! Si desea seleccionar un valor de temperatura cada hora, tienes que escribir pause(3600) (comando de pausa acepte el parámetro en segundos).
OK, ahora vamos a analizar las dos funciones:
setupSerial: esto crea el objeto serial conectado al puerto serie de Arduino comPort. El comando para crear el objeto serial es simplemente nombre-de-objeto = serie (nombre-de-port). Tan simple como eso! Tenga en cuenta que, como uno de la propiedad del objeto serial, establecemos (utilizando el comando set , seguido por la propiedad cuyo valor desea establecer) la velocidad en baudios de 9600 igual al establecido en el Arduino.
¿readtemp: pocas cosas más necesita ahora: recordar los comandos que utilizamos en Arduino para escribir en y leer del buffer serial, Serial.println y Serial.read? Aquí se sustituyen por fprintf y fscanf respectivamente. Eso es todo. La sintaxis es fácil y se puede comprobar en el navegador de ayuda de Matlab. fprintf requiere, como primera entrada, el objeto serial que queremos escribir, y como segundo dato el carácter nos gustaría enviar (en nuestro caso "R" que significa para nosotros "Leer"). fscanf quiere el objeto serial, y el formato que queremos los datos a visualizar, en nuestro caso un flotante punto número indicado con el símbolo "%f" (DHT 22 valores de temperatura se resuelven hasta un décimo de grado celsius).
Tenga en cuenta que la cantidad de lecturas que van a ser salvos será igual al valor de la variable "buf_len" (el valor predeterminado en la secuencia de comandos es 30, cambiar a su propio antojo!). Después de la lectura 30, se sobrescribirá una nueva primera lectura almacenada en el array "tcdata", que contendrá todos los valores de temperatura en un orden cronológico.