Indholdsfortegnelse:
- Trin 1: Lav adapterkablet
- Trin 2: Skift baudhastighed på CMUCam
- Trin 3: Tilslut standardprogrammeringskablet og uploadkoden
- Trin 4: Afbryd programmeringsstikket
- Trin 5: Tryk på knappen for at initialisere seriel kommunikation
Video: Grænseflade mellem en CMUCam2 og en OOPIC: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:30
Af arsinioFølg mere af forfatteren:
Oversigt over, hvordan du kobler en CMUCam2 til og OOPIC.
Trin 1: Lav adapterkablet
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 CMUC -kameraets baudhastighed til 9600 baud (tilføj en jumper til position 0).
Trin 3: 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
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:
Forskellen mellem (alternativ strøm og jævnstrøm): 13 trin
Forskellen mellem (alternativ strøm og jævnstrøm): Alle ved, at elektricitet for det meste er DC, men hvad med en anden type elektricitet? Kender du Ac? Hvad står AC for? Kan den bruges derefter DC? I denne undersøgelse kender vi forskellen mellem elektricitetstyper, kilder, anvendelsesmuligheder
RS485 mellem Arduino og Raspberry Pi: 7 trin
RS485 Mellem Arduino og Raspberry Pi: Til skolen skal jeg lave et projekt. Jeg vælger at lave en smart drivhuscontroller fuldstændig styret af en hindbærpi. Sensorerne vil blive drevet af en arduino uno. I de følgende måneder vil jeg offentliggøre fremstilling af dette projekt trin ved
Forøg clearance mellem kobberplanet og signalsporet: 3 trin
Forøg clearance mellem kobberflyet og signalsporet: Jeg er en hobbyist, og jeg designer Printed Circuit Boards (PCB) til mine blogs og Youtube -videoer. Jeg bestilte mit printkort online fra LionCircuits. Det er en indisk virksomhed, og de har en automatiseret platform til fremstilling. Det gennemgår automatisk din Ger
Grænseflade mellem 3-akset gyroskopsensor BMG160 med hindbær Pi: 5 trin
Grænseflade til 3-akset gyroskopsensor BMG160 med Raspberry Pi: I dagens verden er mere end halvdelen af de unge og børn glade for spil, og alle dem, der er vilde med det, fascineret af de tekniske aspekter ved spil, kender vigtigheden af bevægelsesføling i dette domæne. Vi var også overrasket over det samme
Hej Blynk! Grænseflade mellem SPEEEduino og Blynk -appen: 5 trin
Hej Blynk! Grænseflade mellem SPEEEduino og Blynk-appen: Hvad er SPEEEduino? SPEEEduino er et Wi-Fi-aktiveret mikrokontrolkort baseret på Arduino-økosystemet, bygget til undervisere. SPEEEduino kombinerer formfaktoren og mikrokontrolleren til Arduino med ESP8266 Wi-Fi SoC, hvilket gør