جدول المحتويات:
- الخطوة 1: فاتورة المواد
- الخطوة 2: التخطيطي و Cicruit
- الخطوة الثالثة: الكود
- الخطوة 4: تصحيح القيم
- الخطوة الخامسة: المشروع بعد النقد والمراجعة
- الخطوة 6: بعد بيع بعض الأعمال
- الخطوة السابعة: لحظة الحقيقة
- الخطوة 8: النهاية
فيديو: لوحة مفاتيح واحدة 4 × 4: 10 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
في كل مرة أرى فيها لوحة مفاتيح ، تأتي مع الكثير من المسامير ، إنها مضيعة كبيرة لدبابيس 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
الفكرة كلها هي أن لدينا مصفوفة 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: النهاية
أتمنى أن يعجبك هذا المشروع وتحاول القيام به ، فربما ستفعل أفضل مما فعلت.
اسألني إذا كانت لديك أسئلة ، اترك تعليقات ، ولا تنس التصويت لي إذا أعجبك ذلك.
موصى به:
لوحة مفاتيح USB عالمية مع مفاتيح RGB: 6 خطوات
لوحة مفاتيح USB عالمية مع مفاتيح RGB: في هذا التوجيه ، سأوضح لك كيفية إنشاء لوحة مفاتيح USB مخصصة تتصرف تمامًا مثل لوحة مفاتيح الكمبيوتر العادية. يمكنك تعيين أي مجموعة مفاتيح أو تسلسل مفاتيح للضغط عليها أثناء الضغط على زر ضغط واحد فقط. يمكنك استخدامه
شاهد جميع بيانات Fitbit الخاصة بك في لوحة تحكم واحدة: 5 خطوات
شاهد جميع بيانات Fitbit الخاصة بك في لوحة تحكم واحدة: إنه العام الجديد وهذا يعني أن لدينا جميعًا أهدافًا جديدة. الهدف المشترك للعام الجديد هو أن تكون أكثر صحة ، سواء كان ذلك يعني تناول الطعام بشكل أفضل ، أو ممارسة الرياضة بشكل أكبر ، أو أن تكون أكثر نشاطًا بشكل عام. طريقتي المفضلة لتتبع كل ما هو فيتبيت الخاص بي
لوحة مفاتيح سريعة وقذرة (لوحة مفاتيح فارغة): 3 خطوات
لوحة مفاتيح سريعة وقذرة (لوحة مفاتيح فارغة): لوحة مفاتيح داس هي اسم لوحة المفاتيح الأكثر شيوعًا بدون نقوش على المفاتيح (لوحة مفاتيح فارغة). يتم بيع لوحة مفاتيح Das بسعر 89.95 دولارًا. سيرشدك هذا الدليل أثناء إنشاء لوحة مفاتيح قديمة لديك
تنظيف لوحة مفاتيح Apple Aluminium . أو أي لوحة مفاتيح أخرى ناعمة الملمس: 5 خطوات
تنظيف لوحة مفاتيح Apple Aluminium …. أو أي لوحة مفاتيح أخرى ناعمة الملمس: نظيفة مثلك أو قد أحاول الحفاظ على لوحات مفاتيح Apple المصنوعة من الألومنيوم ، فإنها تصبح قذرة بعد عام أو نحو ذلك. هذا التوجيه هو لمساعدتك على تنظيفه. كن حذرًا ، لأنني لست مسؤولاً إذا تعطلت لوحة المفاتيح أثناء القيام بذلك …. SUCKS F
اصنع لوحة اسم مضاءة من مفاتيح لوحة المفاتيح: 6 خطوات
اصنع لوحة اسم مضاءة من مفاتيح لوحة المفاتيح: سيوضح لك هذا Instructable جميعًا كيفية إنشاء لوحة اسم مضاءة من بعض مفاتيح لوحة المفاتيح الخردة وبعض الإلكترونيات. هيا بنا نبدأ