İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Merhaba, bu proje sensörler tarafından algılanabilen görünmez parçacıklardan görünür grafikler yapmak içindir. Bu durumda, ışığı ve mesafeyi kontrol etmek için ultrasonik sensör ve fotodirenci kullandım. Sensörden gelen değişkenleri işlemede değişkenler haline getirerek görselleştiriyorum. Ardından Arduino'yu Processing ile kontrol etmek için Arduino ve Processing'i birbirine bağlıyorum. Böylece, İşleme'deki grafik, Arduino sensöründen gelen değişkenleri uygulayacaktır.
Adım 1: Adım 1: Parçaları Hazırlayın
Bu projeyi yapmak için ihtiyaç duyacağınız bileşenler şunlardır:
- 10k OHM
- Ultrasonik sensör
- Fotodirenç
-Arduino Uno
- 7 tel
Adım 2: Adım 2: Tüm Bileşenleri Bağlayın
Fotodirenç ve Ultrasonik sensör, doğru algılama için bir alana ihtiyaç duyar. Biraz yer kazanın ve fotodirenç için ışığı düşünün.
Adım 3: Adım 3: Kodlayın
*Arduino ve Processing'e kütüphane ekleyin.
Arduino: kütüphanede "yeni ping" arayın
İşleme: kitaplıkta "seri" araması yapın
Arduino'nun Kodu:
#Dahil etmek
#define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
int lightSensorPin = A0; int analogDeğer = 0;
geçersiz kurulum() { Serial.begin(9600); }
void loop() { int Değer1 = sonar.ping_cm(); Değer1 = harita(Değer1, 1, 60, 500, 24); Değer1 = kısıtla(Değer1, 24, 500);
analogValue = analogRead(lightSensorPin); int cVal1 = harita (analogValue, 200, 600, 249, 100);
int cVal2 = harita (analogValue, 200, 600, 247, 97);
int cVal3 = harita (analogValue, 200, 600, 243, 101);
int cVal4 = harita (analogValue, 200, 600, 243, 150);
gecikme(50);
Seri.print(Değer1); Seri.print(", ");
Seri.print(cVal1); Seri.print(", "); Seri.print(cVal2); Seri.print(", "); Serial.print(cVal3); Seri.print(", "); Seri.print(cVal4); Seri.print(", ");
Seri.println(); }
İşleme Kodu:
//sınıf: (temel)//
işleme.serisini içe aktar.*;
int bitiş = 10; dizi dizi; Seri port;
int psay = 350; Parçacık p = yeni Parçacık[pcount]; int köşegen; int e = 100;
void setup() { port = new Serial(bu, "/dev/cu.usbmodem141101"); port.clear(); seri = port.readStringUntil(end); seri= boş; for (int ben = 0; ben
yüzer dönüş = 0;
void draw() { while (port.available() > 0) { serial = port.readStringUntil(end); gecikme(10); } if (seri != null) { String a = split(seri, ', '); println(a[0]); println(a[1]); println(a[2]); println(a[3]); println(a[4]); int sonuç1 = Tamsayı.parseInt(a[0]); System.out.println(sonuç1); frameRate(sonuç1); int sonuç2 = Tamsayı.parseInt(a[1]); System.out.println(sonuç2); int sonuç3 = Tamsayı.parseInt(a[2]); System.out.println(sonuç3); int sonuç4 = Tamsayı.parseInt(a[3]); System.out.println(sonuç4); int sonuç5 = Tamsayı.parseInt(a[4]); System.out.println(sonuç5); arkaplan(sonuç2, sonuç3, sonuç4); çevir(genişlik/2, yükseklik); rotasyon-=0.0005; döndürme (döndürme); for (int i = 0; i köşegen) { p = yeni Parçacık(); } } } }
//sınıf: Parçacık//
sınıf Parçacık { kayan nokta n; yüzer r; yüzer o; yüzer c; yüzer d; int l; Parçacık() { l = 100; n = rastgele(3, genişlik/2); r = rastgele(0.10, TWO_PI); o = rastgele(1, rastgele(1, genişlik/n)); c = rastgele(180, 228); d = rastgele(160, 208); } geçersiz çizim() { l++; pushMatrix(); döndür(r); çevir(drawDist(), 1); elips(10, 10, genişlik/o/4, genişlik/o/4); popMatrix(); o-=0.06; } float drawDist() { return atan(n/o)*width/HALF_PI; } }
4. Adım: 4. Adım: Bağlayın ve Test Edin
Adım 5: Adım 5: Sonucu Görün
Ultrasonik sensöre herhangi bir şey daha yakın olduğunda, hareket eden topun hızı daha hızlı olacaktır. Ayrıca, fotodirençli ışık kontrolü, işleme sırasında arka plan koyuluğu olarak görünecektir.