Indholdsfortegnelse:

Grænseflade mellem en CMUCam2 og en OOPIC: 5 trin
Grænseflade mellem en CMUCam2 og en OOPIC: 5 trin

Video: Grænseflade mellem en CMUCam2 og en OOPIC: 5 trin

Video: Grænseflade mellem en CMUCam2 og en OOPIC: 5 trin
Video: HamletScenen Dronning G. Univers 2024, Juli
Anonim

Af arsinioFølg mere af forfatteren:

Tilslutning af to OOBoards sammen ved hjælp af I2C
Tilslutning af to OOBoards sammen ved hjælp af I2C
Tilslutning af to OOBoards sammen ved hjælp af I2C
Tilslutning af to OOBoards sammen ved hjælp af I2C

Oversigt over, hvordan du kobler en CMUCam2 til og OOPIC.

Trin 1: Lav adapterkablet

Fremstilling af adapterkabel
Fremstilling af adapterkabel

1. Gå til radioshack, og køb 2 af disse: Hann DB-9 Loddekopstik 2. loddebolt 5 på stik A til stift 5 på stik B (hvis du ser nøje på stikket, er de markeret) 3. loddestift 2 på stik A til stift 3 på stik B (hvis du ser nøje på stikket, er de markeret) 4. loddestift 3 på stik A til stift 2 på stik B (hvis du ser nøje på stikket, er de markeret)

Trin 2: Skift baudhastighed på CMUCam

Skift baudhastighed på CMUCam
Skift baudhastighed på CMUCam

Skift CMUC -kameraets baudhastighed til 9600 baud (tilføj en jumper til position 0).

Trin 3: Tilslut standardprogrammeringskablet og uploadkoden

Tilslut standardprogrammeringskablet og uploadkoden
Tilslut standardprogrammeringskablet og uploadkoden

Tilslut standard programmeringskabel og upload din kode. Her er et eksempel på en kode for at komme i gang. Denne kode vil spore bevægelse ved hjælp af kommandoerne LF og FD. Det skifter IOLine 7 (tilsluttet en LED) og afspejler sporingsstatus -LED'en på CMUCam.

& apos ******** serieportrelaterede objekter ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & aposchange the 27 to make the buffer større/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 ******** debug relaterede objekter ******** Dim statLED som nye oDIO1 & apos ***** ************************************* og apos*Generiske underprogrammer*og apos ****** *** følg kun massecenter CMUCAM_setOutputMask (2, 3) & aposload vores oprindelige differensramme CMUCAM_loadDiffFrame () & aposstart differensberegningen CMUCAM_startDiffCalc (10) Afslut SubSub main_init & aposinitialiser en status -LED statLED. IOLine = 7 statLED. Dirize_ cortin) Afslut Su b & aposprocesser modtaget pakker SubprocesPakke () Dim mx As Byte Dim my As Byte & aposcheck for både Mx og My at være 0 & aposgrant hvis de ikke er 0, vil placeringen være slukket (dvs. & aposT 12 34) & aposbut derefter vandt de og apost opfyldte 0 kriterierne rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe LED skal blinke ens med sporings -LED'en på kameraet Hvis (mx = "0") Og (my = "0") statLED = 0 Ellers statLED = 1 Afslut ifEnd Sub & apos ****************************************** **** & apos*CMU Cam -funktioner*& apos *************************************** ******* & apossets den givne førte til on, off, automatisk & aposparam ledNum antal led (0, 1) & aposparam val off, on, auto (0, 1, 2) Function CMUCAM_ledSet (ledNum As Byte, val As Byte) Da Byte & aposVString ikke & apost fungerede lige i den nye kompilator … & apos ikke sikker på den gamle & apostxBuff. VString = "L0 0" & apossetup vores kommandostreng manuelt txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s tr $ -funktionen suger … så nu sker dette 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 kommandoen serial_SendBufferEnd Sub & aposloader den indledende differens frameSub CMUCAM_loadDiffFrame () & apossetup vores kommandostreng manuelt txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff.uff. Value = 13 & apossend kommandoen serial_SendBufferEnd Sub & aposstarts beregning af rammeforskelle og aposparam tærskelværdi (0-9) Sub CMUCAM_startDiffCalc (tærskning som byte) Dim tiere som byte & apossetup vores kommandostreng manuelt txBuff. Location = 0 txBuff. Value = "F" txBuff. 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 tiere = tærske/10 txBuff. Value = serial_toChar (tiere) txBuff. Location = 4 tiere = tærske/10 txBuff. Value = serial_toChar (tærskning) txBuff. Location = 5 txBuff. Value = 1 3 & apossend kommandoen serial_SendBufferEnd Sub & apossets the output mask & aposparam packType type packet to mask (0, 1, 2, etc) see page 46 & aposparam mask mask value to apply (0-255) Sub CMUCAM_setOutputMask (packetType As Byte, mask As Byte) Dim hundredvis As Byte Dim tens As Byte & apossetup vores kommandostreng manuelt txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacket type txBuff. Location = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmask for at anvende txBuff. Location = 5 hundreder = maske/100 txBuff. Value = serial_toChar (hundredvis) txBuff. Location = 6 tens = (mask-hundreder)/10 txBuff. Value = serial_toChar (tens) txBuff. Location = 7 txBuff. Value = serial_toChar (mask-hundred-tens) & aposcarriage return txBuff. Location = 8 txBuff. Value = 13 & apossend the command serial_SendBufferEnd Sub & apos* ********************************************* og apos*Generelle serielle underprogrammer *& apo s ************** ***** portSub serial_init () & aposinitialiser en knap for at tænde og slukke den serielle port (tænde for at køre, slukke for at programmere) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Button.). Link (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialiser en hændelse for at buffere vores data serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event. Operate_Reve. Operate. Operate. Operate_Event. Operate) = 0 & aposinitialiser vores serielle port serialPort. Baud = cv9600 & aposinitialiser vores serielle status LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait her, indtil vores serielle port bliver aktiveret, mens serialPort. Operate = cvFalse WendEnd Sub og modtager buffer og modtager buffer pakkeudfyldning Sub -serieRe ceive_Event_Code () & apos.received bliver falsk, når 4byte buffer er tom Mens (serialPort. Received = cvTrue) & aposkopier byte til vores buffer rxBuff. Value = serialPort. Value & aposcheck for end of packet If rxBuff. Value = 13 & aposacket packet & aposindstil bufferen til begyndelsen rxBuff. Location = 0 Ellers rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns til og fra den serielle port til programmeringSub toggleSerial_Event_Code () If serialPort. Operate = cvFalse serialPort. Type = cvFalse serialPort. Til = A serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & aposkonverterer et enkelt cifret tal til en characterFunction serial_toChar (inVal som Byte) Som Byte Dim retVal som Byte Vælg 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" End Vælg serial_toChar = retValEnd Funktion & apos sen ds de data, der er indeholdt i txBuff & apos Bemærk: sørg for, at bufferen indeholder en vognretur (13) i slutningen !! Sub serial_SendBuffer () & apositerer igennem, sender hver byte, slut på vognretur txBuff. Location = 0 Mens 1 serialPort. Value = txBuff. Værdi ooPIC. Delay = 1 & kan muligvis ikke bruge dette & apossee hvis det var en vognretur Hvis txBuff. Value = 13 & aposbreak ud af vores loop Return End If & aposgo til det næste tegn txBuff. Location = txBuff. Location + 1 WendEnd Sub

Trin 4: Afbryd programmeringsstikket

Afbryd programmeringsstikket
Afbryd programmeringsstikket
Afbryd programmeringsstikket
Afbryd programmeringsstikket

Når programmeringsstikket er afbrudt, skal du tilslutte den nye kabelsamling som vist herunder. Adapteren, der blev foretaget i trin 1, skulle gøre det muligt at tilslutte CMUCam direkte til OOPIC

Trin 5: Tryk på knappen for at initialisere seriel kommunikation

Knappen på IOLine 5 starter den serielle kommunikation mellem CMUCam og OOPIC. Da den serielle port bruges til både programmering og CMUCam, burde der sandsynligvis være en kontrolleret måde at skifte mellem de to.

Programmet kører ikke, før der trykkes på denne knap. Hvis du trykker på knappen igen, bliver den serielle port inaktiv, så du kan programmere den. Lysdioden på IOLine 6 viser den aktuelle serielle portstatus (on betyder aktiv, off betyder klar til programmering).

Anbefalede: