جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
مرحبًا ، هذا المشروع مخصص لعمل رسومات مرئية من جزيئات غير مرئية يمكن أن تستشعرها أجهزة الاستشعار. في هذه الحالة ، استخدمت مستشعر الموجات فوق الصوتية والمقاوم الضوئي للتحكم في الضوء والمسافة. أتخيلها بجعل المتغيرات من المستشعر كمتغيرات في المعالجة. ثم أقوم بتوصيل Arduino والمعالجة للتحكم في Arduino مع المعالجة. وبالتالي ، فإن الرسم في المعالجة سيطبق متغيرات من مستشعر Arduino.
الخطوة 1: الخطوة 1: تحضير الأجزاء
فيما يلي المكونات التي ستحتاجها لإنشاء هذا المشروع:
- 10 كيلو أوم
- أجهزة الاستشعار بالموجات فوق الصوتية
- مقاوم ضوئي
- اردوينو أونو
- 7 أسلاك
الخطوة 2: الخطوة 2: توصيل كافة المكونات
يحتاج المقاوم الضوئي ومستشعر الموجات فوق الصوتية إلى مساحة للكشف الدقيق. وفر بعض المساحة وفكر في الضوء لمقاوم الضوء.
الخطوة 3: الخطوة 3: الكود
* إضافة مكتبة في كل من Arduino والمعالجة.
اردوينو: ابحث عن "ping جديد" في المكتبة
المعالجة: ابحث عن "المسلسل" في المكتبة
كود اردوينو:
#يشمل
#define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 200
NewPing سونار (TRIGGER_PIN ، ECHO_PIN ، MAX_DISTANCE) ؛
int lightSensorPin = A0 ؛ int analogValue = 0 ؛
إعداد باطل () {Serial.begin (9600) ؛ }
حلقة باطلة () {int Value1 = sonar.ping_cm () ؛ Value1 = الخريطة (القيمة 1 ، 1 ، 60 ، 500 ، 24) ؛ Value1 = تقييد (Value1، 24، 500) ؛
analogValue = analogRead (lightSensorPin) ؛ int cVal1 = map (analogValue، 200، 600، 249، 100) ؛
int cVal2 = map (analogValue، 200، 600، 247، 97) ؛
int cVal3 = map (analogValue، 200، 600، 243، 101) ؛
int cVal4 = map (analogValue، 200، 600، 243، 150) ؛
تأخير (50) ؛
Serial.print (Value1) ؛ 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 = 10 ؛ مسلسل سلسلة منفذ تسلسلي؛
pcount int = 350 ؛ جسيم p = جسيم جديد [pcount] ؛ قطري دولي int e = 100 ؛
إعداد باطل () {port = new Serial (this، "/dev/cu.usbmodem141101") ؛ port.clear () ؛ المسلسل = port.readStringUntil (end) ؛ المسلسل = فارغ ؛ لـ (int i = 0 ؛ i
دوران تعويم = 0 ؛
رسم باطل () {while (port.available ()> 0) {serial = port.readStringUntil (end)؛ تأخير (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) ؛ frameRate (نتيجة 1) ؛ int result2 = Integer.parseInt (a [1]) ، System.out.println (نتيجة 2) ؛ int result3 = Integer.parseInt (a [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 = new Particle () ؛ }}}}
// صنف: جسيم //
فئة الجسيمات {float n؛ تعويم ص تعويم س. تعويم ج ؛ تعويم د ؛ كثافة العمليات ل ؛ جسيم () {l = 100 ؛ ن = عشوائي (3 ، عرض / 2) ؛ r = عشوائي (0.10، TWO_PI) ؛ o = عشوائي (1 ، عشوائي (1 ، عرض / ن)) ؛ ج = عشوائي (180 ، 228) ؛ د = عشوائي (160 ، 208) ؛ } رسم باطل () {l ++؛ pushMatrix () ؛ تناوب (ص) ؛ ترجمة (drawDist () ، 1) ؛ القطع الناقص (10 ، 10 ، العرض / س / 4 ، العرض / س / 4) ؛ popMatrix () ، س- = 0.06 ؛ } float drawDist () {return atan (n / o) * width / HALF_PI؛ }}
الخطوة 4: الخطوة 4: التوصيل والاختبار
الخطوة 5: الخطوة 5: انظر النتيجة
ستكون سرعة الكرة المتحركة أسرع عندما يكون أي شيء أقرب إلى جهاز الاستشعار بالموجات فوق الصوتية. بالإضافة إلى ذلك ، سيظهر التحكم في الضوء باستخدام المقاوم الضوئي أثناء المعالجة كظلام في الخلفية.