Tabla de contenido:

Transición gráfica de procesamiento Arduino: 5 pasos
Transición gráfica de procesamiento Arduino: 5 pasos

Video: Transición gráfica de procesamiento Arduino: 5 pasos

Video: Transición gráfica de procesamiento Arduino: 5 pasos
Video: SERIE HMI #0: INTERFAZ GRAFICA DE CONTROL - ARDUINO - ESP32 - GUI 2024, Noviembre
Anonim
Transición gráfica de procesamiento Arduino
Transición gráfica de procesamiento Arduino

Hola, este proyecto es para hacer gráficos visibles a partir de partículas invisibles que podrían ser detectadas por sensores. En este caso, utilicé el sensor ultrasónico y el fotorresistor para controlar la luz y la distancia. Lo visualizo haciendo las variables del sensor como variables en procesamiento. Luego conecto Arduino y Processing para controlar Arduino con Processing. Así, el gráfico en Processing aplicaría variables del sensor Arduino.

Paso 1: Paso 1: Prepare las piezas

Paso 1: preparar las piezas
Paso 1: preparar las piezas

Estos son los componentes que necesitará para realizar este proyecto:

- 10k OHMIOS

- Sensor ultrasónico

- Fotorresistor

- Arduino Uno

- 7 hilos

Paso 2: Paso 2: Conecte todos los componentes

Paso 2: conecte todos los componentes
Paso 2: conecte todos los componentes

El fotorresistor y el sensor ultrasónico necesitan un espacio para una detección precisa. Ahorre algo de espacio y piense en la luz para la fotorresistencia.

Paso 3: Paso 3: ¡Código

Paso 3: ¡Código!
Paso 3: ¡Código!

* Agregar biblioteca tanto en Arduino como en Processing.

Arduino: busque "nuevo ping" en la biblioteca

Procesamiento: busque "serial" en la biblioteca

Código para Arduino:

#incluir

#define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200

Sonda NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

int lightSensorPin = A0; int analogValue = 0;

configuración vacía () {Serial.begin (9600); }

bucle vacío () {int Valor1 = sonar.ping_cm (); Valor1 = mapa (Valor1, 1, 60, 500, 24); Valor1 = restringir (Valor1, 24, 500);

analogValue = analogRead (lightSensorPin); int cVal1 = map (analogValue, 200, 600, 249, 100);

int cVal2 = map (analogValue, 200, 600, 247, 97);

int cVal3 = map (analogValue, 200, 600, 243, 101);

int cVal4 = map (analogValue, 200, 600, 243, 150);

retraso (50);

Serial.print (Value1); Serial.print (",");

Serial.print (cVal1); Serial.print (","); Serial.print (cVal2); Serial.print (","); Serial.print (cVal3); Serial.print (","); Serial.print (cVal4); Serial.print (",");

Serial.println (); }

Código de procesamiento:

// clase: (básico) //

procesamiento de importación.serie. *;

int end = 10; Serie de cadena; Puerto serial;

int pcount = 350; Partícula p = nueva partícula [pcount]; int diagonal; int e = 100;

configuración vacía () {puerto = nueva serie (esto, "/dev/cu.usbmodem141101"); port.clear (); serial = port.readStringUntil (fin); serial = nulo; para (int i = 0; i

rotación del flotador = 0;

vacío dibujar () {while (puerto disponible ()> 0) {serial = puerto.readStringUntil (final); retraso (10); } if (serial! = null) {String a = split (serial, ','); println (a [0]); println (a [1]); println (a [2]); println (a [3]); println (a [4]); int resultado1 = Integer.parseInt (a [0]); System.out.println (resultado1); frameRate (resultado1); int result2 = Integer.parseInt (a [1]); System.out.println (resultado2); int result3 = Integer.parseInt (a [2]); System.out.println (resultado3); int result4 = Integer.parseInt (a [3]); System.out.println (resultado4); int result5 = Integer.parseInt (a [4]); System.out.println (resultado5); fondo (resultado2, resultado3, resultado4); traducir (ancho / 2, alto); rotación- = 0,0005; rotar (rotación); para (int i = 0; i diagonal) {p = new Particle (); }}}}

// clase: Partícula //

class Particle {float n; flotar r; flotar o; flotar c; flotar d; int l; Partícula () {l = 100; n = aleatorio (3, ancho / 2); r = aleatorio (0.10, TWO_PI); o = aleatorio (1, aleatorio (1, ancho / n)); c = aleatorio (180, 228); d = aleatorio (160, 208); } vacío dibujar () {l ++; pushMatrix (); rotar (r); traducir (dibujarDist (), 1); elipse (10, 10, ancho / o / 4, ancho / o / 4); popMatrix (); o- = 0,06; } float drawDist () {return atan (n / o) * ancho / HALF_PI; }}

Paso 4: Paso 4: Conectar y probar

Paso 4: conectar y probar
Paso 4: conectar y probar

Paso 5: Paso 5: ¡Vea el resultado

Paso 5: ¡Vea el resultado!
Paso 5: ¡Vea el resultado!

La velocidad de la bola en movimiento será más rápida cuando algo esté más cerca del sensor ultrasónico. Además, el control de luz con fotorresistencia aparecerá durante el procesamiento como oscuridad de fondo.

Recomendado: