Përmbajtje:

Ndërfaqja e një CMUCam2 me një OOPIC: 5 hapa
Ndërfaqja e një CMUCam2 me një OOPIC: 5 hapa

Video: Ndërfaqja e një CMUCam2 me një OOPIC: 5 hapa

Video: Ndërfaqja e një CMUCam2 me një OOPIC: 5 hapa
Video: ChatGPT регистрация и верификация аккаунта в России 2024, Nëntor
Anonim

Ndiqni më shumë nga autori:

Lidhja e dy OOBoards së bashku duke përdorur I2C
Lidhja e dy OOBoards së bashku duke përdorur I2C
Lidhja e dy OOBoards së bashku duke përdorur I2C
Lidhja e dy OOBoards së bashku duke përdorur I2C

Pasqyrë se si të ndërfaqet një CMUCam2 në dhe OOPIC.

Hapi 1: Bërja e kabllit të përshtatësit

Bërja e kabllit të përshtatësit
Bërja e kabllit të përshtatësit

1. Shkoni në radioshack dhe blini 2 nga këto: Mashkull DB-9 Solder Cup Connector2. lidhni pin 5 në lidhësin A në pin 5 në lidhësin B (nëse shikoni me kujdes lidhësin, ato janë shënuar) 3. lidhni kunjin 2 në lidhësin A në kunjin 3 në lidhësin B (nëse shikoni me kujdes lidhësin, ato janë shënuar) 4. lidhni pin 3 në lidhësin A në pin 2 në lidhësin B (nëse shikoni me kujdes lidhësin, ato janë të shënuara)

Hapi 2: Ndryshoni Normën Baud në CMUCam

Ndryshoni Normën Baud në CMUCam
Ndryshoni Normën Baud në CMUCam

Ndryshoni shpejtësinë e baudit të CMUCamera në 9600 baud (shtoni një kërcyes në pozicionin 0).

Hapi 3: Lidhni Kabllon Standarde të Programimit dhe Kodin e Ngarkimit

Lidhni Kabllon Standarde të Programimit dhe Kodin e Ngarkimit
Lidhni Kabllon Standarde të Programimit dhe Kodin e Ngarkimit

Lidhni kabllon standarde të programimit dhe ngarkoni kodin tuaj. Këtu është një shembull i kodit për të filluar. Ky kod do të ndjekë lëvizjen duke përdorur komandat LF dhe FD. Ai do të kalojë IOLine 7 (i lidhur me një LED) dhe do të pasqyrojë LED të statusit të gjurmimit në CMUCam.

& apos ** ODIO1Dim i ri toggleSerial_Event Si i ri oEventDim toggleSerial_Wire Si i ri oWireDim serialReceive_Event Si i ri oEventDim serialReceive_Wire Si i ri oWire & apos ******** objekte të lidhura me korrigjimin ******** Dim statLED Si New oDI *** ********************************** & apos*Nënrutina të përgjithshme*dhe apos ****** ************************************** Nën kryesore & aposinitializoni gjithçka main_init & aposset maskën tonë të prodhimit ndiqni vetëm qendrën e masës CMUCAM_setOutputMask (2, 3) & aposload kornizën tonë të diferencës fillestare CMUCAM_loadDiffFrame () dhe filloni llogaritjen e diferencës CMUCAM_startDiffCalc (10) Përfundoni NënSub kryesore_init & aposinitializoni një status LED statileDialitial_itialitial) Fund Su b & aposproceset morën paketa Nën procesi Paketa () Dim mx As Byte Dim im Si Byte & aposcheck për të dyja Mx dhe My të jenë 0 & aposgranted nëse ata nuk janë 0, vendndodhja do të jetë jashtë (dmth & aposT 12 34) & aposbut atëherë ata fituan dhe apostulli plotëson 0 kriteret rxBuff. Vendndodhja = 2 mx = rxBuff. Vlera rxBuff. Location = 4 my = rxBuff. Vlera dhe udhëzimet e largëta duhet të vezullojnë njëzëri me LED -in e përcjelljes në kamerë Nëse (mx = "0") Dhe (my = "0") statLED = 0 Tjetër statLED = 1 Përfundo Nëse Fundi & Ap ************************************** **** & apos*Funksionet e CMU Cam*& apos ************************************ ******* & apossets e dhëna çoi në on, off, automatik & aposparam led Numri i numrit të led (0, 1) & aposparam val off, on, auto (0, 1, 2) Funksioni CMUCAM_ledSet (ledNum As Byte, val As Byte) Ndërsa Byte & aposVString nuk ishte & apost duke punuar pikërisht në përpiluesin e ri … & nuk ishte i sigurt për atë të vjetër & apostxBuff. VString = "L0 0" & apossetup vargun tonë të komandave me dorë txBuff. Location = 0 txBuff. Value = "L" txBuff. Lokacioni = 1 & aposthe funksioni tr $ thith… kështu që tani kjo po ndodh txBuff. Value = serial_toChar (ledNum) txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 txBuff. Value = serial_toChar (val) txBuff. Location = 4 txBuff. Value = 13 & apossend komandën serial_SendBufferEnd Sub & aposloads kuadrin e diferencës fillestareSub CMUCAM_loadDiffFrame () & apossetup vargun tonë të komandave me dorë txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "2" = 2 Vlera = 13 & apossend komandën serial_SendBufferEnd Sub & aposstart llogarit dallimet e kuadrit & pragun e aposparam prag (0-9) Nën CMUCAM_startDiffCalc (thresh Si Byte) Dim dhjeta Si Byte & apossetup vargun e komandës sonë me dorë txBuff. Location = txB = Vendi = 0x 1 txBuff. Value = "D" txBuff. Lokacioni = 2 txBuff. Vlera = "" txBuff. Lokacioni = 3 dhjetëra = thresh/10 txBuff. Value = serial_toChar (dhjetra) txBuff. Lokacioni = 4 dhjetëra = thresh/10 txBuff. Vlera = serial_toChar (thresh-dhjetëshe) txBuff. Lokacioni = 5 txBuff. Vlera = 1 3 & apossend komandës Si Byte Dim dhjetëra Si Byte & apossetup komandën tonë manualisht txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & lloji apospacket txBuff. Vendndodhja = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmask për të aplikuar txBuff. Location = 5 qindra = maskë/100 txBuff. Vlera = serial_toChar (qindra) txBuff = Vendndodhje = 6 dhjetë (maska-qindra)/10 txBuff. Vlera = serial_toChar (dhjetëra) txBuff. Lokacioni = 7 txBuff. Vlera = serial_toChar (maska-qindra-dhjetëshe) dhe aposcarriage kthimi txBuff. Lokacioni = 8 txBuff. Vlera = 13 & apossend & aperos serial_Send ***************************************** dhe apos*Nënrutina të përgjithshme seriale *& apo s ****************************************** dhe aposinitializon serialin portSub serial_init () & aposinitialize një buton për të ndezur dhe fikur portin serik (aktivizo për të kandiduar, fikur programin) Lidhja (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialize një ngjarje për të ruajtur të dhënat tona serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Ececeive_EiveRiveRiveRiveRiveRiveRiveRiveure = 0 & aposinitialize portin tonë serial serialPort. Baud = cv9600 & aposinitialize statusin tonë serial LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait këtu derisa porti ynë serial të aktivizohet Ndërsa serialPort. Operate = Cift përfundimi i paketësNën serialRe ceive_Event_Code () & apos.received bëhet false kur tamponi 4byte është i zbrazët Ndërsa (serialPort. Received = cvTrue) & aposkoponi bajtin në tamponin tonë rxBuff. Value = serialPort. Vlera & aposcheck për fundin e paketës Nëse rxBuff. Vlera = 13 & apospetë & aposreset tampon në fillim rxBuff. Location = 0 Tjetër rxBuff. Location = rxBuff. Location + 1 FundIf WendEnd Sub & kthehet në dhe jashtë portës seriale për programimSub toggleSerial_Event_Code () Nëse serialPort. Operate = cvFalse serial = CvFalse serialPort. Operate = cvFalse serialActive_LED = 0 Përfundoni IfEnd Sub & aposconverton një numër një shifror në një karakterFunksion serial_toChar (inVal As Byte) Si Byte Dim retVal Si Byte Zgjidh Rastin inVal Rast 0 retVal = "0" Rasti 1 retVal = "1" Rast 2 = "2" Rasti 3 retVal = "3" Rasti 4 retVal = "4" Rasti 5 retVal = "5" Rasti 6 retVal = "6" Rasti 7 retVal = "7" Rasti 8 retVal = "8" Rasti 9 retVal = "9" Fund Përzgjidhni serial_toChar = funksioni retValEnd & apos sen ds të dhënat që përmbahen në txBuff & apos Shënim: sigurohuni që tamponi përmban një kthim të karrocës (13) në fund !! Nën serial_SendBuffer () & apositerate përmes, duke dërguar çdo bajt, fund në kthimin e karrocës txBuff. Lokacioni = 0 Ndërsa 1 serialPort. Vlera = txBuff. Vlera ooPIC. Vonesa = 1 & aposmight nuk ka nevojë për këtë & apossee nëse ishte një karrocë kthimi Nëse txBuff. Value = 13 & aposbreak out of our loop Return End If & aposgo to the next character txBuff. Location = txBuff. Location + 1 WendEnd Sub

Hapi 4: Shkëputni lidhësin e programimit

Shkëputni lidhësin e programimit
Shkëputni lidhësin e programimit
Shkëputni lidhësin e programimit
Shkëputni lidhësin e programimit

Pasi të jetë shkëputur lidhësi i programimit, bashkëngjitni montimin e ri të kabllove siç tregohet më poshtë. Përshtatësi i bërë në hapin 1 duhet të lejojë që CMUCam të lidhet drejtpërdrejt me OOPIC

Hapi 5: Shtypni butonin për të filluar komunikimin serik

Butoni në IOLine 5 do të fillojë komunikimin serik midis CMUCam dhe OOPIC. Meqenëse porti serik përdoret si për programim ashtu edhe për CMUCam, ndoshta duhet të ketë një mënyrë të kontrolluar të ndërrimit të të dyjave.

Programi nuk do të funksionojë derisa të shtypet ky buton. Nëse shtypni përsëri butonin, porti serik do të jetë joaktiv, duke ju lejuar ta programoni atë. LED në IOLine 6 shfaq statusin aktual të portit serik (aktiv do të thotë aktiv, off do të thotë i gatshëm për programim).

Recommended: