Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Muchos me preguntan de como conectar la información que viene por puerto serial de Arduino a Processing. Acá les muestro la manera en que yo lo resuelvo, no es la única, pero es bastante efectiva, ya que en Processing, la recepción de datos ocurre como un evento, lo que značajan que no hay problemas de sincronización con Arduino. Upotrijebite un acelerómetro LSM 303 za el emplo, pero puede ser con cualquier senzor.
Materiales
- Arduino UNO
- LSM303 Flora (cualquier)
Korak 1: Conexiones En Arduino
El acelerómetro LSM303 veže 4 koneksiona. SDA, SCL, vin, y gnd, Como se ve en la foto. Možete prodati kabelski amarillo u SDA -u, u kabl u SCL -u, spojiti 3V, a negdje i GND.
Spojnik senzora al Arduino koji se može prikazati na fotografijama. Básicamente, en la foto, el cable amarillo es SDA y se conecta al SDA del arduino, el cable verde es SCL, y se conecta al SCL del arduino. Kabel za napajanje 3.3 V, crni za GND i el Arduino. En este ejemplo lo conecto directo a la placa de arduino, pero pueden hacerlo a través de un breadboard.
Korak 2: El Anillo
Para poder hacer un program de dibujo en processing, donde a través del movimiento de la mano se pueda dibujar. Metemos el acelerómetro dentro de un anillo impreso en impresora 3D.
El modelo sencillo del anillo está acá. Pueden modificarlo allí mismo en tinkercad si hacen una cuenta. Se puede pegar con una pistola de goma caliente o a presión.
Korak 3: El Código Arduino
En el código de Arduino es importante abrir el puerto serial y la velocidad (en el ejemplo 9600) debe ser igual en el código de processing.
Código en el Arduino:
#uključi
#include // libreria de Adafruit
Adafruit_LSM303 lsm; // priprema el objeto
void setup () {
Serial.begin (9600); // inicializa el acelerometro
lsm.begin ();
}
void loop () {{100} {101}
lsm.read (); // informacije o senzoru
// manda la lectura a serial
Serial.print ((int) lsm.accelData.x);
Serial.print (",");
Serial.print ((int) lsm.accelData.y);
Serial.print (",");
Serial.println ((int) lsm.accelData.z);
kašnjenje (50);
}
Korak 4: Código En Obrada
En processing, la estrategia es escrivir un evento para el puerto serail, de esa manera cada vez que entra infromación, processing en el fondo lo almacena en variables, sin importar la velocidad de los cuadros del cuerpo principal del código de processing.
Código:
// izradio Tomas de Camino Beck // za senzor pokreta ruke
uvoz obrada.serial.*; Serijski port;
float koord = novi plovak [3]; // arreglo para almacenar los datos
Niz podataka = "0, 0, 0"; // niz que almacena del puerto serial
float x, y, antX, antY; // para crear el dibujo
void setup () {
veličina (600, 600);
println (Serial.list ());
port = novi serijski (ovaj, "/dev/ttyACM0", 9600);
port.clear ();
port.bufferUntil ('\ n');
x = širina/2;
y = visina/2;
antX = širina/2;
antY = visina/2;
glatka (8);
}
void draw () {
strokeWeight (10);
float x = width -map (koord [0], -2000, 2000, 0, width);
float y = visinska karta (koord [1], -2000, 2000, 0, visina);
ako (koord [2] <0) {
pozadina (255);
x = širina/2;
y = visina/2;
antX = širina/2;
antY = visina/2;
} else {
ispuniti (0,150);
linija (antX, antY, x, y);
antX = x;
antY = y;
}
}
void serialEvent (serijski port) {
podaci = port.readString (); // lee del puerto serijski
koord = float (split (podaci, ',')); // separa por comas los datos y los almacena en el arreglo
}
Korak 5: Poner a Dibujar
Ahora simplemente dibujar. Al dar vuelta por completo el anillo, se borra todo lo dibujado.