جدول المحتويات:
- الخطوة 1: ما سوف تحتاجه
- الخطوة 2: البناء: لوحة التحكم ، إعداد الدرع
- الخطوة 3: البناء: لوحة التحكم ، توصيل الدرع
- الخطوة 4: البناء: وحدات التحكم ، إعداد أجزائك
- الخطوة 5: اختياري: المرفقات
- الخطوة السادسة: البرمجة: Arduino
- الخطوة السابعة: البرمجة: HTML
- الخطوة الثامنة: البرمجة: P5.js و Javascript
- الخطوة 9: تشغيل البرنامج الخاص بك
- الخطوة 10: المضي قدمًا
فيديو: وحدات تحكم اردوينو: 10 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:41
نظام تحكم لعبة Arduino باستخدام Arduino ومكتبة p5.js ، الفكرة من ذلك هي إنشاء مشروع Arduino يمكن تكراره وتوسيعه بسهولة. تم تصميم اتصالات وحدة التحكم لاستخدام مجموعة من أجهزة الاستشعار والمدخلات المختلفة التي يمكن تبادلها اعتمادًا على كل وحدة تحكم.
تم تصميم هذا المشروع أيضًا للاستفادة من مكتبة جافا سكريبت p5.js جنبًا إلى جنب مع مكتبة p5.play المصممة لـ p5.js. تسمح لنا هذه المكتبات ببرمجة ألعابنا بسهولة. يحتوي موقع الويب p5.play على مجموعة من البرامج التعليمية والأمثلة للمستخدمين لإنشاء ألعاب لها. يتيح هذا المشروع للمستخدمين ممارسة مهارات تطوير الأجهزة والبرامج الخاصة بهم.
الخطوة 1: ما سوف تحتاجه
أدوات:
- لحام حديد
- جندى
- أدوات تقشير الأسلاك
- القواطع الجانبية
- كماشة
المعدات:
- لوحة متوافقة مع Arduino (لقد استخدمت Sparkfun Redboard بالإضافة إلى Arduino Uno و Leonardo)
-
مجلس الأداء:
- ألواح عطاء خضراء مقاس 8 سم × 6 سم
- لوحة أداء Aduino Uno shield
-
مجسات مختلفة
- المقود
- الأزرار (بمقاومات ، 10 كيلو أوم ، لتلائمهم)
- مقاييس الجهد
- فليكس سينسورز
- أجهزة استشعار الضغط
- إلخ…
-
الأسلاك:
- سلك واحد (استخدمت 26 AWG Solid)
- سلك الشريط ويجعد
- كسر الرؤوس بعيدًا (20 منها على الأقل)
-
أجهزة اختيارية (يمكنك استخدام روابط الورق المقوى و hotglue / zip بدلاً من ذلك):
- كابلات اللوح والطائر للنماذج الأولية
- حاويات مطبوعة ثلاثية الأبعاد
- مثبتات الأجهزة (استخدمت مسامير M2.5)
برمجة:
- اردوينو IDE
-
مكتبة p5.js
مكتبة P5.play كذلك
- p5.serialcontrol
- Node.js
الخطوة 2: البناء: لوحة التحكم ، إعداد الدرع
قم بتلحيم الرؤوس في لوحة أداء Arduino Uno shield.
- لقد بدأت برؤوس الدرع (الطاقة والتناظرية والرقمية)
- فيما يلي دبابيس الرأس 2 × 5. يمكنك استخدام رؤوس 2 × 5 ، أو صفين فقط من 5 رؤوس منفصلة. لقد اصطفت مع A3 و A4 عموديًا ، وتركت مسافتين بينهما.
الخطوة 3: البناء: لوحة التحكم ، توصيل الدرع
بعد ذلك ، نريد توجيه أسلاكنا على الدرع. من الأسهل تشغيل الأسلاك من الأعلى ، ولكن إذا كنت تريد مظهرًا أنظف يمكنك تشغيلها في الأسفل.
تريد الانتباه إلى التخطيطي (مخطط النسر متاح للتنزيل) عند توجيه هذه الأسلاك. يمكنك أيضًا إلقاء نظرة على دليل الألوان لمساعدتك في ذلك.
تتمثل فكرة تصميم الدرع هذا في السماح بـ 3 مدخلات تناظرية و 5 مدخلات رقمية من كل وحدة تحكم. يستفيد هذا بشكل كامل من جميع المدخلات التناظرية على Arduino Uno بالإضافة إلى الأسلاك المتبقية على كابل الشريط الخاص بنا.
الخطوة 4: البناء: وحدات التحكم ، إعداد أجزائك
الخطوة الأولى لبناء وحدة التحكم الخاصة بك هي تخطيط أجهزة الاستشعار التي يجب استخدامها. في الأمثلة الخاصة بي ، لدي وحدة تحكم قياسية جدًا مع ذراع تحكم وبضعة أزرار. لدي أيضًا وحدة تحكم مزودة بمقياس جهد منزلق.
إذا كنت ترغب في تكرار هذا ، يمكنك عرض صوري من أجل التنسيب.
الخطوة التالية هي لحام كابل الشريط بلوحة الأداء.
- قم بفصل وقصدير كابل الشريط
- قم بتوصيل كابل الشريط بأعلى منتصف لوحة الأداء.
الخطوة التالية هي تحديد مسار الأسلاك الخاصة بك. لقد بدأت بتوصيل الطاقة (5 فولت / السلك الأحمر) والأرض (السلك البني) إلى المستشعرات أولاً. ثم قمت بتوصيل المدخلات التناظرية. لقد وجدت أنه من السهل استخدام الكبل البرتقالي (تناظري A0 أو A3) للحركة الأفقية والكابل الأصفر (تناظري A1 أو A4) للحركة الرأسية.
للحفاظ على اتساق الأمور ، قمت أيضًا بتوصيل زر ضغط صغير باللون الأرجواني على جميع وحدات التحكم الخاصة بي. هذا مفيد لأشياء مثل إغلاق المنفذ التسلسلي (سأنتقل إلى هذا لاحقًا) بالإضافة إلى القوائم أو الخيارات.
لقد قمت بتحميل مخطط سريع لوحدة التحكم في ذراع التحكم إذا كنت ترغب في إلقاء نظرة على هذا. من الرسم التخطيطي الخاص بنا ، يمكنك رؤية إمكانية اتصال كل وحدة تحكم (3 مداخل تناظرية ، و 5 رقمية).
الخطوة 5: اختياري: المرفقات
هذه الخطوة اختيارية ، ولكن إذا كان لديك وصول إلى طابعة ثلاثية الأبعاد ، فستبدو نتيجة مشروعك أكثر دقة وانتهاءً. كما ترون في النماذج الأولية الخاصة بي ، فقد استخدمت قطعة بسيطة من الورق المقوى لمنع مفاصل اللحام الموجودة في الجزء السفلي من لوحات الأداء من النقر بأصابعك.
يمكنك العثور على النماذج ثلاثية الأبعاد الخاصة بي مرفقة بهذه الخطوة. لقد قمت بإنشاء حاويات للمحور لكل من Arduino Uno / Leonardo و Sparkfun RedBoard (هذه اللوحة أوسع قليلاً وتستخدم USB صغيرًا).
بالنسبة لوحدات التحكم ، يمكنك إرفاقها بمسامير M2.5. احتفظت بالجوز على جانب ثنائي الفينيل متعدد الكلور واستخدم غسالة ومسمارًا في الأسفل.
لقد قمت أيضًا بتضمين نموذج ثلاثي الأبعاد لمنزلق المقبض لمقاييس الجهد التي استخدمتها.
يمكنك العثور على جميع الملفات ثلاثية الأبعاد على GitHub.
الخطوة السادسة: البرمجة: Arduino
لنبدأ بإعداد رسم بسيط للاختبار. أقترح استخدام البرنامج التعليمي الذي أنشأته ITP في جامعة نيويورك الموجود هنا. للقيام بهذا البرنامج التعليمي ، سوف تحتاج إلى تثبيت p5.serialcontroll و node.js. في هذا البرنامج التعليمي ، سيتم تقديمك لإعداد Arduino لإرسال البيانات التسلسلية التي يمكن استخدامها بواسطة مكتبة جافا سكريبت لدينا ، p5.js. يمكنك استخدام المحور ووحدة التحكم التي أنشأناها في الخطوات السابقة للقيام بذلك ، أو يمكنك نسخ الدوائر الموضحة في البرنامج التعليمي. يستخدم هذا البرنامج التعليمي دبوس الإدخال التمثيلي A0 الموجود على Arduino Uno والذي تم تعيينه على السلك البرتقالي لوحدة التحكم الأولى.
يمكن العثور على البرنامج التعليمي التالي الذي تريد متابعته هنا. سيرشدك هذا البرنامج التعليمي خلال إعداد مدخلات متعددة واستخدامها في p5.js. في البرنامج التعليمي ، يتم استخدام المدخلات التناظرية A0 و A1. سوف تتوافق هذه مع الأسلاك البرتقالية والصفراء على وحدة التحكم 1 في نظامنا.
بمجرد الانتهاء من الدروس المذكورة أعلاه ، يمكننا برمجة Arduino. الكود الذي نريد استخدامه أدناه:
// تحكم 1const int dig2 = 2 ؛ // blue const int dig3 = 3 ؛ // الأرجواني const int dig4 = 4 ؛ // grey const int dig5 = 5 ؛ // الأبيض const int dig6 = 6 ؛ // أسود // تحكم 2 const int dig7 = 7 ؛ // blue const int dig8 = 8 ؛ // الأرجواني const int dig9 = 9 ؛ // grey const int dig10 = 10 ؛ // الأبيض const int dig11 = 11 ؛ //أسود
الإعداد باطل() {
Serial.begin (9600) ؛ while (Serial.available () <= 0) {Serial.println ("hello") ؛ // إرسال تأخير رسالة البداية (300) ؛ // انتظر 1/3 ثانية} pinMode (dig2 ، INPUT) ؛ pinMode (dig3 ، الإدخال) ؛ pinMode (dig4 ، الإدخال) ؛ pinMode (dig5 ، الإدخال) ؛ pinMode (dig6 ، الإدخال) ؛ pinMode (dig7 ، الإدخال) ؛ pinMode (dig8 ، الإدخال) ؛ pinMode (dig9 ، الإدخال) ؛ pinMode (dig10 ، الإدخال) ؛ pinMode (dig11 ، INPUT) ؛ }
حلقة فارغة() {
إذا (Serial.available ()> 0) {// اقرأ البايت الوارد: int inByte = Serial.read () ؛ // اقرأ المستشعر:
// وحدة تحكم ANALOG 1
int analog0 = analogRead (A0) ؛ int analog1 = analogRead (A1) ؛ int analog2 = analogRead (A2) ؛ // ANALOG Controller 2 int analog3 = analogRead (A3) ؛ int analog4 = analogRead (A4) ؛ int analog5 = analogRead (A5) ؛ // DIGITAL Controller 1 int digital2 = digitalRead (dig2) ؛ int digital3 = digitalRead (dig3) ؛ int digital4 = digitalRead (dig4) ؛
int digital5 = digitalRead (dig5) ؛
int digital6 = digitalRead (dig6) ؛ // DIGITAL Controller 2 int digital7 = digitalRead (dig7) ؛ int digital8 = digitalRead (dig8) ؛ int digital9 = digitalRead (dig9) ؛ int digital10 = digitalRead (dig10) ؛ int digital11 = digitalRead (dig11) ؛ // طباعة النتائج: Serial.print (analog0) ؛ // [0] Serial.print ("،") ؛ Serial.print (analog1) ؛ // [1] Serial.print ("،") ؛ Serial.print (analog2) ؛ // [2] Serial.print ("،") ؛ // بدء تشغيل بيانات وحدة التحكم 2 Serial.print (analog3) ؛ // [3] Serial.print ("،") ؛ Serial.print (analog4) ؛ // [4] Serial.print ("،") ؛ Serial.print (analog5) ؛ // [5] Serial.print ("،") ؛ Serial.print (رقمي 2) ؛ // [6] Serial.print ("،") ؛ Serial.print (digital3) ؛ // [7] Serial.print ("،") ؛ Serial.print (digital4) ؛ // [8] Serial.print ("،") ؛ Serial.print (digital5) ؛ // [9] Serial.print ("،") ؛ Serial.print (digital6) ؛ // [10] Serial.print ("،") ؛ // بدء تشغيل وحدة التحكم 2 بيانات Serial.print (digital7) ؛ // [11] Serial.print ("،") ؛ Serial.print (digital8) ؛ // [12] Serial.print ("،") ؛ Serial.print (digital9) ؛ // [13] Serial.print ("،") ؛ Serial.println (digital10) ؛ // [14] Serial.print ("،") ؛ Serial.println (رقمي 11) ؛ //[15] } }
يرسل هذا الرمز البيانات التسلسلية من كل من وحدات التحكم لدينا كمصفوفة من 16 رقمًا. أول 6 من هذه الأرقام هي مدخلاتنا التناظرية (تتراوح من 0-1023) والقيم العشر المتبقية هي قيمنا الرقمية (0 أو 1).
بمجرد تحميل الكود الخاص بنا ، يمكننا اختبار ذلك عن طريق فتح الشاشة التسلسلية وكتابة قيمة في الشاشة التسلسلية كما فعلنا في البرنامج التعليمي الثاني من ITP. يجب أن نحصل على سلسلة من قيمنا مفصولة بفواصل.
الخطوة السابعة: البرمجة: HTML
بمجرد إعداد Arduino وتشغيله ، يمكننا البدء في برمجة مواد الويب الخاصة بنا. كود HTML بسيط للغاية.
الجسم {المساحة المتروكة: 0 ؛ الهامش: 0؛}
يربط كود html ملفات جافا سكريبت ببعضها البعض. سيحدث معظم الكود لدينا في ملف.js التخطيطي.
الخطوة الثامنة: البرمجة: P5.js و Javascript
بمجرد الانتهاء من إعداد HTML الخاص بنا ، يمكننا العمل على JavaScript الخاص بنا. إذا لم تكن قد قمت بذلك بالفعل ، فيجب عليك الآن تنزيل p5.js وكذلك p5.play وإضافتها إلى مجلد المكتبات في دليل موقع الويب الخاص بك.
- p5.js
- p5.play
في خطوتنا السابقة ، قمنا بإعداد ملف HTML الخاص بنا لاستدعاء مكتبات p5.js و p5.play. قمنا أيضًا بإعداده لاستخدام ملف sketch.js حيث سنقوم بمعظم برامجنا. يوجد أدناه رمز هيكلنا العظمي. يمكنك أيضا أن تجدها هنا.
// المسلسل متغيرات المتغيرات المتسلسلة ؛ // متغير للاحتفاظ بمثيل من مكتبة المنفذ التسلسلي var portName = 'COM4' ؛ // أدخل اسم المنفذ التسلسلي الخاص بك هنا // Global Game Variables ---------------
// وظيفة الإعداد ----------------------
إعداد الوظيفة () {createCanvas (640، 480) ؛ المسلسل = p5. SerialPort () جديد ؛ // إنشاء مثيل جديد لمكتبة المنفذ التسلسلي serial.on ('list'، printList)؛ // تعيين وظيفة رد لحدث serial.port قائمة المنفذ التسلسلي ('متصل' ، serverConnected) ؛ // رد الاتصال للاتصال بالخادم serial.on ('open'، portOpen)؛ // رد الاتصال للمنفذ المفتوح serial.on ('data'، serialEvent)؛ // رد الاتصال عندما تصل البيانات الجديدة إلى serial.on ('error'، serialError)؛ // رد الاتصال للأخطاء serial.on ('close'، portClose)؛ // رد الاتصال لإغلاق المنفذ serial.list () ؛ // قائمة المنافذ التسلسلية serial.open (portName) ؛ // open a serial port} // Draw Function ----------------------- function draw () {background (0)؛ // black background} // تفسير البيانات التسلسلية هنا ---------- function serialEvent () {// قراءة سلسلة من المنفذ التسلسلي // حتى تحصل على حرف إرجاع و newline: var inString = serial. readStringUntil ('\ r / n') ؛ // تحقق لترى أن هناك بالفعل ssetring هناك: if (inString.length> 0) {if (inString! == 'hello') {// إذا تلقيت ترحيبًا ، فتجاهلها var sensors = split (inString، '، ') ؛ // قسّم السلسلة على الفواصل إذا (sensors.length> 16) {// إذا كان هناك ستة عشر عنصرًا (6 تناظرية ، 10 رقمية) // استخدم بيانات المستشعر هنا:
}
} serial.write ('x')؛ // أرسل بايت يطلب المزيد من البيانات التسلسلية}} // احصل على قائمة المنافذ: function printList (portList) {// portList عبارة عن مصفوفة من أسماء المنافذ التسلسلية لـ (var i = 0؛ i <portList.length؛ i ++) {// اعرض قائمة وحدة التحكم: print (i + "" + portList )؛ }} function serverConnected () {print ('متصل بالخادم.')؛ } function portOpen () {print ('the serial port open.')} function serialError (err) {print ('حدث خطأ ما في المنفذ التسلسلي.' + err)؛ } function portClose () {print ('The serial port closed.')؛ } function closCode () {serial.close (portName)؛ عودة فارغة ؛ } window.onbeforeunload = closCode ؛
بمجرد حفظ الهيكل العظمي. يمكنك استخدام هذه القيم بشكل مشابه لكيفية إجرائها في برنامج ITP التعليمي. يتم إرسال سلسلة القيم التي أرسلناها من Arduino في الخطوة 6 كمصفوفة من 16 رقمًا. أدناه حيث نقوم بتحليل هذه المجموعة.
// تفسير البيانات التسلسلية هنا ----------
function serialEvent () {// قراءة سلسلة من المنفذ التسلسلي // حتى تحصل على إرجاع السطر والسطر الجديد: var inString = serial.readStringUntil ('\ r / n')؛ // تحقق لترى أن هناك بالفعل ssetring هناك: if (inString.length> 0) {if (inString! == 'hello') {// إذا تلقيت ترحيبًا ، فتجاهلها var sensors = split (inString، '، ') ؛ // قسّم السلسلة على الفواصل إذا (sensors.length> 16) {// إذا كان هناك ستة عشر عنصرًا (6 تناظري ، 10 رقمي) // استخدم بيانات المستشعر هنا:}} serial.write ('x')؛ // إرسال بايت لطلب المزيد من البيانات التسلسلية}}
يمكننا الآن تشغيل برنامجنا لمعرفة ما إذا كان يعمل!
الخطوة 9: تشغيل البرنامج الخاص بك
يمكننا الآن تشغيل برنامجنا لمعرفة ما إذا كان يعمل أم لا. يمكنك إما إنشاء لعبتك الخاصة باستخدام ملف skeleton.js في ملفنا السابق أو يمكنك استخدام لعبة الأنابيب البسيطة الموجودة هنا.
على غرار مختبر ITP ، لتشغيل برنامجنا ، سوف نتبع الخطوات أدناه.
- قم بتوصيل Arduino بوحدة التحكم (وحدات التحكم) التي تخطط لاستخدامها.
- افتح p5.serialcontrol
- قم بتغيير منفذ رسم p5 الخاص بك إلى المنفذ الذي تستخدمه (إذا كنت تستخدم الهيكل العظمي ، فهذا موجود في السطر 3)
- افتح ملف HTML الذي يرتبط برسم p5 الخاص بك
إذا كان لديك وسائط خارجية مثل الصور أو الخطوط التي تم تنزيلها ، فستحتاج إلى تشغيلها على الخادم. يمكنك تشغيل خادم بيثون محلي بسيط إذا كنت ترغب في ذلك.
الخطوة 10: المضي قدمًا
للمضي قدمًا وتطوير المزيد من الألعاب لهذا الغرض ، يمكنك اتباع أمثلة مختلفة من p5.play الموجود هنا. يوجد أدناه مثال على لعبة أكثر تعقيدًا قمت بإنشائها. إنها لعبة تصويب دبابات 1 مقابل 1. يمكنك العثور على جميع الموارد الخاصة به على GitHub.
موصى به:
تحكم اردوينو LED مع عصا تحكم تناظرية: 6 خطوات
التحكم في Arduino LED مع عصا التحكم التناظرية: في هذا البرنامج التعليمي سوف نتعلم كيفية استخدام عصا التحكم التناظرية للتحكم في مؤشر LED
كيف تصنع لعبة متعددة اللاعبين باستخدام وحدات تحكم Arduino: 6 خطوات
كيف تصنع لعبة متعددة اللاعبين باستخدام وحدات تحكم Arduino: هل تساءلت يومًا كيف ينشئ مطورو الألعاب ألعابًا مذهلة يستمتع بها الناس في جميع أنحاء العالم؟ حسنًا ، سأقدم لك اليوم تلميحًا بسيطًا حول هذا الموضوع من خلال إنشاء لعبة صغيرة متعددة اللاعبين سيتم التحكم فيها إما عن طريق Arduino contro
روبوت اردوينو مع وحدة تحكم PS2 (عصا تحكم بلاي ستيشن 2): 10 خطوات (مع صور)
Arduino Robot With PS2 Controller (PlayStation 2 Joystick): في هذا البرنامج التعليمي ، سأوضح لك كيفية استخدام عصا التحكم اللاسلكية Playstation 2 (PS2) لتجربة خزان آلي. تم استخدام لوحة Arduino Uno في صميم هذا المشروع. يستقبل أوامر من جهاز التحكم اللاسلكي ويضبط سرعة المحركات
أرخص اردوينو -- أصغر اردوينو -- اردوينو برو ميني -- البرمجة -- اردوينو نينو: 6 خطوات (مع صور)
أرخص اردوينو || أصغر اردوينو || اردوينو برو ميني || البرمجة || اردوينو نينو: …………………………. الرجاء الاشتراك في قناتي على يوتيوب لمزيد من مقاطع الفيديو ……. يدور هذا المشروع حول كيفية التعامل مع أصغر وأرخص اردوينو على الإطلاق. أصغر وأرخص اردوينو هو اردوينو برو ميني. إنه مشابه لاردوينو
وحدة تحكم محمولة مع وحدات تحكم ومستشعرات لاسلكية (Arduino MEGA & UNO): 10 خطوات (مع صور)
وحدة تحكم محمولة مع وحدات تحكم ومستشعرات لاسلكية (Arduino MEGA & UNO): ما استخدمته: - Arduino MEGA- 2x Arduino UNO- Adafruit 3.5 & quot؛ شاشة لمس TFT 320x480 HXD8357D- صفارة- مكبر صوت 4 أوم 3 وات- مصابيح LED 5 مم- طابعة Ultimaker 2+ مع خيوط PLA سوداء- Lasercutter مع خشب MDF- طلاء بخاخ أسود (للخشب) - 3x nRF24