Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Hej, det här projektet är för att göra synlig grafik från osynliga partiklar som kan avkännas av sensorer. I det här fallet använde jag ultraljudssensorn och fotoresistorn för att styra ljus och avstånd. Jag visualiserar det genom att göra variablerna från sensorn som variabler i bearbetningen. Sedan ansluter jag Arduino och Processing för att styra Arduino med Processing. Således skulle grafiken i Processing tillämpa variabler från Arduino -sensorn.
Steg 1: Steg 1: Förbered delar
Här är de komponenter som du behöver för att göra detta projekt:
- 10k OHM
- Ultraljudssensor
- Fotoresistor
- Arduino Uno
- 7 ledningar
Steg 2: Steg 2: Anslut alla komponenter
Fotoresistorn och ultraljudssensorn behöver ett utrymme för exakt detektion. Spara lite utrymme och tänk på ljus för fotoresistor.
Steg 3: Steg 3: Kod
*Lägg till bibliotek i både Arduino och Processing.
Arduino: sök "ny ping" i biblioteket
Bearbetar: sök "seriell" i biblioteket
Kod för Arduino:
#omfatta
#define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200
NewPing -ekolod (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int lightSensorPin = A0; int analogValue = 0;
void setup () {Serial.begin (9600); }
void loop () {int Value1 = sonar.ping_cm (); Värde1 = karta (Värde1, 1, 60, 500, 24); Värde1 = begränsning (värde 1, 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);
fördröjning (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 (); }
Kod för bearbetning:
// klass: (grundläggande) //
import bearbetning. serie.*;
int slut = 10; Strängserie; Serieport;
int pcount = 350; Particle p = new Particle [pcount]; int diagonal; int e = 100;
void setup () {port = new Serial (this, "/dev/cu.usbmodem141101"); port.clear (); serial = port.readStringUntil (slutet); serie = null; för (int i = 0; i
flottörrotation = 0;
void draw () {while (port.available ()> 0) {serial = port.readStringUntil (end); fördröjning (10); } if (serie! = null) {String a = split (serie, ','); println (a [0]); println (a [1]); println (a [2]); println (a [3]); println (a [4]); int result1 = Integer.parseInt (a [0]); System.out.println (resultat1); frameRate (resultat1); int result2 = Integer.parseInt (a [1]); System.out.println (resultat2); int result3 = Integer.parseInt (a [2]); System.out.println (resultat3); int result4 = Integer.parseInt (a [3]); System.out.println (resultat4); int result5 = Integer.parseInt (a [4]); System.out.println (resultat5); bakgrund (resultat2, resultat3, resultat4); translate (bredd/2, höjd); rotation- = 0,0005; rotera (rotation); för (int i = 0; i diagonal) {p = ny Particle (); }}}}
// klass: Partikel //
klass Partikel {float n; flyta r; flyta o; flyta c; flyta d; int l; Partikel () {l = 100; n = slumpmässig (3, bredd/2); r = slumpmässig (0,10, TWO_PI); o = slumpmässig (1, slumpmässig (1, bredd/n)); c = slumpmässig (180, 228); d = slumpmässig (160, 208); } void draw () {l ++; pushMatrix (); rotera (r); translate (drawDist (), 1); ellips (10, 10, bredd/o/4, bredd/o/4); popMatrix (); o- = 0,06; } float drawDist () {return atan (n/o)*width/HALF_PI; }}
Steg 4: Steg 4: Anslut och testa
Steg 5: Steg 5: Se resultatet
Hastigheten på den rörliga bollen blir snabbare när något är närmare ultraljudssensorn. Dessutom kommer ljuskontrollen med fotoresistor att visas som bearbetning som bakgrundsmörker.