جدول المحتويات:

ملاحظات سونيك LED: 7 خطوات (مع صور)
ملاحظات سونيك LED: 7 خطوات (مع صور)

فيديو: ملاحظات سونيك LED: 7 خطوات (مع صور)

فيديو: ملاحظات سونيك LED: 7 خطوات (مع صور)
فيديو: كيفية جعل الشاشة تعمل تلقائي سونك 2024, يوليو
Anonim
ملاحظات LED الصوتية
ملاحظات LED الصوتية
ملاحظات LED الصوتية
ملاحظات LED الصوتية
ملاحظات LED الصوتية
ملاحظات LED الصوتية

أهلا مرة أخرى،

أكره أن الروبوت الخاص بك يصطدم بكل شيء؟ هذا سوف يصلح تلك المشكلة مع 8 مستشعرات صوتية يبدو الأمر معقدًا … لكن في الواقع جعلت هذا الأمر سهلاً للغاية. أحاول نشر مشاريع تساعدك على التعرف على Arduino وإظهار مفهوم "خارج الصندوق". سيساعدك هذا المنشور على فهم 595 switch ، pro-minis كمستشعر قابل للبرمجة ، والاستخدام الكبير للتعليقات التي تقود في الوقت الفعلي. إذا كنت تستمتع بـ Arduino باعتباره "نسخ ولصق ومكوِّن إضافي" ، فيمكنك تخطي ذلك.

أحب استخدام الموالية للثلاجات الصغيرة. تبلغ تكلفتها حوالي 2.50 دولارًا ، وتعمل كمفكك كامل ، وتثبيت الرؤوس يجعلها مرنة للغاية. عند استخدامه كمستشعر دقيق ، يمكنك جعله "يفعل ما تريد" بدلاً من ما يمليه المستشعر الذي تم شراؤه. باستخدام I2C باستخدام سلكين فقط ، يمكن ربطهما معًا في خط واحد. لذا ، انتقل إلى MEGA I ، ويمكن أن يكون لدي 4 ميني تشغيل 4 أسطر منفصلة من التعليمات البرمجية كلها في نفس الوقت ، بسعر 10.00 دولارات فقط. هنا أستخدم جهازًا صغيرًا لإخراج أجهزة الاستشعار الصوتية من خلال 595 وإظهار مسافة القيادة في الوقت الفعلي. ثم قم بمشاركة 8 بت من البيانات مع اللوحة الأم. هذا يزيل العبء عن اللوحة الأم ويجعل الكود الخاص بها بسيطًا جدًا.

هناك مشكلة في المستشعرات الصوتية … لا توجد ردود فعل بصرية. أنت لا تعرف أبدًا ما إذا كان المستشعر مجرد وزن ثقيل أم أنه يعمل! أعتقد أن من توصل إلى "BLINK" هو أذكى من Einstine. يقودها واحد فقط ويتم نقل عالم من المعلومات عن طريق الوميض. لذلك يحتاج المستشعر الصوتي إلى ردود فعل في الوقت الفعلي. هنا استخدمت مجموعة من المصابيح لمراقبة كل مستشعر. لست بحاجة إليها ، فقط اصنع المستشعرات بدون المصابيح. ولكن الحصول على المصابيح على ثنائي الفينيل متعدد الكلور مفيد.

الخطوة 1: اصنع ثنائي الفينيل متعدد الكلور

اصنع ثنائي الفينيل متعدد الكلور
اصنع ثنائي الفينيل متعدد الكلور
اصنع ثنائي الفينيل متعدد الكلور
اصنع ثنائي الفينيل متعدد الكلور
اصنع ثنائي الفينيل متعدد الكلور
اصنع ثنائي الفينيل متعدد الكلور
اصنع ثنائي الفينيل متعدد الكلور
اصنع ثنائي الفينيل متعدد الكلور

جعل ثنائي الفينيل متعدد الكلور والتعبئة. تنبيه … لقد ارتكبت خطأ في لوحة الدوائر المطبوعة عند التوصيلات ذات 4 سنون لتوصيل المستشعرات الصوتية. كان من المقرر توصيل كل من ECHO و TRIGGER Vcc والأرضيات في ثنائي الفينيل متعدد الكلور. لا توجد مساحة كافية للموصلات ، لذا فقد صنعت ثنائي الفينيل متعدد الكلور بمنافذ توصيل. لذلك يمكنك لحام موصل سلكي بلوحة الدوائر المطبوعة وتوصيله بأجهزة الاستشعار الصوتية الفعلية. بالنسبة للمصابيح ، أضع المصابيح الصفراء على الحافة الداخلية والأحمر في الخارج. يساعدك هذا على معرفة ما إذا كانت المستشعرات تقيس بشكل صحيح عن بعد.

هذا هو واحد من ثنائي الفينيل متعدد الكلور الذي صنعته على الإطلاق. أفضل أن أجعل جانبين منفصلين وأركض لاعبا. ولكن للحصول على شاشة LED ، فأنت بحاجة إلى أعلى ثنائي الفينيل متعدد الكلور على الأقل. لقد فصلت التنسيق في التنزيل.

PCB مخصص لـ pro-mini مع A4-A5 داخل رأس الحافة. في كلتا الحالتين ، ما عليك سوى توصيل A4-A5 بـ Master A4-A5. لا تنسى Vcc و Grounds أيضًا.

الخطوة الثانية: العديد من الأخطاء

أخطاء كثيرة
أخطاء كثيرة

الآن بسبب أخطائي … حاولت تشغيل المشغلات دفعة واحدة (جميعها مرتبطة ببعضها البعض) وعمل هذا النوع جيدًا ولكن حدثت بعض التفاعلات. لذا الآن تذهب جميع أجهزة ECHOS إلى الميكرو (8) ويتم تعيين المشغلات بواسطة 595. ثلاثة دبابيس أخرى (3). أما بالنسبة لمصابيح LED ، فلن تعمل مضاعفة الإرسال. أنت بحاجة إلى وقت تشغيل كامل لكل مصباح. هذا يعني أن كل صف من 7 مصابيح LED يجب أن يكون له 595 خاصًا به. بمجرد تحديث 595 ، تظل المصابيح مضاءة حتى التحديث التالي. حيث تعدد إرسال الأضواء فقط لعشر الثانية. هذا يعمل جيدًا في قرائي ويحتاج إلى جهاز ميكرو مخصص. لا وقت لمسح 8 مستشعرات صوتية وقياس المسافات. حاولت وحصلت على نتائج سيئة للغاية. سيعني مضاعفة المصابيح أيضًا شبكة من الصفوف + العمود وهذا يعني حوالي 64+ تغذية من خلال ثنائي الفينيل متعدد الكلور.

لقد استخدمت 7 مخرجات فقط من 595 بسبب الفوضى على ثنائي الفينيل متعدد الكلور. على مسافة لا يمكنك معرفة ما إذا كان هناك 7 أو 8 مصابيح LED فقط حركتهم. قد تميل إلى ربط جميع المصابيح بمقاوم واحد وهذا يعمل ، لكن سطوع المصفوفة يتغير مع كمية المصابيح الخفيفة. لذلك فإن المقاوم الواحد هو الأفضل. أنا فقط أحب 595 ولكن إذا قاموا للتو بتحريك دبابيس Vcc و 0-out أو صنعوا 18 دبوسًا مع جميع المخرجات على نفس الجانب … فسيكون توصيل جميع المخرجات الثمانية أمرًا سهلاً للغاية. ولكن بعد ذلك لن يتم بيعها بأقل من 30 سنتًا.

الخطوة 3: أجهزة استشعار جبل

مجسات جبل
مجسات جبل
مجسات جبل
مجسات جبل
مجسات جبل
مجسات جبل
مجسات جبل
مجسات جبل

قم بلصق مستشعرات صوتية على غطاء القهوة. يحتاج جاك الذكور إلى الانحناء إلى الداخل على كل مستشعر. يعمل هذا بشكل أفضل إذا قمت بثني دبوس واحد في كل مرة. لقد استخدمت شريطين رغويين جانبيين بحيث يكون الاهتزاز أقل. أجهزة الاستشعار الخاصة بي قريبة جدًا وتحتاج إلى مساحة 1/4 بوصة لتتناسب مع PCB بشكل أفضل. لقد استخدمت أجهزة استشعار صوتية من قبل وأحيانًا يفشل أحدهم في القياس بدقة وتحتاج إلى وضع ذلك في الاعتبار. لذلك لا تقم بصمغها جميعًا بشكل دائم.

كما أنه يساعد في إجراء اختبار مسافة سريع على كل اختبار قبل استخدامه. أحصل على جهاز استشعار واحد بقراءة سيئة في دفعة من 20. ليس سيئًا بالنسبة للسعر الذي دفعته.

الخطوة 4: سلك صلب

سلك صلب
سلك صلب

اعتقدت أنه سيكون هناك مجال للرافعات والمقابس من جهاز الكمبيوتر إلى

دبابيس سونيك لكنني نفدت من الغرفة. لذلك قمت بتوصيل طرف ثنائي الفينيل متعدد الكلور بقوة وقمت للتو بعمل صدى وأسلاك زناد بمقابس أنثى (8ea). لقد ربطت بين المستشعرات 8ea Vcc و 8ea معًا ، لذا فقد أدى ذلك إلى توصيل 2 فقط بـ PCB لهما.

مع 8 مستشعرات و 8 595 ثانية ، لا يمكن لـ uno أو pro-mini تشغيل هذا. يجب أن يكون هناك مصدر منظم بجهد 5 فولت كجزء من هذا المشروع. يحتوي الروبوت الخاص بي على 7805 @ 1amp بسيط من البطاريات. هذا يرتبط بجميع 5 فولت Vcc لجميع الأجهزة. 7805 يسقط حوالي فولت ، لذا فأنت بحاجة إلى 6.5 فولت على الأقل لإطعامه. أي بطاريتي ليثيوم عند 3.3 فولت. يحتوي الروبوت الخاص بي على أجهزة nicads قديمة من حزم الحفر المستخدمة ، ويعمل 8 nicads على محرك الصين النموذجي المزود بجهد 12 فولت في هيكل من نوع الخزان بقيمة 20 دولارًا.

الخطوة 5: تنزيل رسم سونيك

قم بتنزيل رسم سونيك
قم بتنزيل رسم سونيك

قم بتنزيل المخطط وتثبيته. هناك طرق عديدة للتحدث إلى

uno آخر لكني أحب I2c. الارتباك هو معالجة السيد / العبد. كما هو الحال مع معظم المستشعرات (فكر في المصغر الثاني كمستشعر) ، فإنك تخاطب المستشعر وتطلب x مقدار البايت. نفس الشيء هنا. في المصغر الثاني ، خصصت x مقدار البايت الذي تريد إرساله. اللبس هو أن الأسماء لا تهم. يساعدك فقط على تذكر ما إذا كنت تشارك الأسماء. لذلك في الرسم ، أرسل قياسات المسافة الصوتية الثمانية بالسنتيمتر مثل sendR1 و sendR2 و sendR3 و sendR4 و sendL1 و sendL2 و sendL3 و sendL4. يحصل المعلم على 8 بايت فقط إذا كانت البيانات ويمكنك استدعاء هذه البايتات بأي شيء تريده. قرأتها كـ gotR1، gotR2، got….. ترتيب البايت المرسل هو نفسه. لذا فإن البايت أ ، ب ، ج … لا تفكر بتغيير الاسم سيمنحك بيانات مختلفة. والمصيد الآخر ، يمكنك فقط تلقي البيانات التي يُطلب منك إرسالها. لذلك إذا كنت تريد بيانات أخرى ، يجب عليك تغيير كل من الرئيسي والعبد.

الخطوة 6: التواصل

الاتصالات
الاتصالات

يمكنك تخطي هذا إذا كنت تعرف كيفية إعداد 2 Uno للتحدث مع بعضهما البعض. لدي بعض الحكايات من المعلومات في النهاية. لتسهيل الأمر ، سأقوم باستدعاء uno في قاعدة الروبوت M1 والمستشعر الصوتي كـ S2. قم بتوصيل Vcc ، أرضي ، A4 ، A5 ببعضها البعض.

في الرسم التخطيطي لـ S2 يبدأ بـ # include

ثم قم بإنشاء 8 بايت لإرسالها. بايت R1 ، بايت R2 ، بايت L1 إلخ. Uno عبارة عن ميكرو 8 بت لذا يرسلون 1 بايت في وقت واحد باستخدام "بايت" بدلاً من "int" صحيح.

في 'setup ()' أضف 'Wire.begin (العنوان)' هذا يخبر I2c عن الجهاز هذا. عادة ما يكون العنوان هو أي رقم تريده بين 4 - 200. بحجم بايت واحد. استخدمت هنا الرقم 10. للتحدث إلى هذا المستشعر S2 ، يجب على السيد الاتصال بـ Wire.requestFrom (10 ، 8). هذا هو العنوان 10 و 8 هو عدد البايت المطلوب. أيضًا في 'setup ()' أضف Wire.onRequest (isr anyName). عندما يستدعي M1 الطلب ، يتفاعل مستشعر S2 مع المقاطعة. هذا فقط يستدعي الوظيفة anyName. لذلك يجب إنشاء وظيفة anyName هذه. انظر إلى الرسم التخطيطي وشاهد الوظيفة "sendThis ()" هذا هو المكان الذي يتم فيه إرسال البايتات بالفعل إلى M1. البايتات وحدها تذهب وليس الأسماء وترتيب الإرسال. هذا هو المكان الذي يبدأ منه حجم ومقدار البيانات المراد إرسالها. في هذا التنسيق السهل للبايت يجب أن يتطابق الإرسال والاستقبال. أرسلت هنا 8 بايت وتلقى 8 بايت. ملاحظة واحدة هنا تستدعي وظيفة تتطلب (). مثل التأخير () ، بالمللي () ، Serial.print (). عند استخدام ISR (روتين خدمة المقاطعة) ، يؤدي استدعاء الوظيفة إلى إسقاط (). لذلك Wire.onRequest (sendThis) وليس Wire.onRequest (sendThis ()).

الارتباك الذي أصابني كان أمر السيد / العبد. في البداية اعتقدت أن السيد كان دائمًا هو السيد. ولكن في المخطط ، يمكنك التبديل بين الرئيسي / التابع للطلب من وحدات ميكروية أخرى أو إرسالها إلى وحدات ميكروية أخرى. طالما اتبعت التنسيق الأساسي الموضح أعلاه. تذكر … أنك تشارك البيانات التي تم تعيينها فقط.

اثنين من بتات الحائط المد. المقاطعة ISR تقطع فقط بين خطوط الرسم. إذا كنت مغلقًا في حلقة "while أو for" ، فلن يحدث شيء حتى تخرج الحلقة. ليست مشكلة كبيرة لأن هذا قد يكون بضعة ميكروثانية والبيانات قديمة.

المشكلة الأخرى ، "داخل" الجزئي يوجد حساب خالٍ من الأخطاء بنسبة 100٪. أي اتصال "خارجي" (سلكي) عرضة للأخطاء. هناك العديد من الطرق للتحقق من أن البيانات المقدمة خالية من الأخطاء ومطابقة للمصدر. أسهل طريقة هي باستخدام المجموع الاختباري. ما عليك سوى إضافة إجماليات وحدات البايت المرسلة (القيم الفعلية) وإرسال الإجماليات وعلى الطرف المستلم إضافة الإجماليات ومعرفة ما إذا كانت متطابقة. إذا تطابقوا بشكل جيد أو ألقوا مجموعة البيانات هذه إذا لم يكونوا كذلك. بالطبع هذا ينطوي على إرسال قيمة عدد صحيح وليس بايت. لذلك قمت فقط بتقسيم العدد الصحيح إلى HI بايت و LO بايت وإرساله كبايت منفصل. ثم ضعها معًا في جهاز الاستقبال.

سهل:

كثافة العمليات س = 5696 ؛ (أي قيمة int صالحة ، الحد الأقصى هو 65 كيلو أو 32 كيلو بايت سالب)

البايت hi = x >> 8 ؛ (22)

بايت لو = س ؛ (64)

إرسال البايت والجمع في نهاية أخرى….

البايت hi = Wire.read () ،

بايت لو = Wire.read () ؛

int newx = (hi << 8) + lo ؛ (5696)

الخطوة 7: الإغلاق

إغلاق
إغلاق
إغلاق
إغلاق
إغلاق
إغلاق
إغلاق
إغلاق

للإغلاق ، يمنح هذا المستشعر الصوتي اللوحة الأم بيانات المسافة الأولية في الوقت الفعلي. هذا يحرر المايكرو ويجعل الرسم أقل تعقيدًا. يمكن الآن للمايكرو أن يتخذ قرارًا جيدًا بالإبطاء أو التدوير أو الإيقاف أو العكس بناءً على بيانات جيدة بدلاً من التخمينات العشوائية. شاهد رسالتي الأخرى حول bluetooth IDE لتحميل الرسومات بدون أسلاك والاضطرار إلى توصيل الروبوت الخاص بك طوال الوقت لتغيير سريع في الرسم التخطيطي الخاص بك. شكرا لمشاهدة هذا. أولدمان

موصى به: