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

استخدم إدخال تناظري واحد لـ 6 أزرار لـ Arduino: 6 خطوات
استخدم إدخال تناظري واحد لـ 6 أزرار لـ Arduino: 6 خطوات

فيديو: استخدم إدخال تناظري واحد لـ 6 أزرار لـ Arduino: 6 خطوات

فيديو: استخدم إدخال تناظري واحد لـ 6 أزرار لـ Arduino: 6 خطوات
فيديو: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, يوليو
Anonim
استخدم 1 مدخل تناظري لـ 6 أزرار لاردوينو
استخدم 1 مدخل تناظري لـ 6 أزرار لاردوينو

لطالما تساءلت كيف يمكنني الحصول على المزيد من المدخلات الرقمية لـ Arduino الخاص بي. لقد خطر لي مؤخرًا أنني يجب أن أكون قادرًا على استخدام أحد المدخلات التناظرية لجلب مدخلات رقمية متعددة. لقد أجريت بحثًا سريعًا ووجدت المكان الذي تمكن الأشخاص من القيام بذلك ، لكن هذا يسمح فقط بالضغط على زر واحد في كل مرة. أريد أن أكون قادرًا على الضغط على أي مجموعة من الأزرار بشكل متزامن. لذلك ، بمساعدة TINKERCAD CIRCUITS ، شرعت في تحقيق ذلك.

لماذا أريد ضغطات زر متزامنة؟ كما هو موضح في تصميم TinkerCad Circuits ، يمكن استخدامه لمدخلات مفتاح DIP لاختيار أوضاع مختلفة داخل البرنامج.

الدائرة التي توصلت إليها تستخدم مصدر 5V المتاح من Arduino وتستخدم 7 مقاومات و 6 أزرار أو مفاتيح.

الخطوة 1: الدائرة

الدائرة
الدائرة

يحتوي Arduino على مدخلات تمثيلية تقبل إدخال من 0 إلى 5 فولت. هذا الإدخال لديه دقة 10 بت ، مما يعني أن الإشارة مقسمة إلى 2 ^ 10 مقاطع ، أو 1024 حسابًا. بناءً على ذلك ، فإن أقصى ما يمكننا إدخاله في الإدخال التناظري مع السماح بالضغط المتزامن سيكون 10 أزرار لمدخل تناظري واحد. لكن هذا ليس عالما مثاليا. هناك مقاومة في الموصلات ، وضوضاء من مصادر خارجية ، وقوة غير كاملة. لذا ، لأمنح نفسي قدرًا كبيرًا من المرونة ، فقد خططت لتصميم هذا لـ 6 أزرار. تأثر هذا جزئيًا بحقيقة أن TinkerCAD Circuits بها كائن 6-Switch DIP Switch ، مما يجعل الاختبار سهلاً.

كانت الخطوة الأولى في تصميمي هي التأكد من أن كل زر ، عند الضغط عليه بشكل فردي ، سيوفر جهدًا فريدًا. هذا يستبعد أن تكون جميع المقاومات بنفس القيمة. كانت الخطوة التالية هي أن قيم المقاومة ، عند إضافتها بالتوازي ، لا يمكن أن يكون لها نفس المقاومة مثل أي قيمة مقاومة واحدة. عندما يتم توصيل المقاومات بالتوازي ، يمكن حساب المقاومة الناتجة عن طريق Rx = 1 / [(1 / R1) + (1 / R2)]. لذلك ، إذا كانت R1 = 2000 و R2 = 1000 ، Rx = 667. لقد توقعت أنه بمضاعفة حجم كل مقاوم ، لن أرى نفس المقاومة لأي من التوليفات.

لذلك ، كانت دائرتي في هذه النقطة تحتوي على 6 مفاتيح ، لكل منها المقاوم الخاص بها. ولكن ، هناك مقاومة أخرى مطلوبة لإكمال هذه الدائرة.

المقاوم الأخير له 3 أغراض. أولاً ، يعمل كمقاوم منسدل. بدون المقاوم ، عندما لا يتم الضغط على أزرار ، تكون الدائرة غير مكتملة. سيسمح هذا للجهد عند مدخل Arduino التناظري بالطفو إلى أي جهد جهد. يقوم المقاوم المنسدل بشكل أساسي بسحب الجهد إلى أسفل إلى 0 فولت. والغرض الثاني هو الحد من تيار هذه الدائرة. ينص قانون أوم على أن V = IR ، أو الجهد = التيار مضروبًا في المقاومة. مع وجود مصدر جهد معين ، فكلما زاد حجم المقاوم يعني أن التيار سيكون أصغر. لذلك ، إذا تم تطبيق إشارة 5V على المقاوم 500ohm ، فإن أكبر تيار يمكن أن نراه سيكون 0.01A ، أو 10mA. الغرض الثالث هو توفير جهد الإشارة. سيكون إجمالي التيار المتدفق خلال المقاوم الأخير هو: i = 5V / Rtotal ، حيث Rtotal = Rlast + {1 / [(1 / R1) + (1 / R2) + (1 / R3) + (1 / R4) + (1 / R5) + (1 / R6)]}. ومع ذلك ، قم فقط بتضمين 1 / Rx لكل مقاوم تم الضغط على الزر المقابل له. من إجمالي التيار ، سيكون الجهد الموفر للإدخال التناظري هو i * Rlast ، أو i * 500.

الخطوة 2: إثبات - Excel

إثبات - إكسل
إثبات - إكسل

كانت الطريقة الأسرع والأسهل لإثبات أنني سأحصل على مقاومات فريدة وبالتالي الفولتية الفريدة مع هذه الدائرة هي استخدام إمكانات Excel.

لقد قمت بإعداد جميع التركيبات الممكنة لمدخلات التبديل وقمت بتنظيم هذه الأنماط الثنائية التالية بالتتابع. تشير القيمة "1" إلى أن المفتاح قيد التشغيل ، بينما تشير القيمة الفارغة إلى إيقاف تشغيله. في الجزء العلوي من جدول البيانات ، وضعت قيم المقاومة لكل مفتاح وللمقاوم المنسدل. ثم قمت بعد ذلك بحساب المقاومة المكافئة لكل مجموعة ، باستثناء حالة إيقاف تشغيل جميع المقاومات لأن هذه المقاومات لن يكون لها تأثير بدون وجود مصدر طاقة يوفرها. لتسهيل حساباتي حتى أتمكن من النسخ واللصق في كل مجموعة ، قمت بتضمين جميع المجموعات في الحساب بضرب كل قيمة مفتاح (0 أو 1) في قيمة المقاومة المعكوسة. يؤدي القيام بذلك إلى القضاء على مقاومته من الحساب إذا كان المفتاح مغلقًا. يمكن رؤية المعادلة الناتجة في صورة جدول البيانات ، ولكن Req = Rx + 1 / (Sw1 / R1 + Sw2 / R2 + Sw3 / R3 + Sw4 / R4 + Sw5 / R5 + Sw6 / R6). باستخدام Itotal = 5V / Req ، نحدد التيار الكلي عبر الدائرة. هذا هو نفس التيار الذي يمر عبر المقاوم المنسدل ، ويوفر لنا الجهد لمدخلنا التناظري. يتم حساب هذا على أنه Vin = Itotal x Rx. عند فحص كل من بيانات Req وبيانات Vin ، يمكننا أن نرى أن لدينا بالفعل قيمًا فريدة.

في هذه المرحلة ، يبدو أن دائرتنا ستعمل. الآن لمعرفة كيفية برمجة Arduino.

الخطوة 3: برمجة اردوينو

برمجة اردوينو
برمجة اردوينو
برمجة اردوينو
برمجة اردوينو
برمجة اردوينو
برمجة اردوينو

عندما بدأت التفكير في كيفية برمجة Arduino ، خططت في البداية لإعداد نطاقات جهد فردية لتحديد ما إذا كان المفتاح قيد التشغيل أو الإيقاف. لكن ، بينما كنت مستلقية على السرير ذات ليلة ، خطر لي أنني يجب أن أكون قادرًا على إيجاد معادلة للقيام بذلك. كيف؟ اكسل. يمتلك Excel القدرة على حساب المعادلات لتناسب البيانات بشكل أفضل في المخطط. للقيام بذلك ، أريد معادلة القيمة الصحيحة للمفاتيح (ثنائي) مقابل إدخال الجهد المقابل لتلك القيمة. في مصنف Excel الخاص بي ، أضع القيمة الصحيحة أسفل الجانب الأيسر من جدول البيانات. الآن لتحديد معادلتى.

إليك برنامج تعليمي سريع حول كيفية تحديد معادلة خط داخل Excel.

1) حدد خلية لا تحتوي على أي بيانات. إذا كان لديك خلية محددة تحتوي على بيانات ، فسيحاول Excel تخمين ما تريد توجيهه. هذا يجعل الأمر أكثر صعوبة في إعداد اتجاه ، لأن Excel نادرًا ما يتنبأ بشكل صحيح.

2) حدد علامة التبويب "إدراج" وحدد مخطط "مبعثر".

3) انقر بزر الماوس الأيمن في مربع الرسم البياني وانقر على "تحديد البيانات …". سيظهر هذا في نافذة "تحديد مصدر البيانات". حدد الزر "إضافة" للاستمرار في تحديد البيانات.

4) أعطها اسم سلسلة (اختياري). حدد النطاق للمحور السيني بالنقر فوق السهم لأعلى ثم تحديد بيانات الجهد. حدد النطاق للمحور الصادي بالنقر فوق السهم لأعلى ثم تحديد عدد صحيح من البيانات (0-63).

5) انقر بزر الماوس الأيمن على نقاط البيانات وحدد "إضافة خط اتجاه …" في نافذة "تنسيق خط الاتجاه" ، حدد الزر متعدد الحدود. بالنظر إلى الاتجاه ، نرى أن الترتيب 2 لا يتطابق تمامًا. لقد اخترت ترتيب 3 وشعرت أن هذا كان أكثر دقة. حدد مربع الاختيار لـ "عرض المعادلة على الرسم البياني". يتم عرض المعادلة النهائية الآن على الرسم البياني.

6) تم.

نعم. العودة إلى برنامج Arduino. الآن بعد أن أصبح لدينا المعادلة ، أصبحت برمجة Arduino سهلة. يتم حساب العدد الصحيح الذي يمثل مواضع التبديل في سطر واحد من التعليمات البرمجية. باستخدام وظيفة "bitread" ، يمكننا الحصول على قيمة كل بت على حدة وبالتالي معرفة حالة كل زر. (انظر الصور)

الخطوة 4: دوائر TinkerCAD

دوائر TinkerCAD
دوائر TinkerCAD

إذا لم تكن قد قمت بفحص TinkerCAD Circuits ، فقم بذلك الآن. انتظر!!!! قم بإنهاء قراءة Instructable الخاص بي ، ثم تحقق من ذلك. تجعل TinkerCAD Circuits اختبار دوائر Arduino أمرًا سهلاً للغاية. يتضمن العديد من الأشياء الكهربائية و Arduinos ، حتى أنه يسمح لك ببرمجة Arduino للاختبار.

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

لإثبات نجاح برمجة Arduino ، قمت بإخراج حالات المفاتيح إلى مصابيح LED ، باستخدام مخرجات Arduino الرقمية.

ثم قمت بتبديل كل مفتاح لكل مجموعة ممكنة وأنا فخور بأن أقول "إنه يعمل" !!!

الخطوة 5: "طويل جدًا ، وشكرًا لجميع الأسماك." (المرجع 1)

لا يزال يتعين علي تجربة ذلك باستخدام معدات حقيقية ، حيث أنني أسافر حاليًا للعمل. ولكن بعد إثبات ذلك مع TinkerCAD Circuits ، أعتقد أنها ستنجح. التحدي هو أن قيم المقاومات التي حددتها ليست كلها قيم قياسية للمقاومات. للتغلب على هذا ، أخطط لاستخدام مقاييس الجهد ومجموعات المقاومات للحصول على القيم التي أحتاجها.

شكرا لك على قراءة تعليماتي. آمل أن يساعدك في مشاريعك.

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

الخطوة 6: المراجع

لم تعتقد أنني سأقدم اقتباسًا دون تقديم إشارة إلى مصدره ، أليس كذلك؟

المرجع. 1: آدامز ، دوغلاس. طالما وشكرا لجميع الأسماك. (الكتاب الرابع من دليل المسافر إلى المجرة "ثلاثية")

موصى به: