Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Hallo, dieses Projekt dient dazu, sichtbare Grafiken aus unsichtbaren Partikeln zu erstellen, die von Sensoren erfasst werden könnten. In diesem Fall habe ich den Ultraschallsensor und den Fotowiderstand verwendet, um Licht und Abstand zu steuern. Ich visualisiere es, indem ich die Variablen des Sensors als Variablen in der Verarbeitung mache. Dann verbinde ich Arduino und Processing, um Arduino mit Processing zu steuern. Somit würde die Grafik in Processing Variablen vom Arduino-Sensor anwenden.
Schritt 1: Schritt 1: Teile vorbereiten
Hier sind die Komponenten, die Sie für dieses Projekt benötigen:
- 10k OHM
- Ultraschallsensor
- Fotowiderstand
- Arduino Uno
- 7 Drähte
Schritt 2: Schritt 2: Alle Komponenten verbinden
Der Fotowiderstand und der Ultraschallsensor benötigen Platz für eine genaue Detektion. Sparen Sie etwas Platz und denken Sie an Licht für den Fotowiderstand.
Schritt 3: Schritt 3: Code
* Bibliothek sowohl in Arduino als auch in Processing hinzufügen.
Arduino: Suche nach "neuer Ping" in der Bibliothek
Verarbeitung: in der Bibliothek nach "seriell" suchen
Code für Arduino:
#enthalten
#define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200
NewPing Sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int lightSensorPin = A0; int analogValue = 0;
Void setup () { Serial.begin (9600); }
Void Schleife () { int Wert1 = sonar.ping_cm (); Wert1 = map(Wert1, 1, 60, 500, 24); Wert1 = einschränken(Wert1, 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);
Verzögerung (50);
Serial.print (Wert1); Serial.print (", ");
Serial.print (cVal1); Serial.print (", "); Serial.print (cVal2); Serial.print (", "); Serial.print (cVal3); Serial.print (", "); Serial.print (cVal4); Serial.print (", ");
Serial.println(); }
Code für die Verarbeitung:
//Klasse: (Grundkenntnisse)//
Importabwicklung.seriell.*;
int end = 10; Zeichenfolge seriell; Serielle Schnittstelle;
int pcount = 350; Partikel p = neues Partikel[pcount]; int-Diagonale; int e = 100;
Void setup () { port = new Serial (dies, "/dev/cu.usbmodem141101"); port.clear(); seriell = port.readStringUntil(Ende); seriell= null; für (int i = 0; i
Schwimmerdrehung = 0;
Void draw () { während (port.available ()> 0) { seriell = port.readStringUntil (Ende); Verzögerung(10); } if (seriell != null) { String a = split(seriell, ', '); println(a[0]); println(a[1]); println(a[2]); println(a[3]); println(a[4]); int result1 = Integer.parseInt(a[0]); System.out.println(result1); Bildrate (Ergebnis1); int result2 = Integer.parseInt(a[1]); System.out.println(result2); int result3 = Integer.parseInt(a[2]); System.out.println(result3); int result4 = Integer.parseInt(a[3]); System.out.println(result4); int result5 = Integer.parseInt(a[4]); System.out.println(result5); Hintergrund (Ergebnis2, Ergebnis3, Ergebnis4); übersetzen (Breite/2, Höhe); Drehung = 0,0005; drehen (Drehung); for (int i = 0; i diagonal) { p = new Particle(); } } } }
//Klasse: Partikel//
Klasse Partikel { float n; Schwimmer r; schweben o; Schwimmer c; Schwimmer d; int l; Partikel () {l = 100; n = zufällig (3, Breite/2); r = zufällig (0,10, ZWEI_PI); o = zufällig (1, zufällig (1, Breite/n)); c = zufällig (180, 228); d = zufällig (160, 208); aufrechtzuerhalten. Void draw() {l++; pushMatrix(); drehen (r); translate(drawDist(), 1); Ellipse (10, 10, Breite/0/4, Breite/0/4); popMatrix(); o = 0,06; } float drawDist() { return atan(n/o)*width/HALF_PI; } }
Schritt 4: Schritt 4: Verbinden und testen
Schritt 5: Schritt 5: Sehen Sie sich das Ergebnis an
Die Geschwindigkeit des sich bewegenden Balls ist höher, wenn sich etwas näher am Ultraschallsensor befindet. Außerdem erscheint die Lichtsteuerung mit Fotowiderstand bei der Verarbeitung als Hintergrunddunkelheit.