Felix Maocho

Para quien le interese lo que a nosotros nos interesa

1º Ejercicio de comunicaciones – Informar por donde pasa el loop

Por Félix Maocho
6/5/2017
.
Conocimientos que se precisan

Para realizar este ejercicio tal como aquí se resuelve solo se necesitan los conocimientos que se han ido explicando hasta el capítulo “Transmisión de Comunicaciones asíncronas “ que podemos resumir en los siguientes puntos:

Saber establecer una comunicación entre la Tarjeta Arduino y el PC y conocer los mandatos Serial.beguin, Serial.print y Serial.println

Enunciado del ejercicio

En función del valor de un numero aleatorio hay dos caminos posibles el A que recorre si el numero aleatorio es par y el B si el número aleatorio es impar. Se trata de informar a la pantalla del PC el número de loop que se esta ejecutando y si se pasa por el punto A o por el B. El mandato random(max), devuelve de forma aleatoria un valor entre 0 y el valor marcado , excluido este último. De forma que la linea

aleatorio = random(2)

Nos devolverá aleatoriamente dos posibles valores, “0” ó “1”,

  • Si es “o” enviar un mensaje que diga; “loop numero x – Pasa por Punto A”
  • Si es “1” enviar un mensaje que diga; “loop numero x – Pasa por Punto B”

Material necesario

  • Tarjeta Arduino y cable de conexiones.

Objetivo

  • Practicar el manejos de los mandatos Serial.beguin, Serial.print y Serial.println
  • Aprender a “monitorizar” sketch para us puesta a punto

Especificaciones

Al comienzo del loop generamos una valor aleatoria que puede ser 0, ó 1 mediante el mandato “random” que guardamos en la variable  “aleatorio”-
Si “aleatorio” es 0, hacemos escribir en el PC “loop numero x – valor de aleatorio Pasa por Punto A”
en otro caso, hacemos escribir “loop numero x – valor de aleatorio Pasa por Punto B”
siendo x un contador que aumenta en con cada loop

Análisis funcional

Obtenemos el numero aleatorio
si (“aleatorio == 0) , enviamos el mensaje “loop numero x – Pasa por Punto A”
en otro caso enviamos el mensaje “loop numero x – Pasa por Punto B”
sumamos uno al contador

El programa será pues en principio como sigue, aunque aun esta sujetos a cambios que surjan al profundizar mas en el avance del análisis :

*Sketch 9.11 Informar al Pc por donde pasa el Sketch
* Obtenemos con “random” el numero “aleatorio” que es 0 ó 1
* si (“aleatorio == 0) , enviamos el mensaje
* “loop numero x – valor de aleatorio Pasa por Punto A ”
* en otro caso enviamos el mensaje
* “loop numero x – valor de aleatorio Pasa por Punto B ”
* Aumenta el contador una unidad
* Repetir el ciclo*/
// Área de declaración de variables y parámetros
int x =1; // contador de loops
byte aleatorio = 0 ; // puede tener los valores 0 y 1
// Función setup
void setup () {
Serial.begin(9600) ; // empezar la trasmisión, velocidad igual a pantalla del PC
}
void loop() {
aleatorio = random (2); // aleatorio entre 0 y 1
Serial.print(“loop numero “);
Serial.print(x);
Serial.print(” valor de aleatorio “);
Serial.print(aleatorio);
if (0 == aleatorio) {
Serial.println(” – Pasa por punto A”);
}
else{
Serial.println(” – Pasa por punto B”);
}
x=x+1; // suma 1 a x
delay (2000); // linea de retardo para pruebas ************************
}

Observen

El mandato “random(max)” genera un valor aleatorio comprendido entre 0, y (max -1) ambos incluidos, el número devuelto es del tipo long pero como en nuestro caso sólo será 0 o 1 podemos guardarlo en una variable declarada como byte.

Todo lo demás no creo que a estas alturas les cree la menor dificultad para entenderlo. El ejemplo es de una gran sencillez pero permite observar una de las utilidades mas grande las comunicaciones asíncronas como es la puesta a punto de programas.

El resultado de la ejecución del sketch es tal como ven en la siguientye imagen.

Monitorizar un sketch

Cuando trabajamos con el simulador UnoArduSim, o con otros simuladores nos suelen dar herramientas para saber en cualquier momento el valor de las variables y por donde pasa el programa. No ocurre lo mismo cuando estamos y a con el programa y Arduino y trabajando con la tarjeta en real.

Una forma de conocer el valor que adquiere una variable en un determinado punto o saber que esta haciendo el programa es es poner mensajes que bien informan por donde ha pasado como hacemos aquí poniendo ” – Pasa por punto A” y ” – Pasa por punto B”, o bien en donde interese mandar como mensaje el valor de las variables motivo de estudio como nosotros hacemos, con la variable “x“ y sobre todo “aleatoria” que si no fuese por este sistema, nunca podríamos saber el valor que toma.

Una de los usos más típicos de esta comunicación es en la fase de poner a punto un programa, Cuando un programa es un poco enrevesado, puede haber errores que sea difíciles de localizar en que punto del programa se producen, porque por algún pequeño defecto, como por ejemplo haber puesto mal los corchetes de inicio final de las funciones tipo “if” hacen que el programa actúe de forma imprevista. En estos casos, resulta útil colocar en lugares estratégicos mandatos que carguen el valor de las variables en esos puntos y los manden al PC para analizar si están adquiriendo o no el valor previsto.

Uso como fuente de captura de datos para ser utilizados en un PC

Otra uso habitual es recibir información en el PC de aquellos valores que queremos conservar y elaborar, como por ejemplo hacer gráficas de temperaturas que se alcanzan en algún proceso industrial, bien como control de calidad, bien simplemente para controlar el proceso. Por ejemplo coordinando el ángulo de giro de una plataforma rotatoria y la altura de un sensor de distancias, podemos hacer un scanner de tres dimensiones e ir enviando esas medidas a un Pc, para construir la imagen tridimensional de los objetos puestos en estudio.

Félix Maocho

indice
<

Anuncios

6 mayo 2017 - Posted by | Curso de Arduino, Robotica | , ,

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: