Paso 7: De codificación para Final Sketch de Arduino (movimiento de balanceo/Tapping)
Ahora que usted comprende cómo leer valores crudos de la MPU-6050, es tiempo para seleccionar los valores para el bosquejo final de Arduino. A través de ensayo y error, he llegado a la conclusión de que la mejor manera de pensar acerca de la codificación para los diferentes comandos del TV es dividiendo nuestras categorías propuestas dos: Oscilobatientes/Tapping y torcer. En este paso, voy a entrar en la selección de valores y la codificación para los movimientos que hace pivotar/Tapping. Movimientos de torsión se discutirá en el siguiente paso.
La primera cosa que usted tendrá que descargar el bosquejo incluido al final de este paso. El bosquejo incluye elementos del bosquejo de JohnChi (incluido en el paso anterior), bosquejo de IRsend Demo de Chris Young, junto con algunos de mi propia codificación.
Por ejemplo, voy a trabajar con el comando 'Bajar volumen'. Para 'Bajar volumen', he decidido que quiero utilizar pequeños golpecitos hacia abajo para ejecutar este comando. Con el bosquejo de MPU6050RawValues.ino cargado en el Arduino, tomé nota de que acelerómetro valores estaban cambiando cuando un movimiento hacia abajo tocando con mi protoboard, Arduino y MPU-6050. Observé que estaban cambiando valores de acelerómetro en los ejes Y y Z. Utilizando 'superior e inferior quedeclaraciones', entonces tomó nota de que valores crudos MPU-6050 podrían incluirse en la propuesta. Para valores de acelerómetro en el eje Y (o da), los valores crudos eran generalmente más de 7000 al ángulo de la placa ligeramente hacia abajo. Los valores del acelerómetro en el eje Z (o AcZ) eran generalmente menos de 10000 cuando se utiliza el mismo movimiento. Utilizando '>' y '<' símbolos, comencé a escribir mi código como este:
Da > 7000 y AcZ < 10000 |
Para incluir estos valores en el bosquejo de MagicWandTVRemote.ino , tendremos que sustituir la palabra 'y' con '& &'. También tendremos que incluir estos valores dentro de un 'si declaración' que requiere la adición de paréntesis y un soporte final. En mi caso, el código tendría este aspecto:
Si (da > 7000 & & AcZ < 10000) {} |
Usted puede agregar muchos o pocos "mayor y menos declaraciones" como desea siempre y cuando incluyas ' & &' entre cada uno. No siente que usted necesita incluir solamente dos sólo porque lo hice.
Lo siguiente que debemos hacer es definir cuantas veces nuestras necesidades de código a repetir. Debido a movimientos de balanceo/tapping requiere nuestro código para empezar a enviar mientras el Magic Wand TV remoto no apunta hacia el televisor, tenemos que asegúrese de que todavía se envía la señal por el tiempo que apunte el control remoto. Es importante jugar un poco para encontrar el derecho de valor porque si no repite la señal lo suficiente, el LED aún no estar transmitiendo la señal cuando apunte el control remoto el TV. Por otro lado, si repite la señal muchas veces, corres el riesgo del código ser enviado demasiadas veces causando el código a ser enviado a la televisión varias veces. Esto es donde su opcional LED y el resistor pueden ser de utilidad. Si cambiar el LED infrarrojo y la resistencia para un LED visible y resistencia, usted será capaz de mover su tablero de la forma que desea mover su varita de magia TV remoto y ver si el LED parpadea el número correcto de los tiempos de práctica. Es mucho más fácil cambiar de LED y tiene que mantener una cámara hasta el LED infrarrojo para ver lo que está haciendo.
El código para el uso de una repetición es como sigue:
para (int i = 0; i < = 5; i ++) {} |
El número que necesita cambiar basado en cuántas veces que desea repetir su comando viene después de la '< ='. En mi caso, quise repetir el comando 5 veces. Desde pequeños golpecitos hacia abajo me permitieron regresar mi protoboard a un punto donde estaba apuntando a la TV bastante rápido, no necesito repetir el comando varias veces. En cambio para el comando 'TV-Power', me decidí a hacer un swing más grande hacia abajo. Me tomó un poco más a punto el control remoto de la TV así que tuve que repetir el comando 15 veces.
Por último, debemos incluir el código correcto que hemos encontrado en el paso remoto de Decode televisor. Determina este código:
NEC, 0X20DFC03F, 32 |
Este código debe ser insertado entre los paréntesis en la declaración 'My_Sender.send ();' por lo que en mi caso, el código tendría este aspecto:
My_Sender.Send (NEC, 0x20DFC03F, 32); |
Por último, he añadido un breve retraso que se debe leer así:
Delay(100); |
Todos juntos, código debería tener este aspecto:
Si (da > 7000 & & AcZ < 10000) {} para (int i = 0; i < = 5; i ++) {} My_Sender.Send (NEC, 0x20DFC03F, 32); }} |
Hagas lo que hagas no te olvides de los dos soportes en el final! Un soporte termina su ' si declaración ', y otro termina su declaración' repetición'. El código no funcionará si olvidas estas escuadras.
Para integrar los valores que encontraste en el bosquejo de MagicWandTVRemote.ino , simplemente Desplácese hacia abajo hasta la segunda mitad del esbozo y sustituir los valores que he encontrado con su propio. Asegúrese de que prueba su código con todos los componentes conectados a la placa para asegurarse de que realmente puede controlar la TV.