INHOUDSOPGAWE:

Koppel 'n CMUCam2 aan 'n OOPIC: 5 stappe
Koppel 'n CMUCam2 aan 'n OOPIC: 5 stappe

Video: Koppel 'n CMUCam2 aan 'n OOPIC: 5 stappe

Video: Koppel 'n CMUCam2 aan 'n OOPIC: 5 stappe
Video: Такие секреты уже все забыли, но их стоит знать! Полезные советы на все случаи жизни! 2024, November
Anonim

Deur arsinio Volg meer deur die skrywer:

Verbind twee OOBoards met behulp van I2C
Verbind twee OOBoards met behulp van I2C
Verbind twee OOBoards met behulp van I2C
Verbind twee OOBoards met behulp van I2C

Oorsig van hoe u 'n CMUCam2 met en OOPIC kan koppel.

Stap 1: Maak die adapterkabel

Maak die adapterkabel
Maak die adapterkabel

1. Gaan na radioshack en koop 2 hiervan: Mannelike DB-9 soldeerbeker-aansluiting2. soldeerspeld 5 op aansluiting A tot pen 5 op aansluiting B (as u mooi na die aansluiting kyk, is dit gemerk) 3. soldeerspeld 2 op aansluiting A tot pen 3 op aansluiting B (as u mooi na die aansluiting kyk, is dit gemerk) 4. soldeerspeld 3 op aansluiting A tot pen 2 op aansluiting B (as u mooi na die aansluiting kyk, is dit gemerk)

Stap 2: Verander die baudsnelheid op die CMUCam

Verander die baud -tempo op die CMUCam
Verander die baud -tempo op die CMUCam

Verander die baud -tempo van die CMUCamera na 9600 baud (voeg 'n jumper by posisie 0).

Stap 3: Koppel die standaard programmeerkabel en laai kode op

Koppel die standaard programmeerkabel en laai kode op
Koppel die standaard programmeerkabel en laai kode op

Koppel die standaard programmeerkabel en laai u kode op. Hier is 'n voorbeeld van 'n kode om aan die gang te kom. Hierdie kode volg beweging met behulp van die LF- en FD -opdragte. Dit skakel IOLine 7 (gekoppel aan 'n LED) en weerspieël die volgstatus -LED op die CMUCam.

& apos ******** seriële poortverwante voorwerpe ******** Dim seriële poort as nuut oSerialPortDim txBuff as nuut oBuffer27 & verander die 27 om die buffer groter/kleiner te maak Dim rxBuff as nuwe oBuffer10Dim serialActive_LED as nuwe oDIO1Dim toggleSerial_Button As Nuwe oDIO1Dim toggleSerial_Event As New oEventDim toggleSerial_Wire As New oWireDim serialReceive_Event As New oEventDim serialReceive_Wire As New oWire & apos ******** ontfout -verwante voorwerpe ******** Dim statLED as nuwe oDIO1****** ************************************* en apos*Generiese subroutines*en apos ****** *********************************************************************************************************** >>> volg slegs die massamiddelpunt CMUCAM_setOutputMask (2, 3) en laai ons aanvanklike verskilraam af) Einde Su b & aposprosesse ontvang pakkies Subproses Pakket () Dim mx As Byte Dim my As Byte & aposcheck vir beide Mx en My om 0 te wees & as hulle nie 0 is nie, sal die ligging af wees (dws & aposT 12 34) & apos but then they won & apost meet the 0 criteria rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe led moet eenstemmig knip met die opsporings -LED op die kamera As (mx = "0") En (my = "0") statLED = 0 Anders statLED = 1 Beëindig IfEnd Sub & apos ***************************************** **** & apos*CMU Cam Functions*& apos *************************************** ******* & apossets die gegewe gelei tot aan, af, outomaties en aposparam gelei Aantal led (0, 1) en aposparam val af, aan, outomaties (0, 1, 2) Funksie CMUCAM_ledSet (ledNum As Byte, val As Byte) Aangesien Byte & aposVString nie in die nuwe samesteller werk nie & apostos … & nie seker is oor die ou nie & apostxBuff. VString = "L0 0" & apossetup ons opdragstring handmatig txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s tr $ -funksie suig … so nou gebeur dit txBuff. Value = serial_toChar (ledNum) txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 txBuff. Value = serial_toChar (val) txBuff. Location = 4 txBuff. Value = 13 & stuur die opdrag serial_SendBufferEnd Sub en laai die aanvanklike verskil frameSub CMUCAM_loadDiffFrame () op en stel ons opdragstring handmatig txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff.uff. Value = 13 & stuur die opdrag serial_SendBufferEnd Sub & aposstarts om raamverskille en aposparam-drempeldrempel te bereken (0-9) Sub CMUCAM_startDiffCalc (dors as byte) Dim tens as Byte en stel ons opdragstring handmatig txBuff. Location = 0 txBuff. Value = "F" txBuff in 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 tiene = dors/10 txBuff. Value = serial_toChar (tiene) txBuff. Location = 4 tiene = dors/10 txBuff. Value = serial_toChar (dors-tiene) txBuff. Location = 5 txBuff. Value = 1 3 en stuur die opdrag serial_SendBufferEnd Sub af As Byte Dim tens As Byte & apossetup ons command string handmatig txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacket tipe txBuff. Location = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmasker om txBuff. Location = 5 honderde = masker/100 txBuff. Value = serial_toChar (honderde) txBuff. Location = 6 tiene = toe te pas (masker-honderde)/10 txBuff. Value = serial_toChar (tens) txBuff. Location = 7 txBuff. Value = serial_toChar (masker-honderde-tiene) en apocheeropgawe txBuff. Location = 8 txBuff. Value = 13 & plaas die opdrag serial_SendBufferEind Sub & aposend* ********************************************* en apos*Algemene reeksprogramme *& apo s ***** ***** portSub serial_init () en aposinitialiseer 'n knoppie om die seriële poort aan en uit te skakel (skakel aan om uit te voer, skakel af om te programmeer) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Button_). Koppel (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue en aposinitialiseer 'n gebeurtenis om ons data serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event. Operate) op te buffer. = 0 & aposinitialiseer ons seriële poort serialPort. Baud = cv9600 & aposinitialiseer ons seriële status LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait hier totdat ons seriële poort geaktiveer word terwyl serialPort. Operate = cvFalse WendEnd Sub in ons ontvanger en ontvang pakkie voltooiing Sub -reeks Re ceive_Event_Code () & apos.received word onwaar as 4byte buffer leeg is Terwyl (serialPort. Received = cvTrue) & aposkopie die byte na ons buffer rxBuff. Value = serialPort. Value & aposcheck vir einde van pakkie As rxBuff. Value = 13 & aposacket packet & stel die buffer terug na die begin rxBuff. Location = 0 Anders rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns aan en af van die seriële poort vir programmeringSub toggleSerial_Event_Code () If serialPort. Operate = cvFalse serialPort. Type = cvFalse serialPort. Type serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & apos omskep 'n enkelsyfergetal in 'n characterFunction serial_toChar (inVal As Byte) As Byte Dim retVal As Byte Kies 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" Einde Kies serial_toChar = retValEnd Funksie & apos sen ds die data in txBuff & apos Let wel: maak seker dat buffer aan die einde 'n koetsopgawe (13) bevat! Sub serial_SendBuffer () & apositerate deur, stuur elke greep, eindig op koetsopgawe txBuff. Location = 0 Terwyl 1 serialPort. Value = txBuff. Waarde ooPIC. Delay = 1 & mag dit moontlik nie nodig hê nie & apossee as dit 'n koetsopgawe was As txBuff. Value = 13 & aposbreak uit ons lus terugkeer End If & aposgo na die volgende karakter txBuff. Location = txBuff. Location + 1 WendEnd Sub

Stap 4: Ontkoppel die programmeerkonnekteerder

Ontkoppel die programmeringskonnekteerder
Ontkoppel die programmeringskonnekteerder
Ontkoppel die programmeringskonnekteerder
Ontkoppel die programmeringskonnekteerder

Sodra die programmeringskoppelstuk ontkoppel is, bevestig die nuwe kabelsamestelling soos hieronder getoon. Die adapter wat in stap 1 gemaak is, moet toelaat dat die CMUCam direk in die OOPIC aangesluit word

Stap 5: Druk die knoppie om seriële kommunikasie te begin

Die knoppie op IOLine 5 sal die seriële kommunikasie tussen die CMUCam en die OOPIC begin. Aangesien die seriële poort vir beide programmeerder en CMUCam gebruik word, moet daar waarskynlik 'n beheerde manier wees om tussen die twee te wissel.

Die program sal eers loop as hierdie knoppie ingedruk word. As u weer op die knoppie druk, word die seriële poort onaktief, sodat u dit kan programmeer. Die LED op IOLine 6 vertoon die huidige seriële poortstatus (aan beteken aktief, af beteken gereed vir programmering).

Aanbeveel: