Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Ahoj, tento projekt je na vytváranie viditeľnej grafiky z neviditeľných častíc, ktoré môžu byť snímané senzormi. V tomto prípade som na ovládanie svetla a vzdialenosti použil ultrazvukový senzor a fotorezistor. Vizualizujem to tak, že premenné zo senzora urobím ako premenné pri spracovaní. Potom prepojím Arduino a Processing, aby som ovládal Arduino pomocou Processing. Grafika v procese spracovania by teda uplatňovala premenné zo senzora Arduino.
Krok 1: Krok 1: Príprava dielov
Tu sú komponenty, ktoré budete potrebovať na vytvorenie tohto projektu:
- 10 k OHM
- Ultrazvukový senzor
- Fotorezistor
- Arduino Uno
- 7 drôtov
Krok 2: Krok 2: Pripojte všetky súčasti
Fotoodpor a ultrazvukový senzor potrebujú priestor na presnú detekciu. Ušetrite miesto a myslite na svetlo pre fotorezistor.
Krok 3: Krok 3: Kód
*Pridajte knižnicu do Arduina aj do Processingu.
Arduino: vyhľadajte v knižnici „nový ping“
Prebieha spracovanie: vyhľadajte v knižnici „sériové“
Kód pre Arduino:
#zahrnúť
#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 loop () {int Hodnota1 = sonar.ping_cm (); Hodnota1 = mapa (hodnota1, 1, 60, 500, 24); Hodnota1 = obmedzenie (hodnota1, 24, 500);
analogValue = analogRead (lightSensorPin); int cVal1 = mapa (analogValue, 200, 600, 249, 100);
int cVal2 = mapa (analogValue, 200, 600, 247, 97);
int cVal3 = mapa (analogValue, 200, 600, 243, 101);
int cVal4 = mapa (analogValue, 200, 600, 243, 150);
oneskorenie (50);
Serial.print (hodnota1); Serial.print (",");
Serial.print (cVal1); Serial.print (","); Serial.print (cVal2); Serial.print (","); Serial.print (cVal3); Serial.print (","); Serial.print (cVal4); Serial.print (",");
Serial.println (); }
Kód na spracovanie:
// trieda: (základná) //
spracovanie importu.sériové.*;
int koniec = 10; Sláčikový seriál; Sériový port;
int pcount = 350; Particle p = new Particle [pcount]; int uhlopriečka; int e = 100;
void setup () {port = new Serial (this, "/dev/cu.usbmodem141101"); port.clear (); serial = port.readStringUntil (end); serial = null; pre (int i = 0; i
rotácia plaváka = 0;
void draw () {while (port.available ()> 0) {serial = port.readStringUntil (end); oneskorenie (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 (výsledok1); 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); pozadie (result2, result3, result4); preložiť (šírka/2, výška); rotácia- = 0,0005; otočiť (rotácia); pre (int i = 0; i uhlopriečka) {p = nová častica (); }}}}
// trieda: Častice //
trieda Častica {float n; plavák r; plávať o; plavák c; plavák d; int l; Častica () {l = 100; n = náhodný (3, šírka/2); r = náhodný (0,10, TWO_PI); o = náhodný (1, náhodný (1, šírka/n)); c = náhodný (180, 228); d = náhodný (160, 208); } void draw () {l ++; pushMatrix (); rotovať (r); translate (drawDist (), 1); elipsa (10, 10, šírka/o/4, šírka/o/4); popMatrix (); o- = 0,06; } float drawDist () {return atan (n/o)*width/HALF_PI; }}
Krok 4: Krok 4: Pripojenie a test
Krok 5: Krok 5: Pozrite sa na výsledok
Rýchlosť pohybujúcej sa gule bude vyššia, keď je čokoľvek bližšie k ultrazvukovému senzoru. Ovládanie svetla s fotoodporom sa navyše bude pri spracovaní zobrazovať ako tma v pozadí.