Last active
August 29, 2015 14:07
-
-
Save jerivas/585cec0f9ef9eb5b1f14 to your computer and use it in GitHub Desktop.
Gráficos de dispersión con Arduino y Processing por puerto serie
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Incluir la librería de Encoder | |
// http://www.pjrc.com/teensy/td_libs_Encoder.html | |
#include <Encoder.h> | |
// Inicializar un encoder conectado a los pines 2 y 3 | |
Encoder encoder(2, 3); | |
// Variables para almacenar valores de encoder y ADC | |
long enc_old = 0; | |
int adc_now = 0; | |
// Rutina de configuración | |
void setup() { | |
// Iniciar la comunicación por el puerto serie | |
Serial.begin(9600); | |
} | |
// Rutina principal | |
void loop() { | |
// Leer valor actual del encoder | |
long enc_now; | |
enc_now = encoder.read(); | |
// Leer valor actual del ADC (pin A0) | |
adc_now = analogRead(0); | |
// Ejecutar este bloque solo si la posición del encoder ha cambiado | |
if (enc_now != enc_old) { | |
// Enviar el valor del encoder y del ADC separados por coma por el puerto serie | |
Serial.print(enc_now); | |
Serial.print(", "); | |
Serial.print(adc_now); | |
Serial.println(); | |
// Almacenar la posición actual del encoder para referencia el siguiente ciclo | |
enc_old = enc_now; | |
} | |
// Reiniciar el valor del encoder si se recibe cualquier dato por el puerto serie | |
if (Serial.available()) { | |
Serial.read(); | |
encoder.write(0); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Importar la librería de puerto serie | |
import processing.serial.*; | |
// Instancia del puerto serie a utilizar | |
Serial myPort; | |
// Variable que almacena la posicion actual en X | |
float xPos = 0; | |
// Variable que almacena la última posición conocida en Y | |
float yPosOld = 0; | |
// Rutina de configuración | |
void setup () { | |
// Crear ventana de 800x600px | |
size(800, 600); | |
// Establecer color del trazo | |
stroke(#A8D9A7); | |
// Obtener lista de puertos serie disponibles | |
println(Serial.list()); | |
// Iniciar comunicación en el primer puerto serie disponible | |
String portName = Serial.list()[0]; | |
myPort = new Serial(this, portName, 9600); | |
// Pintar el fondo de la ventana de un color oscuro | |
background(#081640); | |
} | |
// Rutina principal | |
void draw () { | |
// Actualmente esta rutina no hace nada. Todo sucede en serialEvent() | |
} | |
// Rutina que se ejecuta cada vez que se reciben datos del puerto | |
void serialEvent (Serial myPort) { | |
// Leer el byte recibido | |
int inByte = myPort.read(); | |
// Mostrarlo en pantalla | |
// println(inByte); | |
// Obtener la posición en Y actual | |
float yPos = height - inByte; | |
// Dibujar el trazo entre el punto anterior y el actual | |
line(xPos-1, yPosOld, xPos, yPos); | |
// Guardar la posición actual en Y para el siguiente punto | |
yPosOld = yPos; | |
// Reiniciar la posición en X si se llega al final de la ventana | |
if (xPos >= width) { | |
xPos = 0; | |
// Si no, incrementar la posición en X para el proximo punto | |
} else { | |
xPos++; | |
} | |
} | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mode.id=processing.mode.java.JavaMode | |
mode=Java |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment