INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Hallo, hierdie projek is om sigbare grafika te maak van onsigbare deeltjies wat deur sensors waargeneem kan word. In hierdie geval het ek die ultrasoniese sensor en fotoresistor gebruik om lig en afstand te beheer. Ek visualiseer dit deur die veranderlikes van die sensor te maak as veranderlikes in die verwerking. Dan koppel ek Arduino en Processing om Arduino met Processing te beheer. Die grafika in Processing sal dus veranderlikes van die Arduino -sensor toepas.
Stap 1: Stap 1: Berei dele voor
Hier is die komponente wat u nodig het om hierdie projek te maak:
- 10k OHM
- Ultrasoniese sensor
- Fotoresistor
- Arduino Uno
- 7 drade
Stap 2: Stap 2: Koppel alle komponente
Die fotoresistor en ultrasoniese sensor benodig ruimte vir akkurate opsporing. Bespaar ruimte en dink aan lig vir fotoresistor.
Stap 3: Stap 3: Kode
*Voeg biblioteek by in beide Arduino en verwerking.
Arduino: soek 'nuwe ping' in die biblioteek
Verwerking: soek "reeks" in die biblioteek
Kode vir Arduino:
#insluit
#definieer TRIGGER_PIN 12 #definieer ECHO_PIN 11 #definieer MAX_DISTANCE 200
NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int lightSensorPin = A0; int analogValue = 0;
ongeldige opstelling () {Serial.begin (9600); }
leemte -lus () {int Waarde1 = sonar.ping_cm (); Waarde1 = kaart (Waarde1, 1, 60, 500, 24); Waarde1 = beperking (Waarde1, 24, 500);
analogValue = analogRead (lightSensorPin); int cVal1 = kaart (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);
vertraging (50);
Serial.print (Waarde1); Serial.print (",");
Serial.print (cVal1); Serial.print (","); Serial.print (cVal2); Serial.print (","); Serial.print (cVal3); Serial.print (","); Serial.print (cVal4); Serial.print (",");
Serial.println (); }
Kode vir verwerking:
// klas: (basies) //
invoerverwerking.reeks.*;
int einde = 10; Snaarreeks; Seriële hawe;
int pcount = 350; Particle p = new Particle [pcount]; int diagonaal; int e = 100;
ongeldige opstelling () {poort = nuwe reeks (hierdie, "/dev/cu.usbmodem141101"); port.clear (); serial = port.readStringUntil (einde); reeks = nul; vir (int i = 0; i
vlot rotasie = 0;
void draw () {while (port.available ()> 0) {serial = port.readStringUntil (end); vertraging (10); } if (reeks! = nul) {String a = split (reeks, ','); println (a [0]); println (a [1]); println (a [2]); println (a [3]); println (a [4]); int result1 = Integer.parseInt (a [0]); System.out.println (resultaat1); frameRate (resultaat1); 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 (resultaat5); agtergrond (resultaat2, resultaat3, resultaat4); vertaal (breedte/2, hoogte); rotasie- = 0,0005; draai (draai); vir (int i = 0; i diagonaal) {p = nuwe Particle (); }}}}
// klas: Deeltjie //
klas Deeltjie {float n; dryf r; dryf o; dryf c; dryf d; int l; Deeltjie () {l = 100; n = ewekansig (3, breedte/2); r = ewekansig (0.10, TWO_PI); o = ewekansig (1, ewekansig (1, breedte/n)); c = ewekansig (180, 228); d = ewekansig (160, 208); } ongeldig trek () {l ++; pushMatrix (); draai (r); translate (drawDist (), 1); ellips (10, 10, breedte/o/4, breedte/o/4); popMatrix (); o- = 0,06; } float drawDist () {return atan (n/o)*width/HALF_PI; }}
Stap 4: Stap 4: Koppel en toets
Stap 5: Stap 5: Sien die resultaat
Die snelheid van die bewegende bal sal vinniger wees as iets nader aan die ultrasoniese sensor is. Boonop verskyn die ligbeheer met fotoresistor in die verwerking as agtergronddonker.