Paso 3: Desarrollo de Software
Vamos a empezar con la parte infrarroja de cosas e ignorar el servo(s) por ahora. Abrir BV_COM y comunicarse con el BV500 (IC).
Ahora la carga este archivo:
http://www.byvac.com/mBlib/FLB/Library/IRD/IR_DecodeMX1.Bas
Simplemente copia el texto y lo coloca en el cuadro de diálogo de transferencia de texto, luego oprima enviar. Esto puede necesitar un par de intentos hasta que el archivo se almacena en caché, todo dependerá de la conexión a internet. Después del envío debería decir algo como líneas de cargan de 120.
El archivo es muy corto pero carga el archivo de biblioteca de IR por lo tanto el número de líneas. Obtener un control remoto y configurarlo a un televisor Philips (Estoy suponiendo que tienes uno de los que se puede programar usando varios códigos). La razón para esto es el IR descifrar sólo funciona con código RC5 que es lo que uso de Philips en sus aparatos.
Tipo van, apunte el control remoto para la photodoide de IR y veremos algunos resultados como en la imagen. No puede producir los mismos resultados exactos pero eso no importa. Los resultados que obtuve fueron:
-volumen 3511
-volumen 3 11
+ volumen 3510
Los 3 primeros es los bits de start y siempre están ahí, el código de la clave es los dos últimos dígitos, en este caso 11 para menos y 10 Plus. La palanca es el número que cambia de 5 a D (los números son en hex). Los valores reales son poco importantes, como es constante. Si usted está recibiendo algo que es inmutable o inconstante entonces el control remoto no está enviando RC5 así elegir diferentes TV o VCR o lo que sea.
Un rápido vistazo en el código.
Esto se muestra como una imagen para que se mantengan los números de línea y el colorante del sintaxis.
Línea 5: Este es el archivo que hace la mayor parte de la obra, si quieres ver el código real es en la dirección URL se muestra en la imagen. El #include lo carga en el chip antes que el resto del código.
Línea 12: Esta es la función única que consiste en el código. Para ejecutar el tipo de función en su nombre que hicimos al escribir 'go' arriba.
Línea 12 a la 16: Estas son las funciones en el código que está en el archivo de include e inicializar los puertos para su uso y establecer un par de interrupciones para que el IC puede responder en cuanto recibe cualquier infra rojo. Estas líneas están obligadas a obtener la IR va.
Línea 17: Sólo el 'listo' en el terminal para que lo sabemos todo está bien
Las líneas 18 y 24: Se trata de un bucle continuo que puede salir cuando una tecla es recibida en la terminal, es decir cuando usted presiona una tecla en el teclado. ¿Funciona porque el terminal está conectado a la UART2 y comkey? (2) devolverá el número de llaves en el búfer de la UART2 (UART es un puerto serie). Como no hay llaves en el búfer hasta que usted presione una tecla en el teclado quedará en el lazo.
Línea 19 a la 22: IRDstate (caso importante) es una variable que se establecerá en 1 cuando se ha producido un valor recibido por el ir El valor es en currentWord, línea 21 simplemente imprime hacia fuera como un número hexadecimal. El valor de currentWord sólo imprimirá hacia fuera cuando hay un valor válido. Es importante que la función restablece IRDstate a 0 después de leer la palabra.
Las líneas 26 y 27: SIEMPRE DEJO UN PAR DE LÍNEAS EN BLANCO AL FINAL DE UN ARCHIVO
Servo
Está tan bien ahora que tenemos un trabajo infra-rojo es hora de mirar el lado del servo de las cosas. Copiar y pegar esta URL
http://www.byvac.com/mBlib/FLB/tutorial/PIC32MX1_Family/46_IRServo/IRServo_b.Bas
en el texto de diálogo de transferencia como antes y pulsa enviar. Puede que necesite restablecer la IC como se está ejecutando interrupciones y la interfaz de serie no tiene ningún apretón de manos.
Tipo svo_init
El servo puede surgir a la vida después de este comando. Ahora escriba:
= 200 (Esto es en O para Oscar no cero)
y el servo debe moverse. Puede descubrir los límites de su servo y encontrar los valores máximo y mínimo, los tienen rango de 121 a 384.
El servo está utilizando el módulo de salida comparar incorporado en el IC. En el modo en produce una señal modulada de ancho de pulso y el valor de registro que oc2rs controla el ancho de ese pulso tan todos que haces al cambiar los valores realmente es cambiar el ancho del pulso. El nivel de detalle es bastante bueno en unos pocos microsegundos y así es cómo somos capaces de obtener una resolución de más de 200 dentro de la gama del servo.
Es probablemente más allá del alcance de este texto entrar en los detalles de cómo funciona el código ya que es sobre todo creación de los registros de la IC, el hardware del IC hace el trabajo. Si te interesa tuve 3 va en esto el (los detalles están aquí) y mi primer intento fue emular PWM en el software.