Мазмуну:

CMUCam2 менен OOPICтин интерфейси: 5 кадам
CMUCam2 менен OOPICтин интерфейси: 5 кадам

Video: CMUCam2 менен OOPICтин интерфейси: 5 кадам

Video: CMUCam2 менен OOPICтин интерфейси: 5 кадам
Video: CMUCam2 2024, Ноябрь
Anonim

By arsinioFollow Автордун дагы:

I2Cди колдонуу менен эки OOBoardду туташтыруу
I2Cди колдонуу менен эки OOBoardду туташтыруу
I2Cди колдонуу менен эки OOBoardду туташтыруу
I2Cди колдонуу менен эки OOBoardду туташтыруу

CMUCam2ге жана OOPICке кантип интерфейс кылуу керек экендиги жөнүндө жалпы маалымат.

1 -кадам: адаптер кабелин жасоо

Адаптер кабелин жасоо
Адаптер кабелин жасоо

1. Radioshackти кетирип, анын ичинен 2 сатып алыңыз: Эркек DB-9 Solder Cup Connector2. А коннекторундагы 5 -контур В коннекторундагы 5 -пинге чейин (эгер туташтыргычты жакшылап карасаңыз, алар белгиленген) 3. А коннекторундагы 2 -ширеткичи В коннекторундагы 3 -пинге чейин (эгер туташтыргычты жакшылап карасаңыз, алар белгиленген) 4. 3 контуру А коннекторунда 2 туташтыргычы B коннекторуна (эгер туташтыргычты жакшылап карасаңыз, алар белгиленген)

2 -кадам: CMUCam боюнча Baud Rate өзгөртүү

CMUCam боюнча Baud Rate өзгөртүү
CMUCam боюнча Baud Rate өзгөртүү

CMUCamera -нын baud ылдамдыгын 9600 baudга өзгөртүү (0 позициясына секиргич кошуу).

3 -кадам: Стандарттык программалоо кабелин туташтыруу жана кодду жүктөө

Стандарттык программалоо кабелин туташтыруу жана кодду жүктөө
Стандарттык программалоо кабелин туташтыруу жана кодду жүктөө

Стандарттык программалоо кабелин туташтырып, кодуңузду жүктөңүз. Бул жерде сиз баштоо үчүн кээ бир мисал коддору бар. Бул код LF жана FD буйруктарын колдонуу менен кыймылды көзөмөлдөйт. Бул IOLine 7ди которот (LEDге туташкан) жана CMUCamдагы көзөмөлдөө статусунун LEDин чагылдырат.

& apos ******** сериялык порт менен байланышкан объекттер ******** Dim serialPort as New oSerialPortDim txBuff As New oBuffer27 & aposchange 27 to buffer bigger/smallDim rxBuff As New oBuffer10Dim serialActive_LED as New oDIO1Dim toggleSerial_Button As New oDIO1Dim toggleSerial_Event as New oEventDim toggleSerial_Wire as New oWireDim serialReceive_Event as New oEventDim serialReceive_Wire as New oWire & apos ******** мүчүлүштүктөргө байланышкан объекттер ******** Dim statLED as New oDIO1 & apos ******** ************************************ & apos*Generic Subroutines*& apos ****** ************************************** Негизги & апосиниталдаштыруу main_init & биздин чыгаруу маскасына CMUCAM_setOutputMask (2, 3) массалык борборун гана ээрчиңиз & CMUCAM_loadDiffFrame () баштапкы айырма алкагын апосставка кылыңыз CMUCAM_startDiffCalc (10) End SubSub main_init & aposinitialize a status LED statLED. IOLine = 7 serialLED_Direction) End Su b & aposprocesses packetsSub processPacket () Dim mx As Byte Dim My As Byte & apxcheck for Mx and My are 0 & aposgranted if they are not 0, if the location will be off (i.e.. Жайгашкан жери = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe LED камеранын көзөмөлдөөчү LEDи менен бирдикте жаркылдап турушу керек Эгерде (mx = "0") Жана (менин = "0") statLED = 0 Башка statLED = 1 IfEnd Sub & apos аяктоо **************************************** **** & apos*CMU Cam функциялары*& apos ************************************* ******* & apossets берилген алып барууга, өчүрүүгө, автоматтык жана апоспарамдык алып барууга алып келген LED саны (0, 1) & апоспарам өчүрүү, күйгүзүү, авто (0, 1, 2) Функция CMUCAM_ledSet (ledNum As Byte, val As Byte) Byte & aposVString & Апост жаңы компилятордо иштебегендиктен … & эскиси жөнүндө так маалымат жок & 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 буйругун апоссандга жүктөө менен баштапкы айырма frameSub CMUCAM_loadDiffFrame () & биздин буйрук сабыбызды кол менен орнотуу txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txx 2. Value = 13 & apossend буйругу serial_SendBufferEnd Sub & aposstarts кадрдык айырмачылыктарды жана апоспарамдын босогосун эсептей баштайт (0-9) Sub CMUCAM_startDiffCalc (thresh As Byte) Dim on As Byte & apossetup Биздин командалык сапты txBuff. Location = 0 txBuff. Value = 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 tens = thresh/10 txBuff. Value = serial_toChar (tens) txBuff. Location = 4 tens = thresh/10 txBuff. Value = serial_toChar (thres-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 Byte, маска байт) Dim жүздөгөн As Byte Dim tens As Byte & apossetup биздин командалык сапты txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & txBuff түрү. Location = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & txBuff. Location = 5 жүздөр = маска/100 txBuff. Value = serial_toChar (жүздөгөн) txBuff. Location = 6 tens = (маска-жүздөр)/10 txBuff. Value = serial_toChar (ондогон) txBuff. Location = 7 txBuff. Value = serial_toChar (маска-жүздөр-ондогон) & aposcarriage txBuff. Location = 8 txBuff. Value = 13 & serial_SendBufferE буйругун кабыл алуу *********************************************** Жалпы Сериялык Программалар *& apo s ******************************************** жана серияны апосиниталдаштырат portSub serial_init () & сериялык портту күйгүзүү жана өчүрүү баскычын апосиниталдаштыруу (иштетүү үчүн күйгүзүү, программаны өчүрүү) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSeral_Button. Шилтеме (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialize event to buffering our data buffer serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceiveReprive_Ovent_Ovent. Operate_Event. Operate) = 0 & сериялык портубузду serPort. Baud = cv9600 & апосиниталдаштыруу сериалдык статусубуз LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwit биздин сериялык порт активдүү болгонго чейин, ал эми serialPort. Operate = cvFalse биздин WendEndге баш ийет жана кабыл алат пакет аяктооSub serialRe ceive_Event_Code () & apos.received 4byte буфер бош болгондо жалган болуп калат, ал эми (serialPort. Received = cvTrue) & биздин буферге байтты апоскопиялоо менен rxBuff. Value = serialPort. Value & aposcheck if to end of packet If rxBuff. Value = 13 process & aposproet Буферди башына rosBet. RocBuff. Location = 0 Башка rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & программалоо үчүн сериялык портту өчүрүп -күйгүзүп койсо, toggleSerial_Event_Code () If serialPort. Operate = cvFrele = serialvorte cortiforte serialPort. Operate = cvFalse serialActive_LED = 0 IfEnd Sub & Апос бир аяктагы санды characterFunction serial_toChar (inVal As Byte) Byte Dim RetVal As Byte As 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" Аяктоо serial_toChar = retValEnd Функциясын тандаңыз ds txBuff & apos камтылган маалыматтар Эскертүү: буфердин аягында каретка кайтаруу (13) камтылганын текшериңиз !! Sub_SendBuffer () & ар бир байтты жөнөтүү аркылуу апостирлеңиз, txBuff. Location = 0 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 & aposmee бул & apossee кереги жок болушу мүмкүн, эгерде бул вагон кайтаруу болсо txBuff. Value = 13 & aposbreak from our loop Return End If & aposgo to the next character txBuff. Location = txBuff. Location + 1 WendEnd Sub

4 -кадам: Программалоо туташтыргычын ажыратыңыз

Программалоо коннекторун ажыратыңыз
Программалоо коннекторун ажыратыңыз
Программалоо туташтыргычын ажыратыңыз
Программалоо туташтыргычын ажыратыңыз

Программалоо туташтыргычы ажыратылгандан кийин, жаңы кабелдик түзүлүштү төмөндө көрсөтүлгөндөй тиркеңиз. 1 -кадамда жасалган адаптер CMUCamдын OOPICке түз туташуусуна мүмкүнчүлүк бериши керек

5 -кадам: Сериялык байланышты баштоо үчүн баскычты басыңыз

IOLine 5 баскычы CMUCam менен OOPICтин ортосундагы сериялык байланышты баштайт. Сериялык порт программалоо үчүн да, CMUCam үчүн да колдонулгандыктан, экөөнүн ортосунда которуштуруунун башкарылган жолу болушу керек.

Бул баскыч басылмайынча программа иштебейт. Эгер баскычты кайра бассаңыз, сериялык порт иштебей калат, бул аны программалоого мүмкүндүк берет. IOLine 6дагы LED учурдагы сериялык порт статусун көрсөтөт (күйүк активдүү, өчүрүү программалоого даяр дегенди билдирет).

Сунушталууда: