Cuprins:
- Pasul 1: Realizarea cablului adaptorului
- Pasul 2: Schimbați rata Baud pe CMUCam
- Pasul 3: Conectați cablul de programare standard și încărcați codul
- Pasul 4: Deconectați conectorul de programare
- Pasul 5: Apăsați butonul pentru a inițializa comunicarea în serie
Video: Interfațarea unui CMUCam2 cu un OOPIC: 5 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
De arsinio Urmăriți mai multe de la autor:
Prezentare generală a modului de interfață între CMUCam2 și OOPIC.
Pasul 1: Realizarea cablului adaptorului
1. Mergeți la radioshack și cumpărați 2 dintre acestea: Connector masculin DB-9 Solder Cup2. pinul de lipit 5 de pe conectorul A până la pinul 5 de pe conectorul B (dacă priviți cu atenție conectorul, acestea sunt marcate) 3. pinul de lipit 2 de pe conectorul A până la pinul 3 de pe conectorul B (dacă priviți cu atenție conectorul, acestea sunt marcate) 4. pinul de lipit 3 de pe conectorul A până la pinul 2 de pe conectorul B (dacă priviți cu atenție conectorul, acestea sunt marcate)
Pasul 2: Schimbați rata Baud pe CMUCam
Schimbați rata de baud a camerei CMUC la 9600 baud (adăugați un jumper în poziția 0).
Pasul 3: Conectați cablul de programare standard și încărcați codul
Conectați cablul de programare standard și încărcați codul. Iată câteva exemple de cod pentru a începe. Acest cod va urmări mișcarea folosind comenzile LF și FD. Acesta va comuta IOLine 7 (conectat la un LED) și va reflecta LED-ul de stare de urmărire pe CMUCam.
& apos ******** obiecte legate de portul serial ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & aposchange 27 pentru a face bufferul mai mare / mai mic Dim 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 related related ******** Dim statLED As New oDIO1 & apos ***** ************************************** și apos * Subrutine generice * & apos ****** **************************************** Sub main & aposinitialize everything main_init & aposset our output mask to urmează doar centrul de masă CMUCAM_setOutputMask (2, 3) și descarcă cadrul diferenței noastre inițiale CMUCAM_loadDiffFrame () & aposstart calculul diferenței CMUCAM_startDiffCalc (10) End SubSub main_init & aposinitialize a status LED statLED. IOLine = 7 statLED. Direction = serial) Sfârșitul Su b & aposprocese primite pachete Sub procesPacket () Dim mx As Byte Dim my As Byte & aposcheck atat pentru Mx cat si My pentru a fi 0 & aposgranted daca nu sunt 0, locatia va fi dezactivata (adica & aposT 12 34) & apos dar apoi au castigat & apost indeplinesc 0 criterii rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe led ar trebui să clipească la unison cu LED-ul de urmărire al camerei If (mx = "0") And (my = "0") statLED = 0 Else statLED = 1 End IfEnd Sub & apos ****************************************** **** & apos * Funcții CMU Cam * & apos *************************************** ******* și afișează ledul dat la pornit, oprit, automat și aposparam led Numărul de led (0, 1) și aposparam val oprit, pornit, automat (0, 1, 2) Funcție CMUCAM_ledSet (ledNum As Byte, val As Byte) Întrucât Byte & aposVString nu funcționa și apostează chiar în noul compilator … & nu sunt sigur de vechiul & apostxBuff. VString = "L0 0" & apossetup șirul nostru de comandă manual txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s funcția tr $ e de rahat … așa că acum se întâmplă txBuff. Value = serial_toChar (ledNum) txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 txBuff. Value = serial_toChar (val) txBuff. Location = 4 txBuff. Value = 13 & apasă comanda serial_SendBufferEnd Sub & descarcă cadrul diferenței inițiale Sub CMUCAM_loadDiffFrame () & apasă manual șirul de comenzi txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff. Location = 2 txBuff. Valoare = 13 & apossend comanda serial_SendBufferEnd Sub & aposstarts calculul diferențelor de cadru & aposparam prag de treierat (0-9) Sub CMUCAM_startDiffCalc (trezit ca octet) Dim zece ca octet & apossetup șirul nostru de comandă manual txBuff. Location = 0 txBuff. Value = "F" txBuff. Location 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 zeci = treier / 10 txBuff. Value = serial_toChar (zeci) txBuff. Location = 4 zeci = treier / 10 txBuff. Value = serial_toChar (zece-zeci) txBuff. Location = 5 txBuff. Value = 1 3 & apossend comanda serial_SendBufferEnd Sub & apossets the output mask & aposparam packetType type of 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 sute As Byte Dim zece Byte & apossetup șirul nostru de comandă manual txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacket tip txBuff. Locație = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & masca pentru a aplica txBuff. Location = 5 sute = mască / 100 txBuff. Value = serial_toChar (sute) txBuff. Location = 6 zeci = (mask-sute) / 10 txBuff. Value = serial_toChar (zeci) txBuff. Location = 7 txBuff. Value = serial_toChar (mask-sute-zeci) & aposcarriage return txBuff. Location = 8 txBuff. Value = 13 & apossend comanda serial_SendBufferEnd Sub & apos * ******************************************** & apos * Subrutine generale de serie * & apo s ********************************************* și aposinializează seria portSub serial_init () & aposinitialize un buton pentru a porni și a opri portul serial (porniți pentru a rula, opriți pentru program) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Button) Link (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialize a event to buffer our data serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event. Operate_Review_Event. Operate = 0 & aposinitialize our serial serial serialPort. Baud = cv9600 & aposinitialize our serial status LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait aici până când portul nostru serial este activat În timp ce serialPort. Operate = cv finalizarea pachetului Sub serialRe ceive_Event_Code () & apos.received devine fals când bufferul de 4 biți este gol În timp ce (serialPort. Received = cvTrue) & aposcopiați octetul în bufferul nostru rxBuff. Value = serialPort. Value & aposcheck pentru sfârșitul pachetului If rxBuff. Value = 13 & aposprocess & Apăsați resetarea buffer-ului la începutul rxBuff. Location = 0 Altele rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub și pornește și oprește portul serial pentru programare Sub toggleSerial_Event_Code () Dacă serialPort. Operate = cvFalse serialPort. Operate = cp serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & aposconvertește un număr dintr-o singură cifră într-un personaj Funcție serial_toChar (înVal Ca Byte) Ca Byte Dim retVal Ca Byte Select 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 Select serial_toChar = retValEnd Function & apos sen ds datele conținute în txBuff & apos Notă: asigurați-vă că bufferul conține un return de transport (13) la sfârșit!. Value ooPIC. Delay = 1 & aposmight nu ar trebui să aibă nevoie de acest & aposee dacă a fost o întoarcere de trăsură If txBuff. Value = 13 & aposbreak out of our loop Return End If & aposgo to the next character txBuff. Location = txBuff. Location + 1 WendEnd Sub
Pasul 4: Deconectați conectorul de programare
Odată ce conectorul de programare este deconectat, atașați noul ansamblu de cablu așa cum se arată mai jos. Adaptorul realizat la pasul 1 ar trebui să permită conectarea directă a CMUCam la OOPIC
Pasul 5: Apăsați butonul pentru a inițializa comunicarea în serie
Butonul de pe IOLine 5 va porni comunicația serială între CMUCam și OOPIC. Deoarece portul serial este utilizat atât pentru programare, cât și pentru CMUCam, probabil ar trebui să existe un mod controlat de comutare între cele două.
Programul nu va rula până când nu este apăsat acest buton. Dacă apăsați butonul din nou, portul serial va rămâne inactiv, permițându-vă să-l programați. LED-ul de pe IOLine 6 afișează starea curentă a portului serial (aprins înseamnă activ, oprit înseamnă pregătit pentru programare).
Recomandat:
Rover-One: Oferirea unui creier unui camion RC / mașină: 11 pași
Rover-One: Oferirea unui creier unui camion RC / mașină: Acest instructabil este pe un PCB pe care l-am proiectat numit Rover-One. Rover-One este o soluție pe care am conceput-o pentru a lua o mașină / camion RC de jucărie și pentru a-i oferi un creier care include componente pentru a-i simți mediul. Rover-One este un PCB de 100 mm x 100 mm proiectat în EasyED
Selectarea unui motor de pas și a unui driver pentru un proiect de ecran de umbră automat Arduino: 12 pași (cu imagini)
Selectarea unui motor de pas și a unui driver pentru un proiect de ecran de umbră automat Arduino: În acest instructable, voi parcurge pașii pe care i-am făcut pentru a selecta un motor de pas și un driver pentru un prototip de proiect de ecran de umbră automat. Ecranele de umbră sunt modelele populare și ieftine Coolaroo cu manivelă și am vrut să înlocuiesc t
Realizarea unui adaptor Bluetooth Pt.2 (Realizarea unui difuzor compatibil): 16 pași
Realizarea unui adaptor Bluetooth Pt.2 (Realizarea unui difuzor compatibil): În acest instructiv, vă voi arăta cum să utilizați adaptorul meu Bluetooth pentru a face compatibil un difuzor vechi Bluetooth. * Dacă nu ați citit primul meu instructable la „Realizarea un adaptor Bluetooth " Vă sugerez să faceți acest lucru înainte de a continua.C
Efectuarea unui Spike Buster sau a unui cablu prelungitor Scratch: 5 pași
Realizarea unui Spike Buster sau Extension Cord Form Scratch: În acest post vă voi arăta cum să faceți un Spike Buster sau un Extension Cord de la zero. Mai întâi să vedem lista pieselor
Spargerea unui stereo auto și a unui computer: 5 pași
Hacking a Car Stereo and a Computer: This is as reply to my posting of case mod carig14 cere-mi să fac asta, așa că dă-i vina pe el. Nu iau niciun fel de responsabilitate pentru dvs., folosind unelte electrice pe computer! La fel cu protecția ochilor, auzul și altele. Dacă nu sunteți familiarizat cu un computer complet, construiți