Sommario:

Conexión Serial Arduino a Processing (acelerómetro En Anillo): 5 passaggi
Conexión Serial Arduino a Processing (acelerómetro En Anillo): 5 passaggi

Video: Conexión Serial Arduino a Processing (acelerómetro En Anillo): 5 passaggi

Video: Conexión Serial Arduino a Processing (acelerómetro En Anillo): 5 passaggi
Video: Amazing arduino project 2024, Luglio
Anonim
Conexión Serial Arduino a Processing (acelerómetro En Anillo)
Conexión Serial Arduino a Processing (acelerómetro En Anillo)

Muchos me preguntan de come 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 significa que no hay problemas de sincronización con Arduino. Utilizzare un acelerómetro LSM 303 per l'ejemplo, pero puede ser con cualquier sensor.

materiali

  1. Arduino UNO
  2. LSM303 Flora (cualquier)

Passaggio 1: Conexiones En Arduino

Conexiones En Arduino
Conexiones En Arduino
Conexiones En Arduino
Conexiones En Arduino
Conexiones En Arduino
Conexiones En Arduino
Conexiones En Arduino
Conexiones En Arduino

L'accelerometro LSM303 tiene 4 connessioni. SDA, SCL, vin, y gnd, Como se ve en la foto. Si vende un cavo amarillo al SDA, un cavo verde al SCL, uno rosso a 3V, e uno nero a GND.

Collega il sensore al Arduino come se muestra en las fotos. Fondamentalmente, nella foto, il cavo amarillo es SDA e se collegato al SDA dell'arduino, il cavo verde es SCL, e se collegato al SCL dell'arduino. Il cavo rosso a 3.3V, e il nero a GND e l'Arduino. En este ejemplo lo conecto directo a la placa de arduino, pero pueden hacerlo a través de un breadboard.

Fase 2: El Anillo

El Anillo
El Anillo
El Anillo
El Anillo

Para poder hacer un programa de dibujo en processing, donde a través del movimiento de la mano se pueda dibujar. Metemos el accelerómetro dentro un anello impresso in impressione 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.

Passaggio 3: El Código Arduino

El Codigo Arduino
El Codigo Arduino

En el código de Arduino è importante abrir el puerto serial y la velocidad (en el ejemplo 9600) debe ser igual en el código de processing.

Codice in el Arduino:

#includere

#include //libreria de Adafruit

Adafruit_LSM303 lsm; //prepara l'oggetto

void setup() {

Serial.begin(9600); //inicializa el acelerometro

lsm.begin();

}

ciclo vuoto() {

lsm.read();//leggi l'informazione del sensore

//manda la lezione a seriale

Serial.print((int)lsm.accelData.x);

Serial.print(", ");

Serial.print((int)lsm.accelData.y);

Serial.print(", ");

Serial.println((int)lsm.accelData.z);

ritardo(50);

}

Passaggio 4: elaborazione del codice in corso

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 variabili, sin importar la velocidad de los cuadros del cuerpo principal del código de processing.

Codice:

// creato da Tomas de Camino Beck//per sensore di movimento della mano

import processing.serial.*; Porta seriale;

float coord = nuovo float[3]; //arreglo para almacenar los datos

Dati stringa = "0, 0, 0"; //string que almacena del puerto serial

float x, y, antX, antY; //para crear el dibujo

void setup() {

dimensione (600, 600);

println(Serial.list());

port = new Serial(this, "/dev/ttyACM0", 9600);

port.clear();

port.bufferUntil('\n');

x = larghezza/2;

y=altezza/2;

antX=larghezza/2;

antY=altezza/2;

liscio(8);

}

disegno vuoto() {

corsaPeso(10);

float x = width-map(coord[0], -2000, 2000, 0, width);

float y = mappa altezza(coord[1], -2000, 2000, 0, altezza);

if (coord[2]<0) {

sfondo(255);

x = larghezza/2;

y=altezza/2;

antX=larghezza/2;

antY=altezza/2;

} altro {

riempimento(0, 150);

riga(antX, anY, x, y);

formicaX= x;

antY= y;

}

}

void serialEvent (porta seriale) {

data = port.readString(); //lee del porto seriale

coord = float(split(data, ', ')); //separa por comas los datos y los almacena en el arreglo

}

Passaggio 5: Poner a Dibujar

Poner a Dibujar
Poner a Dibujar

Ahora semplicemente dibujar. Al dar vuelta por completo el anillo, se borra todo lo dibujado.

Consigliato: