Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
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
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
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
* 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 5: 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.