DESARROLLO DEL EXPERIMENTO
Para esta experiencia, realizaremos la lectura de dos potenciómetro que lo realizará un Arduino que tendrá la función de mandar los datos a la computadora por puerto serial y lo mostrará por medio de un gráfico en Processing. Las conexiones se muestran a continuación:
# PIN A0 : Arduino UNO => PIN CENTRAL : Potenciómetro 1
# PIN A1 : Arduino UNO => PIN CENTRAL : Potenciómetro 2
# PIN A1 : Arduino UNO => PIN CENTRAL : Potenciómetro 2
# GND : Arduino UNO => EXTREMO : Potenciómetro 1 y 2
# 5V : Arduino UNO => EXTREMO : Potenciómetro 1 y 2
El programa usado para Arduino es el siguiente:
/*
PROGRAMA DE PRUEBA DE COMUNICACION SERIAL CON MULTIVARIABLE
CONEXION:
Arduino (A0) : Pin central potenciometro 1
Arduino (GND): Pin extremo potenciometro 1
Arduino (5V) : Pin extremo potenciometro 1
Arduino (A1) : Pin central potenciometro 2
Arduino (GND): Pin extremo potenciometro 2
Arduino (5V) : Pin extremo potenciometro 2
El siguiente programa nos ayuda a realizar la lectura del votlaje de 2 potenciometro y mostrarlo por
puerto serial.
Autor: Renato H.
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 POT_1 = 0, POT_2 = 0; // Variable de almacenamiento del valor del potenciometro
void setup(){
Serial.begin(9600); // Inicio de comunicacion a 9600 bps
}
void loop(){
POT_1 = analogRead(A0); // Lectura del pin A0 correspondiente al voltaje
POT_2 = analogRead(A1); // Lectura del pin A0 correspondiente al voltaje
POT_1 = map(POT_1, 0, 1023, 0, 100); // Conversion de datos a formato de 0 a 100%
POT_2 = map(POT_2, 0, 1023, 0, 100); // Conversion de datos a formato de 0 a 100%
Serial.print('P'); // Cabecera de inicio de comunciacion
Serial.print(","); // Separacion de la cabecera
Serial.print(POT_1, DEC); // Envio del dato de lectura del potenciometro 1
Serial.print(","); // Separacion del primer dato
Serial.print(POT_2, DEC); // Envio del dato de lectura del potenciometro 2
Serial.print(","); // Separacion del segundo dato
Serial.println(); // Manda un LF (Line feed)
delay(100); // Espera de 100 ms
}
El resultado abriendo el Monitor Serial se muestra a continuación:El programa en Processing es el siguiente:
/*
PROGRAMA DE PRUEBA DE COMUNICACION SERIAL CON MULTIVARIABLE
CONEXION:
Arduino (A0) : Pin central potenciometro 1
Arduino (GND): Pin extremo potenciometro 1
Arduino (5V) : Pin extremo potenciometro 1
Arduino (A1) : Pin central potenciometro 2
Arduino (GND): Pin extremo potenciometro 2
Arduino (5V) : Pin extremo potenciometro 2
El siguiente programa nos ayuda a realizar la lectura del voltaje de 2 potenciometro y mostrarlo por
puerto serial.
Autor: Renato H.
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
*/
import processing.serial.*; // Inicio de la comunicación serial
Serial puerto; // Crea el puerto serial
char cabecera = 'P'; // Cabecera de inicio de mensaje
short LF = 10; // ASCII linefeed
int POT_1, POT_2; // Variable de almacenamiento del potenciometro
void setup() {
size(100, 150); // Tamaño de la pantalla
/* NOTA IMPORTANTE:
El primer puerto serial reconocido por Serial.list() deberia ser tu Arduino. Si no es asi, borra los
"//" de la ultima linea de este comentario. Ponle PLAY al sketch de nuevo para ver la lista de puertos
seriales. Entonces, cambia el 0 al numero de puerto al que está conectado tu arduino
*/
// println(Serial.list());
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
}
void draw() {
String mensaje = puerto.readStringUntil(LF); // Lee todo el mensaje hasta encontrar el linefeed
if (mensaje != null) { // Si el dato no es null
// Muestra en pantalla del mensaje original
print("Mensaje original: ");
print(mensaje);
String [] data = mensaje.split(","); // Division del mensaje a partir de la coma ","
if (data[0].charAt(0) == cabecera && data.length > 3){ // Verifica la cabecera y el tamaño del dato
// Lectura de los datos divididos
for (int i = 1; i < data.length - 1; i++){
println("Valor potenciometro " + i + ": " + data[i]);
POT_1 = Integer.parseInt(data[1]); // Conversion del dato 1 del String a Integer
POT_2 = Integer.parseInt(data[2]); // Convserion del dato 2 del String a Integer
}
println(); // Espacio de division para el siguiente mensaje
}
}
background(167); // Rellena el espacio de trabajo de color plomo
fill(0); // Llena el espacio del rectangulo dibujado en negro
rect(0, 0, POT_1, 50); // Dibujo del rectangulo 1
rect(0, 100, POT_2, 50); // Dibujo del rectangulo 2
}
El resultado que nos muestra en pantalla es el siguiente:Autor:





No hay comentarios:
Publicar un comentario