Taula de continguts:
- Pas 1: fabricació del cable de l'adaptador
- Pas 2: canvieu la velocitat de transmissió a la CMUCam
- Pas 3: connecteu el cable de programació estàndard i el codi de càrrega
- Pas 4: desconnecteu el connector de programació
- Pas 5: premeu el botó per inicialitzar la comunicació en sèrie
Vídeo: Interfície d'un CMUCam2 amb un OOPIC: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:16
Segueix-ne més per l'autor:
Descripció general de la interfície entre CMUCam2 i OOPIC.
Pas 1: fabricació del cable de l'adaptador
1. Aneu al radioshack i en compreu 2: Connector de soldadura DB-9 mascle2. soldeu el pin 5 del connector A fins el pin 5 del connector B (si mireu detingudament el connector, estan marcats) 3. soldeu el pin 2 del connector A fins el pin 3 del connector B (si mireu detingudament el connector, estan marcats) 4. pin de soldadura 3 del connector A fins al pin 2 del connector B (si fixeu-vos atentament en el connector, estan marcats)
Pas 2: canvieu la velocitat de transmissió a la CMUCam
Canvieu la velocitat en bauds de la CMUCamera a 9600 baud (afegiu un pont a la posició 0).
Pas 3: connecteu el cable de programació estàndard i el codi de càrrega
Connecteu el cable de programació estàndard i pengeu el vostre codi. Aquí teniu un exemple de codi per començar. Aquest codi farà un seguiment del moviment mitjançant les ordres LF i FD. Commutarà IOLine 7 (connectat a un LED) i reflectirà el LED d’estat de seguiment al CMUCam.
& apos ******** objectes relacionats amb el port sèrie ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & aposchange the 27 per fer el buffer més gran / petitDim rxBuff As New oBuffer10Dim serialActive_LED As New oDIO1Dim toggleSerial_Button As Nou oDIO1Dim toggleSerial_Event com a nou oEventDim toggleSerial_Wire com a nou oWireDim serialReceive_Event com a nou oEventDim serialReceive_Wire com a nou oWire i apos ******** objectes relacionats amb la depuració ******** Dim statLED Com a nou oDIO1 i apos ***** ************************************** & apos * Subrutines genèriques * i apos ****** **************************************** Sub main & aposinicialitzar tot main_init & aposset la nostra màscara de sortida a només segueix el centre de massa CMUCAM_setOutputMask (2, 3) i descarrega el nostre marc de diferència inicial CMUCAM_loadDiffFrame () & inicia el càlcul de la diferència CMUCAM_startDiffCalc (10) End SubSub main_init & aposinitialize a LED status statLED. IOLine = 7 statLED. Direction = serial) Fi Su b & aposprocessos rebuts paquets SubprocésPacket () Dim mx As Byte Dim my As Byte & aposcheck per a Mx i My per ser 0 & aposgranted si no són 0, la ubicació estarà desactivada (és a dir, & aposT 12 34) & apos, però llavors guanyaran i apostaran als 0 criteris rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe led haurien de parpellejar a l'uníson amb el LED de seguiment de la càmera If (mx = "0") I (my = "0") statLED = 0 Else statLED = 1 End IfEnd Sub & apos ****************************************** **** & apos * Funcions CMU Cam * & apos *************************************** ******* & apossets el led donat a on, off, automatic & aposparam led Nombre de leds (0, 1) & aposparam val off, on, auto (0, 1, 2) Funció CMUCAM_ledSet (ledNum As Byte, val As Byte) Com Byte i aposVString no funcionaven i apostaven directament al nou compilador … & No estic segur de l'antic & apostxBuff. VString = "L0 0" & apossetup la nostra cadena d'ordres manualment txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & aposthe s La funció tr $ és una merda … així que ara està passant 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 l'ordre serial_SendBufferEnd Sub & descarrega la diferència inicial frameSub CMUCAM_loadDiffFrame () & apossetup la nostra cadena d'ordres manualment txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff. Location = 2 txBuff. Valor = 13 & apossend l'ordre serial_SendBufferEnd Sub & aposstarts calculant les diferències de fotogrames i el llindar aposparam (0-9) Sub CMUCAM_startDiffCalc (thrh As Byte) Dim tens As Byte & apossetup la nostra cadena d'ordres manualment txBuff. Location = 0 txBuff. Value = "F" txBuff. Location 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 desenes = batre / 10 txBuff. Value = serial_toChar (desenes) txBuff. Location = 4 desenes = batre / 10 txBuff. Value = serial_toChar (thres-tens) txBuff. Location = 5 txBuff. Value = 1 3 & Apossend the command serial_SendBufferEnd Sub & Apossets the output mask & aposparam packetType type of paquet 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 centenars As Byte Dim tens As Byte & apossetup our string command manually txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacket type txBuff. Ubicació = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & mascareta per aplicar txBuff. Location = 5 centenars = màscara / 100 txBuff. Value = serial_toChar (centenars) txBuff. Location = 6 desenes = (mask-centenars) / 10 txBuff. Value = serial_toChar (desenes) txBuff. Location = 7 txBuff. Value = serial_toChar (màscara-centenars) & aposcarriage retorn txBuff. Location = 8 txBuff. Value = 13 & apossend l'ordre serial_SendBufferEnd Sub & apos * ************************************************** & apos * Subrutines generals de sèrie * & apo s ********************************************** i aposinicialitza el serial portSub serial_init () & aposinicialitza un botó per activar i desactivar el port sèrie (activar per executar, apagar per programar) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Button. Enllaç (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. = 0 & aposinitialize our serial serial serialPort. Baud = cv9600 & aposinitialize our serial serial LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & espera aquí fins que el nostre port sèrie s'activi Mentre serialPort. Operate = cv finalització del paquet Sub serialRe ceive_Event_Code () & apos.received es converteix en fals quan el buffer de 4 bytes està buit Mentre (serialPort. Received = cvTrue) & aposcopieu el byte al nostre buffer rxBuff. Value = serialPort. Value & aposcheck per al final del paquet If rxBuff. Value = 13 & aposprocess & restableix la memòria intermèdia al començament rxBuff. Location = 0 Altres rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub i apaga i activa el port sèrie per a la programació Subhasta toggleSerial_Event_Code () Si serialPort. Operate = cvFalse serialPort. Operate = cvFerial serialPort serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & aposconverteix un número de sol dígit en un personatgeFunció serial_toChar (inVal As Byte) As Byte Dim retVal As Byte Select Case inVal Case 0 retVal = "0" Case 1 retVal = "1" Case 2 retVal = "2" Cas 3 retVal = "3" Cas 4 retVal = "4" Cas 5 retVal = "5" Cas 6 retVal = "6" Cas 7 retVal = "7" Cas 8 retVal = "8" Cas 9 retVal = "9" Final Selecciona serial_toChar = retValEnd Function & apos sen ds les dades contingudes a txBuff i apos Nota: assegureu-vos que la memòria intermèdia conté un retorn de carro (13) al final !! Sub serial_SendBuffer () & apositerate through, send each byte, end on carriage return txBuff. Location = 0 While 1 serialPort. Value = txBuff. Valor ooPIC. Delay = 1 & aposmight no necessita aquest & apossee si es tracta d'un retorn de carro Si txBuff. Value = 13 & aposbreak fora del nostre bucle Retorn Final Si & aposgo al següent caràcter txBuff. Location = txBuff. Location + 1 WendEnd Sub
Pas 4: desconnecteu el connector de programació
Un cop desconnectat el connector de programació, connecteu el nou conjunt de cables com es mostra a continuació. L'adaptador fabricat al pas 1 hauria de permetre connectar directament la CMUCam a l'OOPIC
Pas 5: premeu el botó per inicialitzar la comunicació en sèrie
El botó d'IOLine 5 iniciarà la comunicació en sèrie entre el CMUCam i l'OOPIC. Atès que el port sèrie s'utilitza tant per a la programació com per a la CMUCam, probablement hi hauria d'haver una manera controlada de commutar entre els dos.
El programa no s'executarà fins que no es prem aquest botó. Si torneu a prémer el botó, el port sèrie quedarà inactiu i us permetrà programar-lo. El LED de l’IOLine 6 mostra l’estat actual del port sèrie (encès significa actiu, apagat significa llest per a la programació).
Recomanat:
Convertidor basat en Esp8266 amb una interfície d’usuari Blynk increïble amb regulador de comentaris: 6 passos
Convertidor basat en Esp8266 amb una interfície d’usuari Blynk increïble amb regulador de retroalimentació: en aquest projecte us mostraré una forma comuna i eficient de com augmentar els voltatges de CC. Us mostraré el fàcil que pot ser construir un convertidor d’impuls amb l’ajut d’un Nodemcu. Construïm-ho. També inclou un voltímetre en pantalla i un feedback
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32: 8 passos
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32s: en aquest tutorial, aprendreu tot sobre com iniciar, connectar-se i aconseguir que el dispositiu I2C (acceleròmetre) funcioni amb el controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Tutorial per a la interfície Sensor de brúixola HMC5883L amb Arduino: 10 passos (amb imatges)
Tutorial per a la interfície Sensor de brúixola HMC5883L amb Arduino: Descripció HMC5883L és una brúixola digital de 3 eixos que s’utilitza per a dos propòsits generals: per mesurar la magnetització d’un material magnètic com un ferromagnet o per mesurar la força i, en alguns casos, la direcció del camp magnètic en un punt de s
Dot Matrix 32x8 Max7219 interfície amb Ardiuno: 5 passos (amb imatges)
Dot Matrix 32x8 Max7219 Interfacing with Ardiuno: Hola a tots, basat en Dot Matrix o Max7219 no són nous el 2020, fins fa poc, el procés de configuració estava ben documentat, es descarregaria la biblioteca de maquinari de MajicDesigns. i va canviar poques línies als fitxers de capçalera i FC16 va funcionar com un encant. Això va ser fins
Interfície de teclat amb Arduino. [Mètode únic]: 7 passos (amb imatges)
Interfície de teclat amb Arduino. [Mètode únic]: Hola i benvingut al meu primer instructable! :) En aquest instructable m'agradaria compartir una biblioteca fantàstica per a la interfície del teclat amb arduino: "Biblioteca de contrasenyes", inclosa la "Biblioteca del teclat". Aquesta biblioteca inclou les millors funcions que oferim