Innholdsfortegnelse:

Grensesnitt mellom en CMUCam2 og en OOPIC: 5 trinn
Grensesnitt mellom en CMUCam2 og en OOPIC: 5 trinn

Video: Grensesnitt mellom en CMUCam2 og en OOPIC: 5 trinn

Video: Grensesnitt mellom en CMUCam2 og en OOPIC: 5 trinn
Video: Тайна Великой Китайской Стены 2024, November
Anonim

Av arsinioFølg Mer av forfatteren:

Koble to OOBoards sammen ved hjelp av I2C
Koble to OOBoards sammen ved hjelp av I2C
Koble to OOBoards sammen ved hjelp av I2C
Koble to OOBoards sammen ved hjelp av I2C

Oversikt over hvordan du kobler en CMUCam2 til og OOPIC.

Trinn 1: Lag adapterkabelen

Lag adapterkabel
Lag adapterkabel

1. Gå til radioshack og kjøp 2 av disse: Hann DB-9 Loddekopp-kontakt2. loddestift 5 på kontakt A til pinne 5 på kontakt B (hvis du ser nøye på kontakten, er de merket) 3. loddestift 2 på kontakt A til pinne 3 på kontakt B (hvis du ser nøye på kontakten, er de merket) 4. loddestift 3 på kontakt A til pinne 2 på kontakt B (hvis du ser nøye på kontakten, er de merket)

Trinn 2: Endre overføringshastigheten på CMUCam

Endre overføringshastigheten på CMUCam
Endre overføringshastigheten på CMUCam

Endre overføringshastigheten til CMUCamera til 9600 baud (legg til en jumper til posisjon 0).

Trinn 3: Koble til standard programmeringskabel og opplastingskode

Koble til standard programmeringskabel og opplastingskode
Koble til standard programmeringskabel og opplastingskode

Koble til standard programmeringskabel og last opp koden. Her er noen eksempler på kode for å komme i gang. Denne koden vil spore bevegelse ved hjelp av LF- og FD -kommandoene. Den vil bytte IOLine 7 (koblet til en LED) og speile statusen for sporingsstatus på CMUCam.

& apos ******** serieportrelaterte objekter ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & aposchange the 27 to make the buffer greater/smallerDim 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 ******** feilsøkingsrelaterte objekter ******** Dim statLED As New oDIO1 & apos ***** ******** ***** ****** ***** følg bare massesenteret CMUCAM_setOutputMask (2, 3) & aposload vår første differensramme CMUCAM_loadDiffFrame () & aposstart differensberegningen CMUCAM_startDiffCalc (10) Avslut SubSub main_init & aposinitialiser en status -LED statLED. IOLine = 7 statLED. Dirizein c) Avslutt Su b & aposprosesser mottatte pakker Subprosess Packet () Dim mx As Byte Dim my As Byte & aposcheck for både Mx og My å være 0 & aposgrant hvis de ikke er 0, vil plasseringen være av (dvs. & aposT 12 34) & aposbut da vant og apost oppfyller 0 -kriteriene rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe LED skal blinke i takt med sporings -LED -en på kameraet Hvis (mx = "0") Og (my = "0") statLED = 0 Ellers statLED = 1 Slutt IfEnd Sub & apos ***************************************** **** & apos*CMU Cam Functions*& apos *************************************** ******* & apossets den gitte ledet til på, av, automatisk og aposparam led Antall led (0, 1) & aposparam val av, på, auto (0, 1, 2) Funksjon CMUCAM_ledSet (ledNum As Byte, val As Byte) Ettersom Byte & aposVString ikke & apost fungerte akkurat i den nye kompilatoren … & aposn ikke sikker på den gamle & apostxBuff. VString = "L0 0" & apossetup vår kommandostreng manuelt txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s tr $ -funksjonen suger … så nå skjer 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 & aposloads den første differansen frameSub CMUCAM_loadDiffFrame () & apossetup vår kommandostreng manuelt txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff.uffx. Value = 13 & apossend kommandoen serial_SendBufferEnd Sub & aposstarts som beregner rammeforskjeller og aposparam-terskelgrense (0-9) Sub CMUCAM_startDiffCalc (thresh As Byte) Dim tens As Byte & apossetup our command string Manual txBuff. Location = 0 txBuff. Value = "F" txBuff. 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 tiere = tresker/10 txBuff. Value = serial_toChar (tiere) txBuff. Location = 4 titalls = tersk/10 txBuff. Value = serial_toChar (thresh-tens) 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 hundrevis As Byte Dim tens As Byte & apossetup vår 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 å bruke txBuff. Location = 5 hundre = maske/100 txBuff. Value = serial_toChar (hundrevis) txBuff. Location = 6 tens = (mask-hundrevis)/10 txBuff. Value = serial_toChar (tens) txBuff. Location = 7 txBuff. Value = serial_toChar (mask-hundred-tens) & aposcarriage return txBuff. Location = 8 txBuff. Value = 13 & apendend the command serial_SendBufferEnd Sub & apos* ********************************************* og apos*Generelle serieprogrammer *& apo s *********************** ***** portSub serial_init () og aposinitialisere en knapp for å slå på og av serieporten (slå på for å kjøre, slå av for å programmere) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerialOB. Lenke (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue og aposinitialisere en hendelse for å buffere dataene våre serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event. Operate. Operate. Operate. Operate. Operate_Event. Operate. Operate_Event. Operate. OperateReserve_Orseri. Reserver. Reserver. Reser. Reser_Reser. Resj. Resj. Reser. Resj. Reser). = 0 & aposinitialiser vår serielle port serialPort. Baud = cv9600 & aposinitialiser vår serielle status LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait her til vår serielle port blir aktivert Mens serialPort. Operate = cvFalse WendEnd Sub og mottar buffer og apotek pakkefylling Sub -serieRe ceive_Event_Code () & apos.received blir falsk når 4 -bytes buffer er tom Mens (serialPort. Received = cvTrue) & aposkopier byten til bufferen vår rxBuff. Value = serialPort. Value & aposcheck for slutten av pakken Hvis rxBuff. Value = 13 & aposacket -pakke) & aposetter tilbakestill bufferen til begynnelsen rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns på og av seriell port for programmeringSub toggleSerial_Event_Code () If serialPort. Operate = cvFalse serialPort. Type = cctiveForseAlle = cv serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & aposkonverterer et ett siffer tall til en characterFunction serial_toChar (inVal som Byte) Som Byte Dim retVal Som Byte Velg 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 Velg serial_toChar = retValEnd Funksjon & apos sen ds dataene i txBuff & apos Merk: sørg for at bufferen inneholder en vognretur (13) på slutten !! Sub serial_SendBuffer () & apositerer gjennom, send hver byte, slutt på vognreturen txBuff. Location = 0 Mens 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 & apos kan ikke trenge dette & apossee hvis det var en vognretur Hvis txBuff. Value = 13 & aposbreak out of our loop Return End If & aposgo to the next character txBuff. Location = txBuff. Location + 1 WendEnd Sub

Trinn 4: Koble fra programmeringskontakten

Koble fra programmeringskontakten
Koble fra programmeringskontakten
Koble fra programmeringskontakten
Koble fra programmeringskontakten

Når programmeringskontakten er koblet fra, fest den nye kabelenheten som vist nedenfor. Adapteren som ble laget i trinn 1, bør gjøre det mulig å koble CMUCam direkte til OOPIC

Trinn 5: Trykk på knappen for å initialisere seriell kommunikasjon

Knappen på IOLine 5 starter den serielle kommunikasjonen mellom CMUCam og OOPIC. Siden serieporten brukes til både programmering og CMUCam, bør det sannsynligvis være en kontrollert måte å veksle mellom de to.

Programmet vil ikke kjøre før du trykker på denne knappen. Hvis du trykker på knappen igjen, blir den serielle porten inaktiv, slik at du kan programmere den. Lysdioden på IOLine 6 viser gjeldende seriell portstatus (på betyr aktiv, av betyr klar for programmering).

Anbefalt: