Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Muchos me preguntan de como conectar la información que viene por puerto serial de Arduino a Processing. Acă les muestro the way en that yo lo resuelvo, no es la única, pero es bastante efectiva, ya que en Processing, la recepția de date ocurre ca un eveniment, ceea ce înseamnă că nu există probleme de sincronizare cu Arduino. Utilizați un accelerometru LSM 303 pentru exemplu, dar poate fi cu orice senzor.
Materiale
- Arduino UNO
- LSM303 Flora (orice)
Pasul 1: Conexiuni în Arduino
Acelerometrul LSM303 are 4 conexiuni. SDA, SCL, vin, y gnd, Como se ve en la foto. Ai soldat un cablu amarillo al SDA, un cablu verde al SCL, unul roșu la 3V, și unul negru la GND.
Conectați senzorul la Arduino cum se afișează în fotografii. Básicamente, en la foto, el cable amarillo es SDA y se conecta al SDA del arduino, el cable verde es SCL, și se conectează la SCL del arduino. El cable rojo a 3.3V, y el negro a GND en el Arduino. În acest exemplu este conectarea directă la placa de arduino, dar pot face acest lucru printr-un breadboard.
Pasul 2: El Anillo
Pentru a putea face un program de desen în procesare, unde prin intermediul mișcării de la mana se pueda desenează. 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 account. Se poate pegar cu o pistolă de goma calientă sau de presiune.
Pasul 3: El Código Arduino
În codul de Arduino este important să se deschidă portul serial și viteza (în exemplu 9600) trebuie să fie egal în codul de procesare.
Codul în Arduino:
#include
#include // libreria de Adafruit
Adafruit_LSM303 lsm; // prepara el obiect
configurare nulă () {
Serial.begin (9600); // initializa el acelerometro
lsm.begin ();
}
bucla nulă () {
lsm.read (); // lee informația del sensor
// 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);
întârziere (50);
}
Pasul 4: Procesarea codului
În procesare, strategia este scriind un eveniment pentru portul serial, de aceea cale de fiecare dată când intră în infracțiune, procesare în fondul almacenei în variabile, fără importarea vitezei cuadurilor corpului principal al codului de procesare.
Cod:
// creat de Tomas de Camino Beck // pentru senzorul de mișcare a mâinilor
procesare import.serial. *; Port serial;
float coord = new float [3]; // arreglo pentru stocarea datelor
Date șir = "0, 0, 0"; // string que almacena del puerto serial
float x, y, antX, antY; // pentru a crea el dibujo
configurare nulă () {
dimensiune (600, 600);
println (Serial.list ());
port = Serial nou (acesta, "/ dev / ttyACM0", 9600);
port.clear ();
port.bufferUntil ('\ n');
x = lățime / 2;
y = înălțime / 2;
antX = lățime / 2;
antY = înălțime / 2;
netedă (8);
}
draw nul () {
greutate accident vascular cerebral (10);
float x = width-map (coord [0], -2000, 2000, 0, width);
float y = înălțime-hartă (coord [1], -2000, 2000, 0, înălțime);
if (coord [2] <0) {
fundal (255);
x = lățime / 2;
y = înălțime / 2;
antX = lățime / 2;
antY = înălțime / 2;
} altceva {
umplere (0, 150);
linie (antX, antY, x, y);
antX = x;
antY = y;
}
}
void serialEvent (port serial) {
date = port.readString (); // lee del puerto serial
coord = float (split (data, ',')); // separa por comas los datos y los almacena en el arreglo
}
Pasul 5: Poner a Dibujar
Ahora pur și simplu desenează. Al dar vuelta por completo el anillo, se borra todo lo dibujado.