جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
تابع المزيد بالمؤلف:
نظرة عامة حول كيفية ربط CMUCam2 بـ OOPIC.
الخطوة 1: عمل كابل المحول
1. اذهب إلى راديوشاك واشتري 2 من هذه: ذكر DB-9 Solder Cup Connector2. دبوس اللحام 5 على الموصل A إلى السن 5 على الموصل B (إذا نظرت بعناية إلى الموصل ، يتم تمييزها) 3. دبوس اللحام 2 في الموصل A إلى السن 3 في الموصل B (إذا نظرت بعناية إلى الموصل ، يتم تمييزها) 4. دبوس اللحام 3 على الموصل A إلى السن 2 على الموصل B (إذا نظرت بعناية إلى الموصل ، يتم تمييزها)
الخطوة 2: تغيير معدل الباود على CMUCam
قم بتغيير معدل الباود الخاص بـ CMUCamera إلى 9600 باود (أضف وصلة مرور إلى الموضع 0).
الخطوة 3: قم بتوصيل كابل البرمجة القياسي وكود التحميل
قم بتوصيل كابل البرمجة القياسي وقم بتحميل الكود الخاص بك. إليك بعض الأمثلة على الكود لتبدأ. هذا الرمز سوف يتتبع الحركة باستخدام الأمرين LF و FD. سيقوم بتبديل IOLine 7 (متصل بمصباح LED) ويعكس مؤشر حالة التتبع على CMUCam.
& apos ؛ ******** الكائنات ذات الصلة بالمنفذ التسلسلي ******** Dim serialPort as New oSerialPortDim txBuff as New oBuffer27 & aposchange 27 لجعل المخزن المؤقت أكبر / أصغر جديد oDIO1Dim toggleSerial_Event كجديد oEventDim toggleSerial_Wire كجديد oWireDim serialReceive_Event كجديد oEventDim serialReceive_Wire As New oWire & apos ******** تصحيح الكائنات ذات الصلة ******** Dim statLED as New ***DIO1 & a ************************************************************************************************************************************************************************************************************** ********************************************************** Sub main & aposinitialize all main_init & aposset our output mask to فقط اتبع مركز الكتلة CMUCAM_setOutputMask (2، 3) وقم بتحميل إطار الاختلاف الأولي الخاص بنا CMUCAM_loadDiffFrame () وابدأ حساب الفرق CMUCAM_startDiffCalc (10) End SubSub main_init & aposinitialize حالة LED statLED. IOLine = 7 statLposvitOutialize) نهاية سو استلمت العمليات حزمًا عملية فرعية حزمة () Dim mx As Byte Dim my As Byte & aposcheck لكل من Mx و My ليكونا 0 & aposgranted إذا لم تكن 0 ، فسيتم إيقاف الموقع (أي & aposT 12 34) ولكن بعد ذلك فازوا و apost يلبي 0 معايير rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe led يجب أن يومض بانسجام مع مؤشر LED للتتبع على الكاميرا إذا (mx = "0") و (my = "0") statLED = 0 عدا ذلك statLED = 1 End IfEnd Sub & apos ********************************************** **** & apos * وظائف كاميرا CMU * & apos *************************************** ******* & apossets يؤدي إلى تشغيل ، إيقاف ، تلقائي و aposparam عدد الصمامات (0 ، 1) و aposparam val off ، on ، auto (0 ، 1 ، 2) Function CMUCAM_ledSet (ledNum As Byte، val As Byte) نظرًا لأن Byte & aposVString لم يكن & apost يعملان بشكل صحيح في المترجم الجديد … & apos غير متأكد من القديم & apostxBuff. VString = "L0 0" & apossetup سلسلة أوامرنا يدويًا txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s تمتص وظيفة tr $ … لذا يحدث هذا الآن txBuff. Value = serial_toChar (ledNum) txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 txBuff. Value = serial_toChar (val) txBuff. Location = 4 txBuff. Value = 13 & إلغاء الأمر serial_SendBufferEnd Sub & تحميل إطار الاختلاف الأولي Sub CMUCAM_loadDiffFrame () & إنشاء سلسلة أوامرنا يدويًا txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "Focation = 2 txBuff. Value =" Focation. القيمة = 13 & إلغاء الأمر serial_SendBufferEnd Sub & aposstarts حساب اختلافات الإطارات وعتبة aposparam (0-9) Sub CMUCAM_startDiffCalc (العتبة بالبايت) خافت العشرات على هيئة بايت وإنشاء سلسلة أوامرنا يدويًا txBuff. Location = 0 txBuff. Value = " 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 عشرات = العتبة / 10 txBuff. Value = serial_toChar (عشرات) txBuff. Location = 4 عشرات = العتبة / 10 txBuff. Value = serial_toChar (عتبة عشرات) txBuff. Location = 5 txBuff. Value = 1 3 & إلغاء الأمر serial_SendBufferEnd Sub & apossets the output mask & aposparam packetType of packet to mask (0، 1، 2، etc) راجع الصفحة 46 & قيمة قناع aposparam للتطبيق (0-255) Sub CMUCAM_setOutputMask (packetType As Byte ، Mask As Byte) باهت المئات كبايت دايم عشرات على هيئة بايت وفتح سلسلة أوامرنا يدويًا txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & نوع apospacket txBuff. الموقع = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmask لتطبيق txBuff. Location = 5 مئات = قناع / 100 txBuff. Value = serial_toChar (مئات) txBuff. Location = 6 عشرات = (قناع-مئات) / 10 txBuff. Value = serial_toChar (عشرات) txBuff. Location = 7 txBuff. Value = serial_toChar (mask-مئات-عشرات) & aposcarriage return txBuff. Location = 8 txBuff. Value = 13 & apossend الأمر serial_Send & aposer * *********************************************** & apos * التدريبات الفرعية التسلسلية العامة * & apo s ************************************************** & فتح المسلسل portSub serial_init () & aposinitialize زر لتشغيل وإيقاف تشغيل المنفذ التسلسلي (قم بتشغيله للتشغيل ، قم بإيقاف تشغيل البرنامج) رابط (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialize حدث لتخزين بياناتنا serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event. ReceLink) 0 إكمال الحزمة ceive_Event_Code () & apos.received يصبح خاطئًا عندما يكون المخزن المؤقت 4 بايت فارغًا. & aposres اضبط المخزن المؤقت على البداية rxBuff. Location = 0 آخر rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns داخل وخارج المنفذ التسلسلي للبرمجة serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & apos تحويل رقم مكون من رقم واحد إلى حرف دالة serial_toChar (inVal As Byte) كـ Byte Dim retVal As Byte حدد الحالة inVal Case 0 retVal = "0" Case 1 retVal = "1" Case 2 retVal = "2" Case 3 retVal = "3" Case 4 retVal = "4" Case 5 retVal = "5" Case 6 retVal = "6" Case 7 retVal = "7" Case 8 retVal = "8" Case 9 retVal = "9" حدد إنهاء serial_toChar = وظيفة retValEnd & apos sen ds البيانات الموجودة في txBuff & apos ملاحظة: تأكد من احتواء المخزن المؤقت على حرف إرجاع (13) في النهاية !!. Value ooPIC. Delay = 1 & aposmight لا تحتاج إلى هذا & apossee إذا كان إرجاع سطر إذا كانت txBuff. Value = 13 & aposbreak الخروج من الحلقة الخاصة بنا عودة End If & aposgo إلى الحرف التالي txBuff. Location = txBuff. Location + 1 WendEnd Sub
الخطوة 4: افصل موصل البرمجة
بمجرد فصل موصل البرمجة ، قم بتوصيل مجموعة الكابلات الجديدة كما هو موضح أدناه. يجب أن يسمح المحول الذي تم إجراؤه في الخطوة 1 بتوصيل CMUCam مباشرة بـ OOPIC
الخطوة 5: اضغط على الزر لبدء الاتصال التسلسلي
سيبدأ الزر الموجود على IOLine 5 الاتصال التسلسلي بين CMUCam و OOPIC. نظرًا لاستخدام المنفذ التسلسلي لكل من البرمجة و CMUCam ، فمن المحتمل أن تكون هناك طريقة مسيطر عليها للتبديل بين الاثنين.
لن يعمل البرنامج حتى يتم الضغط على هذا الزر. إذا ضغطت على الزر مرة أخرى ، فسيصبح المنفذ التسلسلي غير نشط ، مما يتيح لك برمجته. يعرض مؤشر LED الموجود على IOLine 6 حالة المنفذ التسلسلي الحالي (يعني قيد التشغيل ، يعني إيقاف التشغيل جاهزًا للبرمجة).