İçindekiler:

Arduino İşleme Grafik Geçişi: 5 Adım
Arduino İşleme Grafik Geçişi: 5 Adım

Video: Arduino İşleme Grafik Geçişi: 5 Adım

Video: Arduino İşleme Grafik Geçişi: 5 Adım
Video: Elimi kestim. Demir kanaması deneyi #kimya #shorts 2024, Kasım
Anonim
Arduino İşleme Grafik Geçişi
Arduino İşleme Grafik Geçişi

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

Adım 1: Parçaları Hazırlayın
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

2. Adım: Tüm Bileşenleri Bağlayın
2. Adım: 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

Adım 3: Kodlayın!
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

4. Adım: Bağlayın ve Test Edin
4. Adım: Bağlayın ve Test Edin

Adım 5: Adım 5: Sonucu Görün

Adım 5: Sonucu Görün!
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.

Önerilen: