Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Vi kan forberede informasjonen om informasjonen som kan sendes til en serie i 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 significanta que no hay problemsas sincronización con Arduino. Bruker en akselerometri LSM 303 for en enhet, men kan brukes som en vanlig sensor.
Materialer
- Arduino UNO
- LSM303 Flora (cualquier)
Trinn 1: Conexiones En Arduino
El acelerómetro LSM303 tiene 4 sammenhenger. SDA, SCL, vin, y gnd, Como se ve en la foto. Yo soldé un cable amarillo al SDA, un cable verde al SCL, uno rojo a 3V, y uno negro a GND.
Conectar el sensor al Arduino como se muestra en las fotos. 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. El -kabelen er 3,3V, og den har en GND og en Arduino. En este ejemplo lo conecto directo a la placa de arduino, pero pueden hacerlo a través de un breadboard.
Trinn 2: El Anillo
For poder hacer un programa 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 and impresora 3D.
El modello 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.
Trinn 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:
#inkludere
#include // libreria de Adafruit
Adafruit_LSM303 lsm; // prepara el objeto
ugyldig oppsett () {
Serial.begin (9600); // inicializa el acelerometro
lsm.begin ();
}
void loop () {
lsm.read (); // les informasjon om sensoren
// 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);
forsinkelse (50);
}
Trinn 4: Behandle
En behandling, 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.
Informasjon:
// laget av Tomas de Camino Beck // for håndbevegelsessensor
import behandling. serie.*; Seriell port;
float coord = new float [3]; // arreglo para almacenar los datos
Strengdata = "0, 0, 0"; // string que almacena del puerto serial
flyte x, y, antX, antY; // para crear el dibujo
ugyldig oppsett () {
størrelse (600, 600);
println (Serial.list ());
port = ny seriell (dette, "/dev/ttyACM0", 9600);
port.clear ();
port.bufferUntil ('\ n');
x = bredde/2;
y = høyde/2;
antX = bredde/2;
antY = høyde/2;
glatt (8);
}
ugyldig trekning () {
slagvekt (10);
flyte x = bredde -kart (koord [0], -2000, 2000, 0, bredde);
float y = høyde -kart (koord [1], -2000, 2000, 0, høyde);
hvis (koord [2] <0) {
bakgrunn (255);
x = bredde/2;
y = høyde/2;
antX = bredde/2;
antY = høyde/2;
} annet {
fyll (0, 150);
linje (antX, antY, x, y);
antX = x;
antY = y;
}
}
void serialEvent (seriell port) {
data = port.readString (); // lee del puerto serial
coord = float (split (data, ',')); // separa por comas los datos y los almacena en el arreglo
}
Trinn 5: Poner en Dibujar
Ahora simplemente dibujar. Al dar vuelta por completo el anillo, se borra todo lo dibujado.