Spisu treści:

Połączenie CMUCam2 z OOPIC: 5 kroków
Połączenie CMUCam2 z OOPIC: 5 kroków

Wideo: Połączenie CMUCam2 z OOPIC: 5 kroków

Wideo: Połączenie CMUCam2 z OOPIC: 5 kroków
Wideo: Połączenie - Cały Film - Lektor PL 2024, Lipiec
Anonim

Autor: arsinioŚledź Więcej autora:

Łączenie dwóch OOBoards razem za pomocą I2C
Łączenie dwóch OOBoards razem za pomocą I2C
Łączenie dwóch OOBoards razem za pomocą I2C
Łączenie dwóch OOBoards razem za pomocą I2C

Omówienie sposobu podłączenia CMUCam2 do i OOPIC.

Krok 1: Wykonanie kabla adaptera

Wykonanie kabla adaptera
Wykonanie kabla adaptera

1. Idź do radioshack i kup 2 z nich: Złącze męskie DB-9 Solder Cup2. przylutuj pin 5 na złączu A do pinu 5 na złączu B (jeśli przyjrzysz się uważnie złączu, są oznaczone)3. przylutuj pin 2 na złączu A do pinu 3 na złączu B (jeśli przyjrzysz się uważnie złączu, są oznaczone)4. przylutuj pin 3 na złączu A do pinu 2 na złączu B (jeśli przyjrzysz się uważnie złączu, są oznaczone)

Krok 2: Zmień szybkość transmisji na CMUCam

Zmień szybkość transmisji na CMUCam
Zmień szybkość transmisji na CMUCam

Zmień szybkość transmisji CMUCamera na 9600 bodów (dodaj zworkę do pozycji 0).

Krok 3: Podłącz standardowy kabel do programowania i kod przesyłania

Podłącz standardowy kabel do programowania i kod przesyłania
Podłącz standardowy kabel do programowania i kod przesyłania

Podłącz standardowy kabel do programowania i prześlij swój kod. Oto przykładowy kod na początek. Ten kod będzie śledzić ruch za pomocą poleceń LF i FD. Przełącza IOLine 7 (podłączony do diody LED) i odzwierciedla diodę LED stanu śledzenia na CMUCam.

& apo ******** obiekty związane z portem szeregowym ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & apozmień 27, aby bufor był większy/mniejszyDim rxBuff As New oBuffer10Dim serialActive_LED As New oDIO1Dim toggleSerial_Button As Nowy oDIO1Dim toggleSerial_Event jako nowy oEventDim toggleSerial_Wire jako nowy oWireDim serialReceive_Event jako nowy oEventDim serialReceive_Wire jako nowy oWire&apos******** debuguj powiązane obiekty ********Dim statLED jako nowy oDIO1&apos******** ****************************************&apos* Ogólne podprogramy *&apos****** ****************************************Sub main &aposiinitialize wszystko main_init &ustaw naszą maskę wyjściową na podążaj tylko za środkiem masy CMUCAM_setOutputMask(2, 3) &apozaładuj naszą początkową ramkę różnicy CMUCAM_loadDiffFrame() &aporozpocznij obliczanie różnicy CMUCAM_startDiffCalc(10)End SubSub main_init &aposiinitialize diody LED statusu statLED. IOLine = 7 statLED. Direction = cvOutput &aposinitialize our)Koniec Niedz b&aposprocesy odebrane pakietySub processPacket() Dim mx As Byte Dim my As Byte &apossprawdź, czy zarówno Mx, jak i My mają wartość 0. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value &apostać powinna migać zgodnie z diodą LED śledzenia na kamerze If (mx = "0") i (my = "0") statLED = 0 Inaczej statLED = 1 End IfEnd Sub&apos******************************************* ****&apos* Funkcje kamery CMU *&apos*************************************** *******&ustawia podaną diodę led na on, off, automatic&aposparam ledNum liczba diod led (0, 1)&aposparam val off, on, auto (0, 1, 2) Funkcja CMUCAM_ledSet(ledNum As Byte, val As Byte) Ponieważ Byte &aposVString działał&apost w nowym kompilatorze… &nie jestem pewien co do starego &apostxBuff. VString = "L0 0" &aposstaw ręcznie nasz ciąg poleceń txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 &aposthe s Funkcja tr$ jest do niczego… więc teraz to się dzieje = 13 &uzyskaj polecenie serial_SendBufferEnd Sub&aposładuj początkową różnicę frameSub CMUCAM_loadDiffFrame() &austaw ręcznie nasz ciąg poleceń txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F"ufftxBuff. Wartość = 13 &wyślij polecenie serial_SendBufferEnd Sub&aposrozpoczyna obliczanie różnic ramek&aposparam próg thresh (0-9)Sub CMUCAM_startDiffCalc(thresh As Byte) Dim dziesiątki As Byte &aposstaw ręcznie nasz ciąg poleceń txBuff. Location = 0 txBuff. Value = "F." 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = " " txBuff. Location = 3 dziesiątki = thresh/10 txBuff. Value = serial_toChar(dziesiątki) txBuff. Location = 4 dziesiątki = thresh/10 txBuff. Value = serial_toChar(thresh-dziesiątki) txBuff. Location = 5 txBuff. Value = 1 3 &użyj polecenia serial_SendBufferEnd Sub&aposstawia maskę wyjścia&aposparam typ pakietu typ pakietu do zamaskowania (0, 1, 2, itd.) patrz strona 46&aposparam wartość maski do zastosowania (0-255)Sub CMUCAM_setOutputMask(packetType As Byte, mask As Byte) Przyciemnij setki As Byte Dim dziesiątki As Byte &apossetup nasz ciąg poleceń ręcznie txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = " " &typ pakietu txBuff. Location = 3 txBuff. Value = serial_toChar(packetType) txBuff. Location = 4 txBuff. Value = " " &aposmaska, aby zastosować txBuff. Location = 5 setek = maska/100 txBuff. Value = serial_toChar(sets) txBuff. Location = 6 dziesiątek = (masek-setki)/10 txBuff. Value = serial_toChar(dziesiątki) txBuff. Location = 7 txBuff. Value = serial_toChar(maska-setki-dziesiątki) &aposcarriage return txBuff. Location = 8 txBuff. Value = 13 ********************************************* i apos* Ogólne podprogramy szeregowe *&apo s************************************************** i apozycjalizuje numer seryjny portSub serial_init() &aposiinitialize przycisk do włączania i wyłączania portu szeregowego (włącz, aby uruchomić, wyłącz, aby zaprogramować) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link(toggleSerial_Button. Value) toggleSerial_Wire. Output. Link(toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue &aposiinitialize zdarzenia w celu buforowania naszych danych serialReceive_Wire. Input. Link(serialPort. Received) serialReceive_Wire. Output. Link(serialReceive_Event. Operate) bufor RX. Trupositiale. = 0 &aposiinitialize naszego portu szeregowego serialPort. Baud = cv9600 &aposiinitialize naszej diody LED stanu szeregowego serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput &aposczekaj tutaj, aż nasz port szeregowy zostanie aktywowany While serialPort. Operate = cvFalse WendEnd Sub&aposcopies dane do naszego bufora odbioru i sprawdzania zakończenie pakietuSub serialRe ceive_Event_Code() &apos.received staje się fałszywe, gdy bufor 4bajtowy jest pusty While(serialPort. Received = cvTrue) &aposkopia bajtu do naszego bufora rxBuff. Value = serialPort. Value &aposcheck na koniec pakietu If rxBuff. Value = 13 &aposprocess pakiet processPacket() &apozresetuj bufor do początku rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub&aposwłącza i wyłącza port szeregowy do programowaniaSub toggleSerial_Event_Code() If serialPort. Operate = cvFalse serialPort. Operate = cvTrue ElActive_LED serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub&aposkonwertuje jednocyfrową liczbę na znakFunction serial_toChar(inVal As Byte) As Byte Dim retVal As Byte Select Case inVal Case 0 retVal = "0" Case 1 retVal = "1" Case 2 retVal = "2" Przypadek 3 retVal = "3" Przypadek 4 retVal = "4" Przypadek 5 retVal = "5" Przypadek 6 retVal = "6" Przypadek 7 retVal = "7" Przypadek 8 retVal = "8" Przypadek 9 retVal = „9” End Select serial_toChar = funkcja retValEnd&apos sen ds dane zawarte w txBuff&apos Uwaga: upewnij się, że bufor zawiera na końcu znak powrotu karetki (13)!!Sub serial_SendBuffer() &apositerate przez, wysyłając każdy bajt, koniec po powrocie karetki txBuff. Location = 0 While 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 &może nie potrzebować tego &może nie potrzebować, jeśli był to powrót karetki If txBuff. Value = 13 &aposbreak out z naszej pętli Return End If &aposprzejść do następnego znaku txBuff. Location = txBuff. Location + 1 WendEnd Sub

Krok 4: Odłącz złącze programujące

Odłącz złącze programujące
Odłącz złącze programujące
Odłącz złącze programujące
Odłącz złącze programujące

Po odłączeniu złącza programowania, podłącz nowy zespół kabla, jak pokazano poniżej. Adapter wykonany w kroku 1 powinien umożliwiać bezpośrednie podłączenie CMUCam do OOPIC

Krok 5: Naciśnij przycisk, aby zainicjować komunikację szeregową

Przycisk na IOLine 5 uruchomi komunikację szeregową pomiędzy CMUCam i OOPIC. Ponieważ port szeregowy jest używany zarówno do programowania, jak i do CMUCam, prawdopodobnie powinien istnieć kontrolowany sposób przełączania między nimi.

Program nie zostanie uruchomiony, dopóki ten przycisk nie zostanie naciśnięty. Jeśli ponownie naciśniesz przycisk, port szeregowy stanie się nieaktywny, co pozwoli Ci go zaprogramować. Dioda LED na IOLine 6 wyświetla aktualny stan portu szeregowego (włączony oznacza aktywny, wyłączony oznacza gotowy do programowania).

Zalecana: