Kazalo:

Povezovanje CMUCam2 z OOPIC: 5 korakov
Povezovanje CMUCam2 z OOPIC: 5 korakov

Video: Povezovanje CMUCam2 z OOPIC: 5 korakov

Video: Povezovanje CMUCam2 z OOPIC: 5 korakov
Video: ВСЯ НОЧЬ С ПОЛТЕРГЕЙСТОМ В ЖИЛОМ ДОМЕ, я заснял жуткую активность. 2024, Julij
Anonim

Avtor arsinioSledi več avtorja:

Povezovanje dveh OOBoards skupaj z I2C
Povezovanje dveh OOBoards skupaj z I2C
Povezovanje dveh OOBoards skupaj z I2C
Povezovanje dveh OOBoards skupaj z I2C

Pregled, kako povezati CMUCam2 z OOPIC.

1. korak: Izdelava adapterskega kabla

Izdelava adapterskega kabla
Izdelava adapterskega kabla

1. Pojdite na radioshack in kupite 2 od teh: Moški DB-9 priključek za spajkanje 2. spajkalni zatič 5 na priključku A na zatič 5 na priključku B (če pozorno pogledate priključek, sta označena) 3. spajkalni zatič 2 na priključku A na zatič 3 na priključku B (če pozorno pogledate priključek, sta označena) 4. spajkalni zatič 3 na priključku A do zatiča 2 na priključku B (če pozorno pogledate priključek, so označeni)

2. korak: spremenite hitrost prenosa podatkov na CMUCam

Spremenite hitrost prenosa podatkov na CMUCam
Spremenite hitrost prenosa podatkov na CMUCam

Spremenite hitrost prenosa kamere CMUC na 9600 baudov (dodajte mostiček v položaj 0).

3. korak: Priključite standardni programski kabel in kodo za nalaganje

Priključite standardni programski kabel in kodo za nalaganje
Priključite standardni programski kabel in kodo za nalaganje

Priključite standardni programski kabel in naložite kodo. Tukaj je nekaj primerov kode za začetek. Ta koda bo spremljala gibanje z ukazi LF in FD. Preklopil bo IOLine 7 (priključen na LED) in prikazal LED za sledenje statusu na CMUCam.

& apos ******** objekti, povezani s serijskimi vrati Novi oDIO1Dim toggleSerial_Event As New oEventDim toggleSerial_Wire As New oWireDim serialReceive_Event As New oEventDim serialReceive_Wire As New oWire & apos ******** odpravljanje napak povezanih predmetov ******** Dim statLED Kot novo oDIO1 & a *** ************************************ & apos*Splošne podprograme*& apos ****** ************************************** Sub main & aposinitialize all main_init & aposset our output mask to samo sledite središču mase CMUCAM_setOutputMask (2, 3) & aposload naš začetni okvir razlike CMUCAM_loadDiffFrame () & aposstart izračun razlike CMUCAM_startDiffCalc (10) End SubSub main_init & aposinitialize status LED LED statLED. IOLine = 7) Konec Su b & aposprocesi prejeti paketiSub processPacket () Dim mx As Byte Dim my As Byte & aposcheck za Mx in My, da bo 0 & aposgrantirano, če nista 0, bo lokacija izklopljena (tj. & aposT 12 34) & apostem pa bodo zmagali & apost izpolnjujejo merila 0 rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Vrednost & apost LED naj utripa v sozvočju s sledilno LED na kameri If (mx = "0") And (my = "0") statLED = 0 Druga statLED = 1 Konec IfEnd Sub & apos ****************************************** **** & apos*CMU Cam funkcije*& apos *************************************** ******* & aposseti dano vodilo za vklop, izklop, samodejno & aposparam ledNum število LED (0, 1) & aposparam val izklop, vklop, samodejno (0, 1, 2) Funkcija CMUCAM_ledSet (ledNum kot bajt, val kot bajt) Ker Byte & aposVString ni & apost deloval prav v novem prevajalniku… & aposne prepričani o starem & apostxBuff. VString = "L0 0" & aposse nastavite naš ukazni niz ročno txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & apostx tr $ funkcija je zanič… zato se to zdaj dogaja = 13 & pošlje ukaz serial_SendBufferEnd Sub & apospremeni začetno razliko frameSub CMUCAM_loadDiffFrame () & apossetup naš ukazni niz ročno txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Val. Vrednost = 13 & pošlji ukaz serial_SendBufferEnd Sub & aposstarts, ki izračuna razlike v okvirju & aposparam prag praga (0-9) Sub CMUCAM_startDiffCalc (thresh As Byte) Dim desetine As Byte & apossetup naš ukazni niz ročno txBuff. Location = 0 txBuff. Location = 0 txBuff. Location = 0 txBuff. Location = 0 txBuff. Location = 0 txBuff. 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 desetice = thresh/10 txBuff. Value = serial_toChar (deset) txBuff. Location = 4 desetice = thresh/10 txBue = serial_toChar (prag-desetice) txBuff. Location = 5 txBuff. Value = 1 3 & apossend ukaz serial_SendBufferEnd Sub & apossets izhodna maska & aposparam paket Vrsta paketa za masko (0, 1, 2, itd) glejte stran 46 & aposparam maska vrednost maske za uporabo (0-255) Sub CMUCAM_setOutputMask (packetType As Byte, mask As Byte) Kot Byte Dim desetina Kot Byte & apossetup naš ukazni niz ročno txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacketket tx. Lokacija = 3 txBuff. Value = serial_toChar (vrsta paketa) txBuff. Location = 4 txBuff. Value = "" & aposmaska za uporabo txBuff. Location = 5 stotin = maska/100 txBuff. Value = serial_toChar (stotine) txBuff.to (mask-stotine)/10 txBuff. Value = serial_toChar (desetine) txBuff. Location = 7 txBuff. Value = serial_toChar (maska-stotine-desetice) & aposcarriage vrne txBuff. Location = 8 txBuff. Value = 13 & aposusi ******************************************* & apos*Splošne serijske podprograme *& apo s ******************************************** & aposinitializira serijsko portSub serial_init () & aposinitializirajte gumb za vklop in izklop serijskih vrat (vklopite za zagon, izklopite za programiranje) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Wut). Povezava (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialize event to buffer our data serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link = 0 & aposinitialize naše serijska vrata serialPort. Baud = cv9600 & aposinitialize naše serijsko stanje LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposvažajte tukaj, dokler se naša serijska vrata ne aktivirajo. SerialPort. paket zaključekSub serialRe ceive_Event_Code () & apos.received postane false, ko je 4 -bajtni vmesni pomnilnik prazen. Medtem ko (serialPort. Received = cvTrue) & aposkopira bajt v naš vmesni pomnilnik rxBuff. Value = serialPort. Value & aposcheck za konec paketa Če je rxBuff. Palket & aposnastavi medpomnilnik na začetek rxBuff. Location = 0 Sicer rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturn vklopi in izklopi serijska vrata za programiranjeSub toggleSerial_Event_Code () Če je serialPort. Operate = cvFalseal serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & pretvori enomestno številko v characterFunction serial_toChar (inVal As Byte) Kot Byte Dim retVal As Byte Select Case inVal Case 0 retVal = "0" Primer 1 retVal = "1" Primer 2 retVal = "2" Primer 3 retVal = "3" Primer 4 retVal = "4" Primer 5 retVal = "5" Primer 6 retVal = "6" Primer 7 retVal = "7" Primer 8 retVal = "8" Primer 9 retVal = "9" Konec Izberite serial_toChar = retValEnd Funkcija & apos sen ds podatki v txBuff & apos Opomba: poskrbite, da bo vmesni pomnilnik vseboval vrnitev nosilca (13) na koncu !!. Vrednost ooPIC. Delay = 1 & morda tega ne potrebuje & apossee, če je šlo za vrnitev nosilca Če je txBuff. Value = 13 & aposbreak iz naše zanke Return End If & aposgo na naslednji znak txBuff. Location = txBuff. Location + 1 WendEnd Sub

4. korak: Odklopite priključek za programiranje

Odklopite priključek za programiranje
Odklopite priključek za programiranje
Odklopite priključek za programiranje
Odklopite priključek za programiranje

Ko odklopite priključek za programiranje, priključite nov sklop kabla, kot je prikazano spodaj. Adapter, narejen v 1. koraku, mora omogočati, da se CMUCam neposredno priključi na OOPIC

5. korak: Za začetek serijske komunikacije pritisnite gumb

Gumb na IOLine 5 bo začel serijsko komunikacijo med CMUCam in OOPIC. Ker se serijska vrata uporabljajo tako za programiranje kot za CMUCam, bi verjetno moral obstajati nadzorovan način preklapljanja med tema dvema.

Program se ne zažene, dokler ne pritisnete tega gumba. Če znova pritisnete gumb, bodo serijska vrata neaktivna, kar vam omogoča programiranje. LED na IOLine 6 prikazuje trenutno stanje serijskih vrat (vklopljeno pomeni aktivno, izklopljeno pripravljeno za programiranje).

Priporočena: