Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Përshëndetje, ky projekt është për të bërë grafika të dukshme nga grimca të padukshme të cilat mund të ndihen nga sensorët. Në këtë rast, kam përdorur sensorin tejzanor dhe rezistencën e fotos për të kontrolluar dritën dhe distancën. Unë e përfytyroj atë duke i bërë ndryshoret nga sensori si ndryshore në përpunim. Pastaj lidh Arduino dhe Processing për të kontrolluar Arduino me Processing. Kështu, grafiku në Përpunim do të aplikonte variabla nga sensori Arduino.
Hapi 1: Hapi 1: Përgatitni Pjesët
Këtu janë përbërësit që do t'ju nevojiten për të bërë këtë projekt:
- 10k OHM
- Sensori tejzanor
- Photoresistor
- Arduino Uno
- 7 tela
Hapi 2: Hapi 2: Lidhni të gjithë përbërësit
Rezistori fotografik dhe sensori tejzanor kanë nevojë për një hapësirë për zbulimin e saktë. Kurseni pak hapësirë dhe mendoni për dritën për fotorezistuesin.
Hapi 3: Hapi 3: Kodi
*Shtoni bibliotekë si në Arduino ashtu edhe në Përpunim.
Arduino: kërkoni "ping të ri" në bibliotekë
Përpunimi: kërkoni "serial" në bibliotekë
Kodi për Arduino:
#përfshi
#përcakto TRIGGER_PIN 12 #përcakto ECHO_PIN 11 #përcakto MAX_DISTANCE 200
Sonar NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int lightSensorPin = A0; int analogValue = 0;
void setup () {Serial.begin (9600); }
lak void () {int Vlera1 = sonar.ping_cm (); Vlera1 = harta (Vlera 1, 1, 60, 500, 24); Vlera1 = kufizim (Vlera1, 24, 500);
analogValue = analogRead (lightSensorPin); int cVal1 = hartë (analogVlera, 200, 600, 249, 100);
int cVal2 = hartë (analogVlera, 200, 600, 247, 97);
int cVal3 = hartë (analogVlera, 200, 600, 243, 101);
int cVal4 = hartë (analogVlera, 200, 600, 243, 150);
vonesë (50);
Serial.print (Vlera 1); Serial.print (",");
Serial.print (cVal1); Serial.print (","); Serial.print (cVal2); Serial.print (","); Serial.print (cVal3); Serial.print (","); Serial.print (cVal4); Serial.print (",");
Serial.println (); }
Kodi për përpunimin:
// klasa: (bazë) //
përpunimi i importit.serial.*;
int fund = 10; Serial vargu; Port serial;
int copë = 350; Grimcë p = grimcë e re [numërim]; int diagonale; int e = 100;
void setup () {port = serial i ri (kjo, "/dev/cu.usbmodem141101"); port.qartë (); serial = port.readStringUntil (fund); serial = null; për (int i = 0; i
rrotullimi i notit = 0;
void draw () {while (port.available ()> 0) {serial = port.readStringUntil (fund); vonesa (10); } if (serial! = null) {String a = split (serial, ','); 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); frameRate (rezultati 1); 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); sfond (rezultati2, rezultati3, rezultati4); përkthe (gjerësia/2, lartësia); rrotullim- = 0.0005; rrotullohem (rrotullimi); për (int i = 0; i diagonale) {p = grimcë e re (); }}}}
// klasa: Grimca //
klasa Particle {float n; noton r; noton o; noton c; noton d; int l; Grimcë () {l = 100; n = e rastësishme (3, gjerësia/2); r = e rastësishme (0.10, TWO_PI); o = e rastësishme (1, e rastësishme (1, gjerësia/n)); c = rastësore (180, 228); d = rastësore (160, 208); } barazim void () {l ++; pushMatrix (); rrotullo (r); përktheni (drawDist (), 1); elips (10, 10, gjerësia/o/4, gjerësia/o/4); popMatrix (); o- = 0.06; } float drawDist () {return atan (n/o)*width/HALF_PI; }}
Hapi 4: Hapi 4: Lidhu dhe Provo
Hapi 5: Hapi 5: Shihni Rezultatin
Shpejtësia e topit në lëvizje do të jetë më e shpejtë kur gjithçka është më afër sensorit tejzanor. Plus, kontrolli i dritës me fotorezistues do të shfaqet në përpunim si errësirë në sfond.