Съдържание:

Свързване на CMUCam2 с OOPIC: 5 стъпки
Свързване на CMUCam2 с OOPIC: 5 стъпки

Видео: Свързване на CMUCam2 с OOPIC: 5 стъпки

Видео: Свързване на CMUCam2 с OOPIC: 5 стъпки
Видео: Свързване на Едноцветна LED Лента 2024, Юли
Anonim

От arsinio Следвайте още от автора:

Свързване на две OOBoards заедно чрез I2C
Свързване на две OOBoards заедно чрез I2C
Свързване на две OOBoards заедно чрез I2C
Свързване на две OOBoards заедно чрез I2C

Преглед на начина на свързване на CMUCam2 към и OOPIC.

Стъпка 1: Осъществяване на адаптерния кабел

Осъществяване на адаптерния кабел
Осъществяване на адаптерния кабел

1. Отидете на radioshack и купете 2 от тях: мъжки DB-9 Solder Cup Connector2. спойка щифт 5 на конектор А към щифт 5 на конектор В (ако погледнете внимателно конектора, те са маркирани) 3. спойка щифт 2 на конектор А към щифт 3 на конектор В (ако погледнете внимателно конектора, те са маркирани) 4. спойка щифт 3 на конектор А до щифт 2 на конектор В (ако погледнете внимателно конектора, те са маркирани)

Стъпка 2: Променете скоростта на предаване в CMUCam

Променете скоростта на предаване в CMUCam
Променете скоростта на предаване в CMUCam

Променете скоростта на обмен на CMUC камерата на 9600 бода (добавете джъмпер на позиция 0).

Стъпка 3: Свържете стандартния кабел за програмиране и кода за качване

Свържете стандартния кабел за програмиране и кода за качване
Свържете стандартния кабел за програмиране и кода за качване

Свържете стандартния кабел за програмиране и качете кода си. Ето един примерен код, за да започнете. Този код ще проследява движението с помощта на командите LF и FD. Той ще превключи IOLine 7 (свързан към светодиод) и ще отразява светодиода за състоянието на проследяване на CMUCam.

& apos ******** обекти, свързани със сериен порт ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & aposchange 27, за да направи буфера по -голям/по -малъкDim rxBuff Като нов oBuffer10Dim serialActive_LED Като нов oDIO1Dim toggleSerial_Button Нов oDIO1Dim превключвателSerial_Event Като нов oEventDim превключвателSerial_Wire Като нов oWireDim serialReceive_Event Като нов oEventDim serialReceive_Wire Като нов oWire & apos ******** отстраняване на грешки свързани обекти ******** Dim statLED Като нов oDIO1 & apos *** ************************************** & apos*Общи подпрограми*& apos ****** ************************************** Sub main & aposinitialize all main_init & aposset нашата изходна маска да следвайте само центъра на масата CMUCAM_setOutputMask (2, 3) & aposload нашата първоначална рамка за разлика CMUCAM_loadDiffFrame () & апостартирайте изчислението на разликата CMUCAM_startDiffCalc (10) End SubSub main_init & aposinitialize a status LED LED statLED. IOLine = 7) Край на Су b & aposprocesses получени пакети Sub processPacket () Dim mx As Byte Dim my As Byte & aposcheck за Mx и My да бъде 0 & aposgranted, ако не са 0, местоположението ще бъде изключено (т.е. & aposT 12 34) & aposbut тогава те спечелят & apost отговарят на 0 критерия rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Vueue & apost светодиодът трябва да мига в унисон с проследяващия светодиод на камерата If (mx = "0") And (my = "0") statLED = 0 Други statLED = 1 End IfEnd Sub & apos ****************************************** **** & apos*CMU Cam функции*& apos *************************************** ******* & apossets даденото доведе до включване, изключване, автоматично & aposparam ledNum брой светодиоди (0, 1) & aposparam val изключено, включено, автоматично (0, 1, 2) Функция CMUCAM_ledSet (ledNum като байт, val като байт) Тъй като Byte & aposVString не работеше и апостол точно в новия компилатор … & apos не съм сигурен за стария & apostxBuff. VString = "L0 0" & apossetup нашия ръчен низ низ txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & apostx tr $ функцията е гадна … така че сега това се случва txBuff. Value = serial_toChar (ledNum) txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 txBuff. Value = serial_toChar (val) txBuff. Location = 4 txBuff. Location = 4 txBuff. Location = 4 txBuff. Value = 4 = 13 & apossend командата serial_SendBufferEnd Sub & aposloads първоначалната разлика frameSub CMUCAM_loadDiffFrame () & apossetup нашия команден низ ръчно txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Val. Стойност = 13 & apossend командата serial_SendBufferEnd Sub & aposstarts изчисляване на разликите в рамката & aposparam праг на праг (0-9) Sub CMUCAM_startDiffCalc (thresh As Byte) Dim tens As Byte & apossetup нашия команден низ ръчно txBuff. Location = 0 txBuff. Location = 0 txBuff. V 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 десетки = thresh/10 txBuff. Value = serial_toChar (десетки) txBuff. Location = 4 десетки = thresh. 10 txBuff = serial_toChar (thresh-tens) txBuff. Location = 5 txBuff. Value = 1 3 & apossend командата serial_SendBufferEnd Sub & apossets изходната маска & aposparam packetType тип пакет за маска (0, 1, 2 и т.н.) вижте страница 46 & aposparam маска стойност на маската, която да приложите (0-255) Sub CMUCAM_setOutputMask (packetType As байт, маска Aste) Като байт Dim десетки Като байт & apossetup нашият команден низ ръчно txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacuket тип tx. Местоположение = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmask за прилагане на txBuff. Location = 5 стотици = маска/100 txBuff. Value = serial_toChar (стотици) txBuff. To (маска-стотици)/10 txBuff. Value = serial_toChar (десетки) txBuff. Location = 7 txBuff. Value = serial_toChar (маска-стотици десетки) & aposcarriage връщане txBuff. Location = 8 txBuff. Value = 13 & apossend Изпрати командата ******************************************* & apos*Общи серийни подпрограми *& апо s ********************************************** & апосинициализира серийния portSub serial_init () & aposinitialize бутон за включване и изключване на серийния порт (включване за изпълнение, изключване за програмиране) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Wut). Връзка (toggleSerial_Event. Operate) = 0 & aposinitialize нашия сериен порт serialPort. Baud = cv9600 & aposinitialize нашия сериен статус LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait тук, докато нашият сериен порт се активира Докато serialPort. завършване на пакети Sub serialRe ceive_Event_Code () & apos.received става невярно, когато 4 -байтовият буфер е празен. & aposreset буфера до началото rxBuff. Location = 0 В противен случай rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns включване и изключване на серийния порт за програмиране Sub subgleSerial_Event_Code () If serialPort. Operate = cvFA serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & aposконвертира едноцифрено число в characterFunction serial_toChar (inVal като байт) Като байт Dim retVal Като байт Изберете случай inVal Case 0 retVal = "0" Case 1 retVal = "1" Case 2 retVal = "2" Случай 3 retVal = "3" Случай 4 retVal = "4" Случай 5 retVal = "5" Случай 6 retVal = "6" Случай 7 retVal = "7" Случай 8 retVal = "8" Случай 9 retVal = "9" Край Изберете serial_toChar = retValEnd Функция & apos sen ds данните, съдържащи се в txBuff & apos Забележка: уверете се, че буферът съдържа връщане на каретка (13) в края !! Sub serial_SendBuffer () & apositerate чрез, изпращайки всеки байт, end on carriage return txBuff. Location = 0 Докато 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 & aposmight не се нуждае от това & apossee ако е връщане на карета Ако txBuff. Value = 13 & aposbreak излиза от нашия цикъл Return End If & aposgo към следващия символ txBuff. Location = txBuff. Location + 1 WendEnd Sub

Стъпка 4: Изключете конектора за програмиране

Изключете конектора за програмиране
Изключете конектора за програмиране
Изключете конектора за програмиране
Изключете конектора за програмиране

След като конекторът за програмиране е изключен, свържете новия кабелен възел, както е показано по -долу. Адаптерът, направен в стъпка 1, трябва да позволява CMUCam да бъде директно включен в OOPIC

Стъпка 5: Натиснете бутона, за да инициализирате серийната комуникация

Бутонът на IOLine 5 ще стартира серийната комуникация между CMUCam и OOPIC. Тъй като серийният порт се използва както за програмиране, така и за CMUCam, вероятно трябва да има контролиран начин за превключване между двете.

Програмата няма да работи, докато този бутон не бъде натиснат. Ако натиснете бутона отново, серийният порт ще остане неактивен, което ще ви позволи да го програмирате. Светодиодът на IOLine 6 показва текущото състояние на серийния порт (включен означава активен, изключен означава готов за програмиране).

Препоръчано: