Usaremos como referencia un tutorial anterior (ver el siguiente link: "Comunicación serial (Primera parte)"), vamos a leer el valor de la resistencia de un potenciómetro conectado al pin A0 de Arduino. Éstos datos se van a mostrar a través de Processing usando una librería graficadora para mostrar los datos usando dos ejes Y y X tal como sería el caso de una función.
La conexión es la siguiente:
La conexión es la siguiente:
# PIN A0 : Arduino UNO => PIN CENTRAL : Potenciómetro
# GND : Arduino UNO => EXTREMO : Potenciómetro
# 5V : Arduino UNO => EXTREMO : Potenciómetro
/* PROGRAMA DE PRUEBA DE COMUNICACION SERIAL
CONEXION:
Arduino (A0) : Pin central potenciometro
Arduino (GND): Pin extremo potenciometro
Arduino (5V) : Pin extremo potenciometro
El siguiente programa nos ayuda a realizar la lectura del votlaje del potenciometro y mostrarlo por puerto serial.
Autor: Carolina G.
http://beetlecraft.blogspot.pe/
El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera ocasionar el mal funcionamiento
de la plataforma de uso de la misma no es responsabilidad del autor
*/
int sensor = 0; // Indica el pin de entrada analogico
int val = 0; // Variable de almacenamiento del valor del potenciometro
void setup() {
Serial.begin(9600); // Inicia el Puerto Serial
}
void loop() {
val = analogRead(sensor) / 4; // Lee el valor del potenciometro y lo convierte en 1 byte (0 a 255)
Serial.write(val); // Envia la variable al puerto serial
delay(100); // Espera 100 milisegundos
}
Al abrir el Monitor Serial de Arduino obtenemos el siguiente resultado:
La librería que buscaremos es "gwoptics", para ello, debemos la buscaremos en "Sketch - Import library - Add library" para saber un poco más puede entrar al siguiente link "Descargar librerías en Processing".
Luego damos click en "Install".
Esperamos que la librería se descargue.
El programa que usaremos en Processing es el siguiente:
/*
PROGRAMA PARA GRAFICACION CON PROCESSING
CONEXION:
Arduino (A0) : Pin central potenciometro
Arduino (GND): Pin extremo potenciometro
Arduino (5V) : Pin extremo potenciometro
El siguiente programa nos ayuda a realizar la lectura del voltaje del potenciometro.
El sketch de graficos usa cadenas en código ASCII desde el puerto serial a 9600 baud y
la grafica. Debe recibir valores de 0 a 255 y luego pasar a una nueva línea
Autor: Carolina G.
http://beetlecraft.blogspot.pe/
El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que
pudiera ocasionar el mal funcionamiento de la plataforma de uso de la misma no es
responsabilidad del autor
*/
// Configuracion de la libreria de Graph2D
import org.gwoptics.graphics.graph2D.Graph2D;
import org.gwoptics.graphics.graph2D.LabelPos;
import org.gwoptics.graphics.graph2D.traces.Line2DTrace;
import org.gwoptics.graphics.graph2D.traces.ILine2DEquation;
Graph2D g; // Creacion del objeto para Graph 2D
import processing.serial.*; // libreria para uso de puerto serial
Serial puerto; // El puerto serial
int xPos = 70; // Posicion horizontal del grafico
float val; // Data que se recibe del puerto serial, tipo float
void setup () {
size(500, 370); // Tamano de la pantalla
background(100); // Color de la pantalla de fondo
String ArduinoPuerto = Serial.list()[0]; // Encuentra el primer puerto serial para iniciar la comunicacion
puerto = new Serial(this, ArduinoPuerto, 9600); // Inicio de la comunicacion con el primer puerto encontrado
g = new Graph2D(this, 400, 300, false);
// Definicion de los ejes Y y X
g.setYAxisMin(0); // Valor minimo del eje Y
g.setYAxisMax(5); // Valor maximo del eje Y
g.setYAxisLabel("Voltaje"); // Rotulado del eje Y
g.setXAxisMin(0); // Valor minimo del eje X
g.setXAxisMax(5); // Valor maximo del eje X
g.setXAxisLabel("Tiempo"); // Rotulado del eje X
g.setXAxisTickSpacing(0.5); // Resolucion del espaciamiento del eje X
g.setYAxisTickSpacing(0.5); // Resolucion del espaciamiento del eje Y
g.position.x = 70; // Offset del eje X
g.position.y = 20; // Offset del eje Y
}
void draw () {
lectura(); // Rutina de adquisicion de datos del potenciometro
float val_mod = val; // Modificacion del dato leido
val_mod = 50 + (350 - 50)/(5 - 0) * val_mod; // Extrapolacion lineal para poder ubicar el grafico
println("Valor del potenciometro: " + val); // Muestra el dato en el puerto serial
println("Valor modificado: " + val_mod); // Muestra el dato en el puerto serial modificado
g.draw(); // Graficacion de los ejes
stroke(24, 237, 235); // Color de la linea
// Tipos de graficaciones
// line(xPos, height - val_mod, xPos, height - 50); // Dibuja la linea
// point(xPos, height - val_mod); // Dibuja puntos
// ellipse(xPos, height - val_mod, 0.5, 0.5); // Dibuja por elipses
println("Valor modificado: " + val_mod); // Muestra el dato en el puerto serial modificado
if (xPos >= 470) { // Verifica que hemos llegado al limite de pantalla
xPos = 70; // Reseteo de la posicion a la posicion inicial
background(100); // Fondo de pantalla
}
else { xPos++; } // Nos movemos en la posicion horizontal
}
void lectura() {
if (puerto.available() > 0) { // Si hay datos en el buffer del puerto serial
val = puerto.read(); // Lectura de los datos del puerto serial
val = map(val, 0, 255, 0, 5); // Conversion del valor leido
}
}
El primer resultado es el siguiente:
Si quitamos "//" a la línea siguiente:
// Tipos de graficaciones line(xPos, height - val_mod, xPos, height - 50); // Dibuja la linea // point(xPos, height - val_mod); // Dibuja puntos // ellipse(xPos, height - val_mod, 0.5, 0.5); // Dibuja por elipses
El resultado es:
Si quitamos "//" a la línea siguiente:
// Tipos de graficaciones // line(xPos, height - val_mod, xPos, height - 50); // Dibuja la linea point(xPos, height - val_mod); // Dibuja puntos // ellipse(xPos, height - val_mod, 0.5, 0.5); // Dibuja por elipses
El resultado es:
Si quitamos "//" a la línea siguiente:
// Tipos de graficaciones // line(xPos, height - val_mod, xPos, height - 50); // Dibuja la linea // point(xPos, height - val_mod); // Dibuja puntos ellipse(xPos, height - val_mod, 0.5, 0.5); // Dibuja por elipses
El resultado es:
Autor:









No hay comentarios:
Publicar un comentario