İçindekiler:

Bir CMUCam2'yi bir OOPIC ile arayüzlemek: 5 Adım
Bir CMUCam2'yi bir OOPIC ile arayüzlemek: 5 Adım

Video: Bir CMUCam2'yi bir OOPIC ile arayüzlemek: 5 Adım

Video: Bir CMUCam2'yi bir OOPIC ile arayüzlemek: 5 Adım
Video: Bir Xalanın Sirri (Tam Film) with English Subtitles 2024, Kasım
Anonim

Yazar tarafından arsinioFollow Daha fazlası:

I2C kullanarak iki OOBoard'ı birbirine bağlama
I2C kullanarak iki OOBoard'ı birbirine bağlama
I2C kullanarak iki OOBoard'u birbirine bağlama
I2C kullanarak iki OOBoard'u birbirine bağlama

Bir CMUCam2 ile OOPIC arasında nasıl arayüz oluşturulacağına genel bakış.

Adım 1: Adaptör Kablosunun Yapılması

Adaptör Kablosunun Yapılması
Adaptör Kablosunun Yapılması

1. Radioshack'e gidin ve bunlardan 2 tanesini satın alın:Male DB-9 Lehim Kupası Konnektörü2. A konektöründeki lehim pimi 5'i konektör B üzerindeki pim 5'e (konektöre dikkatlice bakarsanız işaretlenirler)3. A konektöründeki lehim pimi 2'yi konektör B üzerindeki pim 3'e (konektöre dikkatlice bakarsanız işaretlenirler)4. A konektöründeki lehim pimi 3'ü konektör B üzerindeki pim 2'ye (konektöre dikkatlice bakarsanız işaretlenirler)

Adım 2: CMUCam'da Baud Hızını Değiştirin

CMUCam'da Baud Hızını Değiştirin
CMUCam'da Baud Hızını Değiştirin

CMUCamera'nın baud hızını 9600 baud olarak değiştirin (0 konumuna bir jumper ekleyin).

Adım 3: Standart Programlama Kablosunu Bağlayın ve Kodu Yükleyin

Standart Programlama Kablosunu Bağlayın ve Kodu Yükleyin
Standart Programlama Kablosunu Bağlayın ve Kodu Yükleyin

Standart programlama kablosunu bağlayın ve kodunuzu yükleyin. İşte başlamanıza yardımcı olacak bazı örnek kodlar. Bu kod, LF ve FD komutlarını kullanarak hareketi izleyecektir. IOLine 7'yi (bir LED'e bağlı) değiştirir ve CMUCam'daki izleme durumu LED'ini yansıtır.

&apos******** seri port ile ilgili nesneler ********Dim serialPort As Yeni oSerialPortDim txBuff As New oBuffer27 &apos27'yi değiştirerek tamponu daha büyük/küçük yapmak içinDim rxBuff As New oBuffer10Dim serialActive_LED As New oDIO1Dim toggleSerial_Button As Yeni oDIO1Dim toggleSerial_Event Yeni Olarak oEventDim toggleSerial_Wire As New oWireDim serialReceive_Event As New oEventDim serialReceive_Wire Yeni oWire&apos******** hata ayıklama ilgili nesneler ******** Yeni oDIO1&apos olarak karart******** ****************************************&apos* Genel Alt Programlar *&apos****** ****************************************Sub main &her şeyi main_init'e sıfırlayın &çıktı maskemizi sadece kütle merkezini takip et CMUCAM_setOutputMask(2, 3) &apos ilk fark çerçevemizi CMUCAM_loadDiffFrame() &fark hesaplamasını başlat)Son Su b&aposprocesses alınan paketlerSub processPacket() Dim mx As Byte Dim my As Byte &aposcheck hem Mx hem de My için 0 olacak & 0 değillerse, konum kapalı olacak (yani &aposT 12 34) &aposbut sonra kazandılar&apost 0 kriterini karşılıyor rxBuff. Konum = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value &apos, kamera üzerindeki izleme LED'i ile birlikte yanıp sönmelidir If (mx = "0") And (my = "0") statLED = 0 Else statLED = 1 End IfEnd Sub'*********************************************** ****&apos* CMU Cam Fonksiyonları *&apos******************************************** *******'verilen ledi on, off, otomatik'oluşturur ledNum led sayısı (0, 1)&aposparam val off, on, auto (0, 1, 2)Fonksiyon CMUCAM_ledSet(ledNum As Byte, val As Byte) Byte &aposVString&apost yeni derleyicide doğru çalışmıyordu… &aposthe eskisinden emin değilim &apostxBuff. VString = "L0 0" &aposthe s tr$ işlevi berbat… şimdi bu oluyor txBuff. Value = serial_toChar(ledNum) txBuff. Location = 2 txBuff. Value = " " txBuff. Location = 3 txBuff. Value = serial_toChar(val) txBuff. Location = 4 txBuff = 13 serial_SendBufferEnd Sub&apossend komutu ilk farkı frameSub CMUCAM_loadDiffFrame() &aposssets komut dizimizi manuel olarak txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F. LocationBuffBalue = "F. Location" tx. Değer = 13 &komutu serial_SendBufferEnd Sub&apossandsçerçeve farklarını hesaplamaya başlar&aposparam eşik eşiği (0-9)Sub CMUCAM_startDiffCalc(thresh As Byte) Dim tens As Byte &apossetup komut dizgimizi manuel olarak txBuff. Location = 0 txBuff. Value = "Buff. Value = "Buff" 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = " " txBuff. Location = 3 onlarca = thresh/10 txBuff. Value = serial_toChar(onlarca) txBuff. Location = 4 onlarca = thresh./10altxBuff. Value = serial_toChar(eşik-onlar) txBuff. Location = 5 txBuff. Value = 1 3 &komutu serial_SendBufferEnd Sub&apossed the output mask&aposparam paketMaskelenecek paket tipi (0, 1, 2, vb.) bkz. sayfa 46&aposparam mask mask değeri (0-255)Sub CMUCAM_setOutputMask(packetType As Byte, mask As Byte) Dim yüzlerce Byte Dim tens As Byte &apossetup olarak komut dizimiz manuel olarak txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = " " &apospacket type tx Konum = 3 txBuff. Value = serial_toChar(packetType) txBuff. Location = 4 txBuff. Value = " " txBuff uygulamak için &aposmask. Location = 5 yüz = maske/100 txBuff. Value = serial_toChar(yüzlerce) txBuff. Location = (yüzlerce)/10 txBuff. Value = serial_toChar(onlarca) txBuff. Location = 7 txBuff. Value = serial_toChar(maske-yüzlerce-onlarca) &aposcarriage return txBuff. Location = 8 txBuff. Value = 13 &apos komutu **************************************************&apos* Genel Seri Alt Programları *&apo s***************************************************&seriyi başlatır portSub serial_init() &aposinitialize (seri bağlantı noktasını açmak ve kapatmak için bir düğme) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link(toggleSerial_Button. Value. Wire. Ser) toggle. Ser Link(toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue verilerimizi arabelleğe almak için bir olayı başlatır = 0 seri port seri bağlantı noktamızı sıfırla paket tamamlamaSub serialRe ceive_Event_Code() &apos.received 4byte tampon boş olduğunda false olur while(serialPort. Received = cvTrue) tamponumuza gelen bayttan &aposkopi rxBuff. Value = serialPort. Value &aposcheck paketin sonu için &aposcheck Eğer rxBuff. Value = 13 &aposprocess paket processPacket() &apos arabelleği başa sıfırla rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub'programlama için seri bağlantı noktasını açar ve kapatırSub toggleSerial_Event_Code() if serialPort. Operate = cvFalse serialPort. Operate = cvT serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub'tek basamaklı bir sayıyı bir karaktere dönüştürürFunction serial_toChar(Byte Olarak Değer) As Byte Dim retVal As Byte Select Case inVal Case 0 retVal = "0" Case 1 retVal = "1" Case 2 retVal = "2" Durum 3 geriDeğer = "3" Durum 4 geriDeğer = "4" Durum 5 geriDeğer = "5" Durum 6 geriDeğer = "6" Durum 7 geriDeğer = "7" Durum 8 geriDeğer = "8" Durum 9 geriDeğer = "9" End Select serial_toChar = retValEnd Function&apos sen ds txBuff&apos'ta bulunan veriler Not: arabelleğin sonunda bir satır başı (13) içerdiğinden emin olun!!Sub serial_SendBuffer() &apositerate, her baytı gönderme, satır başında bitme txBuff. Location = 0 iken 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 &aposbuna ihtiyaç duymayabilir &apossee eğer bir satır başı olsaydı &aposbreak ise txBuff. Value = 13 &aposbreak döngümüzden çıkarsa Return End Eğer &apossonraki karaktere txBuff. Location = txBuff. Location + 1 WendEnd Sub

Adım 4: Programlama Konnektörünün Bağlantısını Kes

Programlama Konnektörünün Bağlantısını Kes
Programlama Konnektörünün Bağlantısını Kes
Programlama Konnektörünün Bağlantısını Kes
Programlama Konnektörünün Bağlantısını Kes

Programlama konektörünün bağlantısı kesildiğinde, yeni kablo düzeneğini aşağıda gösterildiği gibi takın. 1. adımda yapılan adaptör, CMUCam'ın doğrudan OOPIC'e takılmasına izin vermelidir.

Adım 5: Seri İletişimi Başlatmak için Düğmeye Basın

IOLine 5 üzerindeki düğme, CMUCam ve OOPIC arasındaki seri iletişimi başlatacaktır. Seri port hem programlama hem de CMUCam için kullanıldığından, muhtemelen ikisi arasında kontrollü bir geçiş yolu olmalıdır.

Bu düğmeye basılana kadar program çalışmayacaktır. Düğmeye tekrar basarsanız, seri port inaktif hale gelecek ve programlamanıza izin verecektir. IOLine 6 üzerindeki LED, mevcut seri port durumunu gösterir (açık aktif, kapalı ise programlamaya hazır demektir).

Önerilen: