Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Živjo, ta projekt je namenjen ustvarjanju vidnih grafik iz nevidnih delcev, ki jih lahko zaznamo s senzorji. V tem primeru sem za nadzor svetlobe in razdalje uporabil ultrazvočni senzor in fotorezistor. Vizualiziram ga tako, da spremenljivke iz senzorja naredim kot spremenljivke pri obdelavi. Nato povežem Arduino in Processing za nadzor Arduina z Processingom. Tako bi grafika v obdelavi uporabljala spremenljivke senzorja Arduino.
1. korak: 1. korak: Pripravite dele
Za izdelavo tega projekta boste potrebovali naslednje komponente:
- 10 k OHM
- Ultrazvočni senzor
- Foto upor
- Arduino Uno
- 7 žic
2. korak: 2. korak: Povežite vse komponente
Fotorezistor in ultrazvočni senzor potrebujejo prostor za natančno zaznavanje. Prihranite nekaj prostora in razmislite o svetlobi za fotorezistor.
3. korak: 3. korak: Koda
*Dodajte knjižnico v Arduino in v obdelavo.
Arduino: v knjižnici poiščite "nov ping"
Obdelava: v knjižnici poiščite "serijsko"
Koda za Arduino:
#vključi
#define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200
Sonar NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int lightSensorPin = A0; int analogValue = 0;
void setup () {Serial.begin (9600); }
void loop () {int Value1 = sonar.ping_cm (); Vrednost1 = zemljevid (Vrednost1, 1, 60, 500, 24); Vrednost1 = omeji (Vrednost1, 24, 500);
analogValue = analogRead (lightSensorPin); int cVal1 = zemljevid (analognaVrednost, 200, 600, 249, 100);
int cVal2 = zemljevid (analognaVrednost, 200, 600, 247, 97);
int cVal3 = zemljevid (analognaVrednost, 200, 600, 243, 101);
int cVal4 = zemljevid (analognaVrednost, 200, 600, 243, 150);
zamuda (50);
Serial.print (vrednost1); Serial.print (",");
Serijski.tisk (cVal1); Serial.print (","); Serijski.tisk (cVal2); Serial.print (","); Serijski.tisk (cVal3); Serial.print (","); Serijski.tisk (cVal4); Serial.print (",");
Serial.println (); }
Koda za obdelavo:
// razred: (osnovni) //
uvozna obdelava.serial.*;
int konec = 10; Niz nizov; Serijska vrata;
int pcount = 350; Delci p = novi Delci [pcount]; int diagonala; int e = 100;
void setup () {port = new Serial (this, "/dev/cu.usbmodem141101"); port.clear (); serial = port.readStringUntil (konec); serijski = ničelno; za (int i = 0; i
plavajoča rotacija = 0;
void draw () {while (port.available ()> 0) {serial = port.readStringUntil (konec); zamuda (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 (rezultat1); frameRate (rezultat1); int result2 = Integer.parseInt (a [1]); System.out.println (rezultat2); int result3 = Integer.parseInt (a [2]); System.out.println (rezultat3); int result4 = Integer.parseInt (a [3]); System.out.println (rezultat4); int result5 = Integer.parseInt (a [4]); System.out.println (rezultat 5); ozadje (rezultat2, rezultat3, rezultat4); prevesti (širina/2, višina); vrtenje- = 0,0005; vrtenje (vrtenje); za (int i = 0; i diagonala) {p = nov delec (); }}}}
// razred: Delci //
razred Delci {float n; plovec r; float o; float c; float d; int l; Delci () {l = 100; n = naključno (3, širina/2); r = naključno (0,10, TWO_PI); o = naključno (1, naključno (1, širina/n)); c = naključno (180, 228); d = naključno (160, 208); } void draw () {l ++; pushMatrix (); vrteti (r); prevesti (drawDist (), 1); elipsa (10, 10, širina/o/4, širina/o/4); popMatrix (); o- = 0,06; } float drawDist () {return atan (n/o)*width/HALF_PI; }}
4. korak: 4. korak: Povežite se in preizkusite
5. korak: 5. korak: Oglejte si rezultat
Hitrost premikajoče se žoge bo večja, če je kaj bližje ultrazvočnemu senzorju. Poleg tega se bo nadzor svetlobe s fotorezistorjem pojavil v obdelavi kot tema ozadja.