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