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

لوحة مفاتيح واحدة 4 × 4: 10 خطوات
لوحة مفاتيح واحدة 4 × 4: 10 خطوات

فيديو: لوحة مفاتيح واحدة 4 × 4: 10 خطوات

فيديو: لوحة مفاتيح واحدة 4 × 4: 10 خطوات
فيديو: أسرار زر Ctrl في لوحة مفاتيح الحاسوب ؟ 2024, سبتمبر
Anonim
لوحة مفاتيح واحدة مقاس 4 × 4
لوحة مفاتيح واحدة مقاس 4 × 4

في كل مرة أرى فيها لوحة مفاتيح ، تأتي مع الكثير من المسامير ، إنها مضيعة كبيرة لدبابيس Arduino ، فهل يمكننا تشغيل لوحة مفاتيح بدبوس واحد فقط؟ الجواب هنا.

الخطوة 1: فاتورة المواد

فاتورة المواد
فاتورة المواد

المعدات:

01 اردوينو UNO

02 اللوح

01 LCD مع I2C

16 أزرار انضغاطية

04 مقاومات 1.5 كيلو أوم

04 مقاومات 620 Ω

04 مقاومات 220

08 مقاومات 100

01 المقاوم 1 كيلو أوم

07 أسلاك توصيل

برمجة:

Arduino IDE مثبت على جهاز الكمبيوتر الخاص بك

الخطوة 2: التخطيطي و Cicruit

التخطيطي و Cicruit
التخطيطي و Cicruit
التخطيطي و Cicruit
التخطيطي و Cicruit

الفكرة كلها هي أن لدينا مصفوفة 4 * 4 من أزرار الضغط متصلة عموديًا بالأرض من خلال الرصاص الأيمن وأفقياً بواسطة الرصاص الآخر (الرصاص الزر) والمقاومات 1.5 kΩ ، 620Ω ، 220Ω ، 100Ω ، نهايات الصفوف الأربعة متصلة بأربعة مقاومات 100 درجة كما هو موضح في التخطيطي.

في كل مرة تضغط فيها على زر ، تغلق الدائرة ويمر التيار عبر مسار مختلف وسلسلة مختلفة من المقاومات ، ولهذا السبب يتلقى الدبوس A0 قراءة تناظرية مختلفة لكل زر ضغط. كل ما تحتاجه الآن هو الترميز.

الخطوة الثالثة: الكود

#يشمل

#يشمل

LiquidCrystal_I2C lcd (0x3f ، 20 ، 4) ؛

زر int = A0 ؛

قراءة int ؛

الإعداد باطل()

{

Serial.begin (9600) ؛

lcd.begin () ،

pinMode (زر ، الإدخال) ؛

اضاءه خلفيه ال سى دى()؛

lcd.print ("Hello World") ؛

تأخير (2000) ؛

lcd.clear () ؛

lcd.print ("دبوس واحد 4 * 4 لوحة المفاتيح") ؛

تأخير (2000) ؛ }

حلقة فارغة()

{

readvalue = analogRead (زر) ،

Serial.println (readvalue) ؛

إذا (readvalue == 852) {lcd.clear ()؛ lcd.print ("A")؛}

آخر {if (readvalue == 763) {lcd.clear ()؛ lcd.print ("B")؛}

آخر {if (readvalue == 685) {lcd.clear ()؛ lcd.print ("C")؛}

آخر {if (readvalue == 965) {lcd.clear ()؛ lcd.print ("D")؛}

else {if (readvalue == 565) {lcd.clear ()؛ lcd.print ("9")؛}

آخر {if (readvalue == 614) {lcd.clear ()؛ lcd.print ("6")؛}

آخر {if (readvalue == 360) {lcd.clear ()؛ lcd.print ("3")؛}

آخر {if (readvalue == 335) {lcd.clear ()؛ lcd.print ("#")؛}

آخر {if (readvalue == 396) {lcd.clear ()؛ lcd.print ("8")؛}

آخر {if (readvalue == 349) {lcd.clear ()؛ lcd.print ("5")؛}

آخر {if (readvalue == 235) {lcd.clear ()؛ lcd.print ("2")؛}

آخر {if (readvalue == 279) {lcd.clear ()؛ lcd.print ("0")؛}

آخر {if (readvalue == 452) {lcd.clear ()؛ lcd.print ("7")؛}

آخر {if (readvalue == 271) {lcd.clear ()؛ lcd.print ("4")؛}

آخر {if (readvalue == 170) {lcd.clear ()؛ lcd.print ("1")؛}

else {if (readvalue == 92) {lcd.clear ()؛ lcd.print ("*")؛} آخر {}}}}}}}}}}}}}}

الخطوة 4: تصحيح القيم

تصحيح القيم
تصحيح القيم

عندما تفتح جهاز العرض التسلسلي ، سيظهر قيمة 1023 ، إذا ضغطت على زر ، فستعطيك قراءة أخرى ، عليك أن تأخذ هذه القيم وتجري بعض التغييرات في الكود

الخطوة الخامسة: المشروع بعد النقد والمراجعة

مشروع بعد النقد والمراجعة
مشروع بعد النقد والمراجعة

ليس هناك شك في أننا جميعًا هنا للتعلم ومشاركة معرفتنا ، بفضل بعض التعليقات التي تركها بعض الأشخاص من المجتمع والتي كانت مفيدة للغاية ، قررت إجراء بعض التعديلات والتحسينات على مشروعي:

الأجهزة:

قررت لحام جميع المكونات في ثنائي الفينيل متعدد الكلور لتجنب مشكلة الاتصال السيئ في ألواح التجارب.

الرمز:

نصحني أحد الأصدقاء باستخدام برنامج debouncing وهو مجرد حلقة (حلقة "for" على سبيل المثال) لجعل البرنامج يستغرق بعض الوقت لاختيار قراءة ، فهذا يعني أنه يحقق الكثير من القراءات (500 في امتحاني) ولكنه يستغرق فقط الأخير.

لـ (i = 1؛ i <= 500؛ i ++) {// خذ فقط 500 مؤشر

value = analogRead (Button)؛} // هذا يساعد على قضاء بعض الوقت في تجنب القراءات السيئة

نصحني صديق آخر بفضله بمقارنة "readvalue" بمجموعة من القيم وليس واحدة لأن "readvalue" تأخذ الكثير من القيم لزر الضغط نفسه. على سبيل المثال ، يعطي الحرف "A" قراءة: 849 ، 850 ، 851 852 ، 853 ، 854 ، 855 لذا فهو نطاق من 7 قيم: عتبة (852) و 3 قيم يسار ويمين. ما يتعين علينا القيام به هنا هو مقارنة القيمة المطلقة للفرق بين "readvalue" و "852" إلى "3".

إذا (abs (readvalue-852) <= 8) {lcd.clear ()؛ lcd.print ("A")؛}

الخطوة 6: بعد بيع بعض الأعمال

بعد بيع بعض الأعمال
بعد بيع بعض الأعمال
بعد بيع بعض الأعمال
بعد بيع بعض الأعمال
بعد بيع بعض الأعمال
بعد بيع بعض الأعمال

الخطوة السابعة: لحظة الحقيقة

كما ترى ، يخلط البرنامج أحيانًا بين الأزرار ولكنه لا يزال يعمل ، من الناحية النظرية لا يوجد شيء خاطئ في الدائرة ولكن الكود يحتاج إلى مزيد من المعايرة.

الخطوة 8: النهاية

أتمنى أن يعجبك هذا المشروع وتحاول القيام به ، فربما ستفعل أفضل مما فعلت.

اسألني إذا كانت لديك أسئلة ، اترك تعليقات ، ولا تنس التصويت لي إذا أعجبك ذلك.

موصى به: