Entretela CMUCam2 a un OOPIC (3 / 5 paso)

Paso 3: Conecte el cable de programación estándar y cargar el código

Conectar el cable de programación estándar y cargar el código. Aquí es un código de ejemplo para empezar.

Este código será seguir el movimiento usando los comandos de LF y DF. Se alternar IOLine 7 (conectado a un LED) y el seguimiento LED en la CMUCam del espejo.

 '******** serial port related objects ********Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 'change the 27 to make the buffer bigger/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'******** debug related objects ********Dim statLED As New oDIO1'**********************************************'* Generic Subroutines *'**********************************************Sub main 'initialize everything main_init 'set our output mask to only follow center of mass CMUCAM_setOutputMask(2, 3) 'load our initial difference frame CMUCAM_loadDiffFrame() 'start the difference calculation CMUCAM_startDiffCalc(10)End SubSub main_init 'initialize a status LED statLED.IOLine = 7 statLED.Direction = cvOutput 'initialize our serial port serial_init()End Sub'processes received packetsSub processPacket() Dim mx As Byte Dim my As Byte 'check for both Mx and My to be 0 'granted if they are not 0, the location will be off (ie 'T 12 34) 'but then they won't meet the 0 criteria rxBuff.Location = 2 mx = rxBuff.Value rxBuff.Location = 4 my = rxBuff.Value 'the led should blink in unison with the tracking LED on the camera If (mx = "0") And (my = "0") statLED = 0 Else statLED = 1 End IfEnd Sub'**********************************************'* CMU Cam Functions *'**********************************************'sets the given led to on, off, automatic'param ledNum number of led (0,1)'param val off, on, auto (0,1,2)Function CMUCAM_ledSet(ledNum As Byte, val As Byte) As Byte 'VString wasn't working right in the new compiler... 'not sure about the old one 'txBuff.VString = "L0 0" 'setup our command string manually txBuff.Location = 0 txBuff.Value = "L" txBuff.Location = 1 'the str$ function sucks...so now this is happening txBuff.Value = serial_toChar(ledNum) txBuff.Location = 2 txBuff.Value = " " txBuff.Location = 3 txBuff.Value = serial_toChar(val) txBuff.Location = 4 txBuff.Value = 13 'send the command serial_SendBufferEnd Sub'loads the initial difference frameSub CMUCAM_loadDiffFrame() 'setup our command string manually txBuff.Location = 0 txBuff.Value = "L" txBuff.Location = 1 txBuff.Value = "F" txBuff.Location = 2 txBuff.Value = 13 'send the command serial_SendBufferEnd Sub'starts calculating frame differences'param thresh threshold (0-9)Sub CMUCAM_startDiffCalc(thresh As Byte) Dim tens As Byte 'setup our command string manually txBuff.Location = 0 txBuff.Value = "F" txBuff.Location = 1 txBuff.Value = "D" txBuff.Location = 2 txBuff.Value = " " txBuff.Location = 3 tens = thresh/10 txBuff.Value = serial_toChar(tens) txBuff.Location = 4 tens = thresh/10 txBuff.Value = serial_toChar(thresh-tens) txBuff.Location = 5 txBuff.Value = 13 'send the command serial_SendBufferEnd Sub'sets the output mask'param packetType type of packet to mask (0,1,2,etc) see page 46'param mask mask value to apply (0-255)Sub CMUCAM_setOutputMask(packetType As Byte, mask As Byte) Dim hundreds As Byte Dim tens As Byte 'setup our command string manually txBuff.Location = 0 txBuff.Value = "O" txBuff.Location = 1 txBuff.Value = "M" txBuff.Location = 2 txBuff.Value = " " 'packet type txBuff.Location = 3 txBuff.Value = serial_toChar(packetType) txBuff.Location = 4 txBuff.Value = " " 'mask to apply txBuff.Location = 5 hundreds = mask/100 txBuff.Value = serial_toChar(hundreds) txBuff.Location = 6 tens = (mask-hundreds)/10 txBuff.Value = serial_toChar(tens) txBuff.Location = 7 txBuff.Value = serial_toChar(mask-hundreds-tens) 'carriage return txBuff.Location = 8 txBuff.Value = 13 'send the command serial_SendBufferEnd Sub'**********************************************'* General Serial Subroutines *'**********************************************'initializes the serial portSub serial_init() 'initialize a button to turn on and off the serial port (turn on to run, turn off to program) toggleSerial_Button.IOLine = 5 toggleSerial_Button.Direction = cvInput toggleSerial_Wire.Input.Link(toggleSerial_Button.Value) toggleSerial_Wire.Output.Link(toggleSerial_Event.Operate) toggleSerial_Wire.Operate = cvTrue 'initialize an event to buffer our data serialReceive_Wire.Input.Link(serialPort.Received) serialReceive_Wire.Output.Link(serialReceive_Event.Operate) serialReceive_Wire.Operate = cvTrue 'initialize our RX buffer rxBuff.Location = 0 'initialize our serial port serialPort.Baud = cv9600 'initialize our serial status LED serialActive_LED.IOLine = 6 serialActive_LED.Direction = cvOutput 'wait here until our serial port gets activated While serialPort.Operate = cvFalse WendEnd Sub'copies data into our receive buffer and checks for packet completionSub serialReceive_Event_Code() '.received becomes false when 4byte buffer is empty While(serialPort.Received = cvTrue) 'copy the byte to our buffer rxBuff.Value = serialPort.Value 'check for end of packet If rxBuff.Value = 13 'process packet processPacket() 'reset the buffer to the beginning rxBuff.Location = 0 Else rxBuff.Location = rxBuff.Location + 1 EndIf WendEnd Sub'turns on and off the serial port for programmingSub toggleSerial_Event_Code() If serialPort.Operate = cvFalse serialPort.Operate = cvTrue serialActive_LED = 1 Else serialPort.Operate = cvFalse serialActive_LED = 0 End IfEnd Sub'converts a single digit number to a characterFunction 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" 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' sends the data contained in txBuff' Note: make sure buffer contains a carriage return (13) at the end!!Sub serial_SendBuffer() 'iterate through, sending each byte, end on carriage return txBuff.Location = 0 While 1 serialPort.Value = txBuff.Value ooPIC.Delay = 1 'might not need this 'see if it was a carriage return If txBuff.Value = 13 'break out of our loop Return End If 'go to the next character txBuff.Location = txBuff.Location + 1 WendEnd Sub 

Artículos Relacionados

Entretela de 16 x 2 LCD con msp430 launchpad en modo 4 bits

Entretela de 16 x 2 LCD con msp430 launchpad en modo 4 bits

en este instructable escribo entretela de unos 16 x 2 LCD con microcontrolador msp430g2553. Si no sabes sobre el modo de 8 bits entonces recomendamos que lea mi instructable sobre interfaz de 8 bits. Ahora estoy suponiendo en este instructable que ya
Módulo GSM Sim900 entretela a arduino

Módulo GSM Sim900 entretela a arduino

Esta parte del instructivo explica interfaz de módulo GSM para arduino.Actualmente GSM se utiliza en todos los proyectos para la transmisión inalámbrica de datos o alertas y sistema de mensajería.Paso 1: Conexión SIM900 para ArduinoEsta parte del ins
Predicción meteorológica y entretela DHT11 Sensor con Mediatek Linkitone Junta

Predicción meteorológica y entretela DHT11 Sensor con Mediatek Linkitone Junta

en este Instructable, vas a ser capaz de a hacer el pronóstico del tiempo con Sensor de temperatura y humedad DHT11.Paso 1: requisitos Junta de Linkitone de MediatekDHT11 Sensor de humedad y temperaturaCables de puenteCable USB para el tableroPaso 2:
Entretela de 16 x 2 LCD con msp430 launchpad en modo 8 bits

Entretela de 16 x 2 LCD con msp430 launchpad en modo 8 bits

Hola! En este instructable te diré unos 16 x 2 LCD y su interfaz en el modo de 8 bits. Como todos sabéis que LCD soportes para pantalla de cristal líquido. Ahora antes solíamos utilizar displays de 7 segmentos para propósitos de la exhibición, pero a
Entretela de 16 X 2 LCD con microcontrolador PIC

Entretela de 16 X 2 LCD con microcontrolador PIC

aquí, usted aprenderá a interfaz 16 x 2 LCD al microcontrolador PIC18F4550 que es de la familia PIC18F. PIC18F4550 es un microcontrolador de 8 bits y utiliza la arquitectura RISC. PIC18F4550 tiene 40 pines en PDIP (en paquete de línea dual) y 44 pin
ENTRETELA de una matriz de puntos de 8 X 8 LED DISPLAY con un AT89C51 microcontrolador

ENTRETELA de una matriz de puntos de 8 X 8 LED DISPLAY con un AT89C51 microcontrolador

Interfaces en un 8 x 8 matriz de puntos puede ser divertido y es fácil de jugar, así que vamos a entrar directamente en ella!Paso 1: Lo que usted necesitará:AT89C51 MICRCONTROLLERDOT MATRIX 8 X 8UNA PLACA DE DESARROLLO OMÓDULO DE MATRIZ DE PUNTOPaso
Entretela TSOP1740 con Mediatek LinkIt uno

Entretela TSOP1740 con Mediatek LinkIt uno

En Instructables te serán capaces de interfaz TSOP 1740 con Mediatek LinkIt un tablero.TSOP 1740 es un fotosensor que detecta la frecuencia de 38Khz que se emite por controles remotos de TV, equipo de música, etc..Paso 1: requisitosUn tablero de Medi
Entretela de tu arduino con un programa de C#

Entretela de tu arduino con un programa de C#

¿Siempre ha querido hacer su propia aplicación (*.exe) para trabajar con el arduino (u otro dispositivo de comunicación serial)?Este instructable requiere:-Visual Studio 2008 o posterior * (estoy usando RC 2010, algunas opciones pueden diferir entre
SIM900A la entretela con Arduino UNO y funcionamiento en simples comandos

SIM900A la entretela con Arduino UNO y funcionamiento en simples comandos

Hola chicos,Tengo mi nuevo SIM900A módulo de SIMCom. Problemas que estaba enfrentando al interfaz con Arduino Mega.Entonces traté de interfaz con arduino UNO. Así que en este instructable voy a mostrarle cómo me superó problemas y comenzó a jugar con
GPS Ultimate Breakout Junta de Adafruit y LinkIt una entretela

GPS Ultimate Breakout Junta de Adafruit y LinkIt una entretela

Hoy, nos vamos mirando cómo utilizar la Junta de desarrollo LinkIt una interfaz con otros módulos de algunos. El módulo que va a ver en este tutorial es el último GPS Breakout Junta de Adafruit. (http://www.adafruit.com/products/746)Estas placas son
Entretela ADXL335 con ARDUINO

Entretela ADXL335 con ARDUINO

como la hoja de datos dice, ADXL335 es una potencia pequeña, delgada, baja, salidas completa accelero-medidor de 3 ejes con voltaje de la señal condicionada. La aceleración de las medidas de producto con una gama a gran escala mínima de ± 3 g. Puede
Sensor de temperatura de Arduino de entretela (LM35). LA forma más fácil de

Sensor de temperatura de Arduino de entretela (LM35). LA forma más fácil de

Un sensor de temperatura simple usando un LM35 Sensor de temperatura de precisión y Arduino. El circuito le enviará información serial sobre la temperatura que se puede utilizar en su computadora.Paso 1: materialesSe necesita:Arduino Uno (usé la Uno
Rey (Star Wars: la fuerza despierta) cómic día 2016 libre

Rey (Star Wars: la fuerza despierta) cómic día 2016 libre

Saludos una vez más Instructable keteers!Como por siempre, soy privados de sueño y encima con cafeína pues me siento abajo para escribir otra aventura de traje.Al principio era una tienda de cómicSé que anteriormente he mencionado que tengo un amigo
CNC de desecho

CNC de desecho

"IGNORAR ALGUNAS FALTAS DE ORTOGRAFÍA SI VES ALGUNO"PARA MÁS DETALLES EN CONTACTO CONMIGOAQUÍZAIN.Cualquiera puede crear un CNC fácil y la posibilidad de cambiar a una máquina diferente son enormes, con esto quiero decir que puede cambiar la her