Mündəricat:

Bir CMUCam2 -ni bir OOPIC ilə əlaqələndirmək: 5 addım
Bir CMUCam2 -ni bir OOPIC ilə əlaqələndirmək: 5 addım

Video: Bir CMUCam2 -ni bir OOPIC ilə əlaqələndirmək: 5 addım

Video: Bir CMUCam2 -ni bir OOPIC ilə əlaqələndirmək: 5 addım
Video: Test Step Motor with LED 1 2024, Noyabr
Anonim

Müəllif tərəfindən daha çox:

I2C istifadə edərək iki OOBoardı birləşdirmək
I2C istifadə edərək iki OOBoardı birləşdirmək
I2C istifadə edərək iki OOBoardı birləşdirmək
I2C istifadə edərək iki OOBoardı birləşdirmək

Bir CMUCam2 ilə OOPIC -in necə əlaqələndirilməsinə ümumi baxış.

Addım 1: Adapter Kabelinin Hazırlanması

Adapter Kabelinin Hazırlanması
Adapter Kabelinin Hazırlanması

1. Radioshack-ə gedin və bunlardan 2-ni satın alın: Kişi DB-9 Lehim Kuboku Bağlayıcısı2. lehim pin 5 A konnektindəki B konnektindəki 5 pininə qədər (konnektora diqqətlə baxsanız, işarələnmişdir) 3. A konnektorundakı lehim pimi 2, B konnektindəki 3 pininə qədər (konnektora diqqətlə baxsanız, işarələnmişdir) 4. A konnektorundakı lehim pin 3, B konnektindəki 2 pininə qədər (konnektora diqqətlə baxsanız, işarələnmişdir)

Addım 2: CMUCam -da Baud dərəcəsini dəyişdirin

CMUCam -da Baud dərəcəsini dəyişdirin
CMUCam -da Baud dərəcəsini dəyişdirin

CMUCamera'nın baud sürətini 9600 baud olaraq dəyişdirin (0 mövqeyinə tullanan əlavə edin).

Addım 3: Standart Proqramlaşdırma Kabelini qoşun və Kodu Yükləyin

Standart Proqramlaşdırma Kabelini və Yükləmə Kodunu qoşun
Standart Proqramlaşdırma Kabelini və Yükləmə Kodunu qoşun

Standart proqramlaşdırma kabelini qoşun və kodunuzu yükləyin. Başlamaq üçün bir neçə nümunə kod var. Bu kod LF və FD əmrlərindən istifadə edərək hərəkəti izləyəcək. IOLine 7 -ni (bir LED -ə bağlandı) dəyişdirəcək və CMUCam -da izləmə statusu LEDini yansıtacaq.

& apos ******** serial portu ilə əlaqəli obyektlər ******** Yeni serialBortu Yeni OSerialPortDim olaraq txBuff Yeni OBuffer27 və buferin daha böyük/kiçik olması üçün 27 -ni dəyişdirinDim rxBuff Yeni OBuffer10Dim serialActive_LED Yeni ODIO1Dim keçidSerial_Button As olaraq Yeni oDIO1Dim yeni Serie_Event olaraq Yeni OEventDim olaraq Serial_Wire olaraq Yeni OWireDim serialReceive_Event Yeni OEventDim serialReceive_Wire olaraq Yeni OWire & apos ******** debug ilə əlaqəli obyektlər ******** Yeni statik olaraq Yeni oDIO1 & apos ******** ************************************ və apos*Ümumi alt proqramlar*& apos ****** ************************************* Alt əsas & hər şeyi aposinitialize main_init & çıxış maskamızı yalnız CMUCAM_setOutputMask (2, 3) kütləsinin mərkəzini izləyin və CMUCAM_loadDiffFrame () başlanğıc fərq çərçivəmizi yükləyin və fərq hesablamasını başlatın CMUCAM_startDiffCalc (10) SubSub main_init'i bitirin və bir status LED statLED. IOLine = 7 serialVOLED. Direct) Su b & aposprocesses alınan paketlərSub prosesPacket () Dim mx As Byte Dim My As Byte & apxcheck for Mx and My is 0 & aposgranted if not 0, the location will be off (ie & aposT 12 34). Məkan = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe led, kameranın izləmə LEDi ilə bir yerdə yanıb -sönməlidir Əgər (mx = "0") Və (mənim = "0") statLED = 0 Başqa statLED = 1 IfEnd Sub & Apos -u bitirin **************************************** **** & apos*CMU Cam Funksiyaları*& apos ************************************* ******* & apossets verilmiş ledin açılmasına, söndürülməsinə, avtomatik və aposparam açılmasına səbəb oldu LED (0, 1) & aposparam val off, on, auto (0, 1, 2) Function CMUCAM_ledSet (ledNum As Byte, val As Byte)) Byte & aposVString yeni kompilyatorda işləmədiyinə görə… və köhnəsi haqqında heç bir əminlik yoxdur & apostxBuff. VString = "L0 0" və əmr xəttimizi əl ilə txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe tr $ funksiyası pisdir … buna görə də indi bu baş verir 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 əmrini apossend edin & frameSub CMUCAM_loadDiffFrame () əmr satırını əl ilə aposseting txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txx 2. Dəyər = 13 & serial_SendBufferEnd Sub əmrini apossend edin & çərçivə fərqləri və aposparam eşik eşiklərini hesablamağa başlayın (0-9) Alt CMUCAM_startDiffCalc (bayt olaraq xırda) Onlarla Byte olaraq & apossetup əmr xəttimizi əl ilə txBuff. Location = 0 txBuff. Value = 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 on = thresh/10 txBuff. Value = serial_toChar (onlar) txBuff. Location = 4 tens = thresh/10 txBuff. Value = serial_toChar (thres-tens) txBuff. Location = 5 txBuff. Value = 1 3 və serial_SendBufferEnd Sub əmrini çıxarın & Çıxış maskası və aposparam paketini apokset edin Maska üçün paket növü (0, 1, 2 və s.) Səhifəyə baxın 46 və tətbiq etmək üçün aposparam maskası dəyəri (0-255) Alt CMUCAM_setOutputMask (packetType As Byte, mask As Byte) Dim yüzlərlə As Byte Dim on By By & apossetup əmr sətirimizi manuel olaraq txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" və txBuff tipli apx. Yer = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" və txBuff. Location = 5 yüzlər = maska/100 txBuff. Value = serial_toChar (yüzlərlə) txBuff. Location = 6 tens = (maska-yüzlər)/10 txBuff. Value = serial_toChar (onlarca) txBuff. Location = 7 txBuff. Value = serial_toChar (maska-yüzlərlə-on) və aposcarriage txBuff. Location = 8 txBuff. Value = 13 & serial_SendBufferE əmrini ləğv edir ******************************************* və ümumi*Ümumi Serial Alt Proqramlar *və apo s ******************************************** serialı aposinitallaşdırır portSub serial_init () & seriyalı portu açmaq və söndürmək üçün bir düyməni açmaq (işə salmaq üçün açmaq, proqramı söndürmək) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSeral_Button. Link (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & verileri tamponlaşdırmaq üçün bir hadisəni aposinitialize edin = 0 & serial port portPort. Baud = cv9600 & serial vəziyyətimizi aposinitialize edin serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwit serial portumuz aktiv olana qədər burada gözləyin serialPort. Operate = cvFalse WendEndləri qəbul edin və qəbul edin paketi tamamlamaSub serialRe ceive_Event_Code () & apos.received, 4 baytlıq tampon boş olduqda boş olur. tamponu rxBuff. Location = 0 Başqa bir yerə aposreset edin rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns for serial port for ProgramSub toggleSerial_Event_Code () If serialPort. Operate = cvForEle serialPort_PortExcel serialPort. Operate = cvFalse serialActive_LED = 0 Bitirsə Bitir & bir aylıq rəqəmi bir xarakterə çevirirFunksiya serial_toChar (inVal As Byte) Byte Dim retVal olaraq Byte olaraq Case 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" Sonu seçin serial_toChar = retValEnd Funksiyası və s ds txBuff & apos -da olan məlumatlar Qeyd: tamponun sonunda bir daşıyıcı qaytarma (13) olduğundan əmin olun !! Sub serial_SendBuffer () & hər bir baytı göndərməklə apositerasiya edin, txBuff. Location = 0 1 serialPort. Value = txBuff isə. Value ooPIC. Delay = 1 & aposm lazım ola bilməz, əgər bu bir vaqon dönüşüdürsə txBuff. Value = 13 & döngəmizdən çıxın Əgər Retx End Əgər & növbəti işarəyə txBuff. Location = txBuff. Location + 1 WendEnd Sub

Addım 4: Proqramlaşdırma Konnektorunu ayırın

Proqramlaşdırma Konnektorunu ayırın
Proqramlaşdırma Konnektorunu ayırın
Proqramlaşdırma Konnektorunu ayırın
Proqramlaşdırma Konnektorunu ayırın

Proqramlaşdırma konnektoru ayrıldıqdan sonra aşağıda göstərildiyi kimi yeni kabel qurğusunu bağlayın. Adım 1 -də hazırlanan adapter CMUCamın birbaşa OOPIC -ə qoşulmasına imkan verməlidir

Addım 5: Serial Əlaqəni Başlatmaq üçün Düyməni basın

IOLine 5 üzərindəki düymə, CMUCam və OOPIC arasındakı serial ünsiyyətə başlayacaq. Serial port həm proqramlaşdırma, həm də CMUCam üçün istifadə edildiyindən, ehtimal ki, ikisi arasında keçid üçün idarə olunan bir yol olmalıdır.

Bu düymə basılana qədər proqram işləməyəcək. Düyməni yenidən basarsanız, serial portu işləməyəcək və onu proqramlaşdırmağa imkan verəcəkdir. IOLine 6 -dakı LED, cari serial port vəziyyətini göstərir (yandırmaq aktiv, söndürmək proqramlaşdırmaya hazır deməkdir).

Tövsiyə: