สารบัญ:

การเปลี่ยนกราฟิกการประมวลผล Arduino: 5 ขั้นตอน
การเปลี่ยนกราฟิกการประมวลผล Arduino: 5 ขั้นตอน

วีดีโอ: การเปลี่ยนกราฟิกการประมวลผล Arduino: 5 ขั้นตอน

วีดีโอ: การเปลี่ยนกราฟิกการประมวลผล Arduino: 5 ขั้นตอน
วีดีโอ: EP1/1 บทที่1 เริ่มต้นใช้งานไมโครคอนโทรลเลอร์ Arduino 2024, พฤศจิกายน
Anonim
การเปลี่ยนกราฟิกการประมวลผล Arduino
การเปลี่ยนกราฟิกการประมวลผล Arduino

สวัสดี โปรเจ็กต์นี้จัดทำขึ้นเพื่อสร้างกราฟิกที่มองเห็นได้จากอนุภาคที่มองไม่เห็นซึ่งเซ็นเซอร์ตรวจจับได้ ในกรณีนี้ ฉันใช้เซ็นเซอร์อัลตราโซนิกและโฟโตรีซีสเตอร์เพื่อควบคุมแสงและระยะทาง ฉันเห็นภาพมันโดยทำให้ตัวแปรจากเซ็นเซอร์เป็นตัวแปรในการประมวลผล จากนั้นฉันเชื่อมต่อ Arduino และการประมวลผลเพื่อควบคุม Arduino ด้วยการประมวลผล ดังนั้นกราฟิกในการประมวลผลจะใช้ตัวแปรจากเซ็นเซอร์ Arduino

ขั้นตอนที่ 1: ขั้นตอนที่ 1: เตรียมชิ้นส่วน

ขั้นตอนที่ 1: เตรียมชิ้นส่วน
ขั้นตอนที่ 1: เตรียมชิ้นส่วน

นี่คือองค์ประกอบที่คุณจะต้องสร้างโครงการนี้:

- 10k OHM

- เซ็นเซอร์อัลตราโซนิก

- โฟโตรีซีสเตอร์

- Arduino Uno

- 7 สาย

ขั้นตอนที่ 2: ขั้นตอนที่ 2: เชื่อมต่อส่วนประกอบทั้งหมด

ขั้นตอนที่ 2: เชื่อมต่อส่วนประกอบทั้งหมด
ขั้นตอนที่ 2: เชื่อมต่อส่วนประกอบทั้งหมด

โฟโตรีซีสเตอร์และเซ็นเซอร์อัลตราโซนิกต้องการพื้นที่สำหรับการตรวจจับที่แม่นยำ ประหยัดพื้นที่และคิดถึงแสงสำหรับโฟโตรีซีสเตอร์

ขั้นตอนที่ 3: ขั้นตอนที่ 3: รหัส

ขั้นตอนที่ 3: รหัส!
ขั้นตอนที่ 3: รหัส!

*เพิ่มไลบรารี่ทั้งใน Arduino และการประมวลผล

Arduino: ค้นหา "ping ใหม่" ในไลบรารี

กำลังประมวลผล: ค้นหา "ซีเรียล" ในห้องสมุด

รหัสสำหรับ Arduino:

#รวม

#กำหนด TRIGGER_PIN 12 #กำหนด ECHO_PIN 11 #กำหนด MAX_DISTANCE 200

ใหม่ปิงโซนาร์ (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

int lightSensorPin = A0; int analogValue = 0;

การตั้งค่าเป็นโมฆะ () { Serial.begin (9600); }

วงเป็นโมฆะ () { int Value1 = sonar.ping_cm(); ค่าที่ 1 = แผนที่ (ค่า 1, 1, 60, 500, 24); ค่าที่ 1 = ข้อ จำกัด (ค่า 1, 24, 500);

analogValue = analogRead (lightSensorPin); int cVal1 = แผนที่ (analogValue, 200, 600, 249, 100);

int cVal2 = แผนที่ (analogValue, 200, 600, 247, 97);

int cVal3 = แผนที่ (analogValue, 200, 600, 243, 101);

int cVal4 = แผนที่ (analogValue, 200, 600, 243, 150);

ล่าช้า (50);

Serial.print(ค่า1); Serial.print(", ");

Serial.print(cVal1); Serial.print(", "); Serial.print(cVal2); Serial.print(", "); Serial.print(cVal3); Serial.print(", "); Serial.print(cVal4); Serial.print(", ");

Serial.println(); }

รหัสสำหรับการประมวลผล:

//คลาส: (พื้นฐาน)//

นำเข้าการประมวลผล.ซีเรียล.*;

int end = 10; สตริงอนุกรม; พอร์ตอนุกรม;

จำนวนเต็ม = 350; อนุภาค p = อนุภาคใหม่[pcount]; เส้นทแยงมุม int; int e = 100;

การตั้งค่าเป็นโมฆะ () { พอร์ต = ซีเรียลใหม่ (นี้ "/dev/cu.usbmodem141101"); port.clear(); อนุกรม = port.readStringUntil (สิ้นสุด); ซีเรียล = null; สำหรับ (int i = 0; i

การหมุนลอย = 0;

วาดเป็นโมฆะ () { ในขณะที่ (พอร์ตพร้อมใช้งาน () > 0) { อนุกรม = port.readStringUntil (สิ้นสุด); ล่าช้า(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(ผลลัพธ์1); อัตราเฟรม(ผลลัพธ์1); int result2 = Integer.parseInt(a[1]); System.out.println(ผลลัพธ์2); int result3 = Integer.parseInt(เป็น[2]); System.out.println(ผลลัพธ์3); int result4 = Integer.parseInt(a[3]); System.out.println(ผลลัพธ์4); int result5 = Integer.parseInt(a[4]); System.out.println(ผลลัพธ์5); พื้นหลัง(ผลลัพธ์2, ผลลัพธ์3, ผลลัพธ์4); แปล(กว้าง/2,สูง); การหมุน-=0.0005; หมุน(หมุน); สำหรับ (int i = 0; i เส้นทแยงมุม) { p = อนุภาคใหม่ (); } } } }

//คลาส: อนุภาค//

อนุภาคระดับ { ลอย n; ลอย r; ลอย o; ลอยค; ลอย d; int ล.; อนุภาค () { l = 100; n = สุ่ม(3, ความกว้าง/2); r = สุ่ม (0.10, TWO_PI); o = สุ่ม(1, สุ่ม(1, ความกว้าง/n)); c = สุ่ม(180, 228); d = สุ่ม(160, 208); } ถือเป็นโมฆะ () { l++; pushMatrix(); หมุน(r); แปล(drawDist(), 1); วงรี(10, 10, ความกว้าง/o/4, ความกว้าง/o/4); popMatrix(); o-=0.06; } float drawDist () { กลับ atan (n/o)*width/HALF_PI; } }

ขั้นตอนที่ 4: ขั้นตอนที่ 4: เชื่อมต่อและทดสอบ

ขั้นตอนที่ 4: เชื่อมต่อและทดสอบ
ขั้นตอนที่ 4: เชื่อมต่อและทดสอบ

ขั้นตอนที่ 5: ขั้นตอนที่ 5: ดูผลลัพธ์

ขั้นตอนที่ 5: ดูผลลัพธ์!
ขั้นตอนที่ 5: ดูผลลัพธ์!

ความเร็วของลูกบอลเคลื่อนที่จะเร็วขึ้นเมื่อมีสิ่งใดอยู่ใกล้เซ็นเซอร์อัลตราโซนิก นอกจากนี้ การควบคุมแสงด้วยโฟโตรีซีสเตอร์จะปรากฏในการประมวลผลเป็นพื้นหลังมืด

แนะนำ: