Paso 6: Punto Muncher: código de la brújula
No. En su lugar, quiero centrarme en el ajuste de la brújula de un valor correspondiente al verdadero norte, a lo que queremos pensar es hacia el norte, en nuestro caso, lo que es la parte superior de nuestra pantalla. Este proceso tiene una pequeña participación, puesto que los números se deben establecer manualmente y con guesstimation un poco.
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | if (iComp >=30){ int adjHeading =0; //The "floor" part makes the float into an integer, rounds it up. headingDegrees = floor(headingDegrees); if (headingDegrees >=280){ adjHeading = map(headingDegrees, 280, 360, 0, 79); } elseif (headingDegrees <=279) { adjHeading = map(headingDegrees, 0, 279, 80, 360); } Serial.println(adjHeading); iComp=0; } iComp++; delay(10); //For serial stability. |
Por lo tanto, tengo mi módulo brújula acostado como sea posible y después la atornillan a mi robot. Esto ayuda a asegurar el conseguir un completo 360 º y te evitará tener que volver a calibrar lo que nos gustaría llamar al norte cada vez que el módulo de brújula obtiene golpeó fuera de lugar.
106-114: Estos módulos y la biblioteca Arduino están diseñados para tener 0 º ser del norte, pero queremos establecer nuestro propio norte, norte de videojuegos. Que es exactamente lo que las líneas 106-114. Encontré es de 80 º qué valor mi robot estaba leyendo cuando él se dirigía hacia la parte superior de la pantalla. Tuve que encontrar una manera de ajustar esto para darme la lectura 0. Terminé con este sencillo código para hacer girar la brújula.
Tuve que dividir los ajustes en dos secciones de la matemáticas a permanecer simple. Las líneas 109-111 mango mapeo 0-79 º a 0 º 280, haciendo el robot parece 0-79 º 280-0 º. Líneas 112-114 lo mismo para 80-360 º, conversión a 0-279º.
Honestamente, he conseguido algunos espacial-retraso, así que tengo un pensamiento difícil a través de esto, sólo sé que funciona. Por lo tanto, si tienes problemas que te respondo emails y Skypes y podemos colaborar a través de él. Y, si desea presentar una explicación mejor, post-it y asegúrese de darle crédito.
Sabe, mi solución de redneck era cambiar la orientación de la cámara. Pfft. Demasiado fácil.
Avanzando,
116: Envía en dirección del robot al PC.
117: iComp es una variable que nos permite decidir cuándo empezar a enviar datos a la PC. No queremos enviar datos a la PC antes de que está listo o antes de que el robot es calentado, que se trata con lecturas pobres.
118: Se trata de un retraso que hace que no estamos atascarse de la línea serie, puesto que cada vez que llamamos a Serial.println("whatever") el PC y el robot tienen que tomar cierta potencia de procesamiento para ocuparse de ella. En definitiva, es para asegurarse de que el robot no habla oído del equipo apagado.