Codificadores rotativos grandes dispositivos de entrada para proyectos de electrónica - ojala este Instructable inspirará y ayudarle a utilizar en su próximo proyecto.
¿Por qué escribir código de codificador rotatorio?
Quería usar un codificador rotatorio de bajo costo como un mecanismo de entrada para uno de mis próximos proyectos inicialmente fue desconcertado por las Opciones de código disponibles para tomar lecturas del codificador rotatorio y determinar cuántos ciclos el codificador había hace clic en pasado y en qué dirección o "topes". Creo que mi bosquejo principal tendrá que utilizar la mayor parte de la memoria de mi Arduino por lo que estoy evitando las varias bibliotecas de codificador disponible, que parece ser difícil de hacer cuando probé un par de ellos. También aparecen utilizar mucho más el presupuesto de código que los enfoques de código basado en el bosquejo discutidos desde aquí.
Si desea omitir el pensamiento detrás de mi enfoque y entrar directamente en el Instructable, dude pase al paso 1.
Otros enfoques
Varios de los principales bosquejo-basado (es decir, que no utilizan una biblioteca) enfoques se discuten en blog de rt post donde escriben código de codificador rotatorio que hace utilizables como entradas de Arduino los codificadores más baratos. También tienen un buen ejemplo de señal lógica que produce el codificador. RT encontró que un sistema de interrupción de timer trabaja mejor para ellos pero me preocupa que la frecuencia de sondeo detraería de la velocidad de actualización de pantalla en el bucle principal de mi bosquejo de proyecto. Dado que el codificador rotatorio se trasladará para una pequeña proporción del tiempo que quiero la pantalla de actualizando, esto parece un partido pobre de mi aplicación.
Decidí empezar con código de Steve Spence, que estaba bien en su propia pero parece realmente reducir la velocidad incorporando el resto de mi código de bosquejo (que implica escribir actualizaciones de pantalla en una pequeña pantalla TFT). Al principio me preguntaba si podría ser debido a que el bucle principal contiene una declaración de debounce.
Luego leí el artículo de codificador rotatorio de Oleg en una versión de la rutina de servicio de interrupción de su anterior post, también pensé que podría ser una buena idea usar manipulación puerto directo para leer ambos pasadores al mismo tiempo y tan pronto como se activa la interrupción. Su código puede utilizarse en cualquier perno de la entrada si se reescribe el código de manipulación de puerto. En cambio, decidí usar solo las interrupciones de hardware en digitales pins 2 y 3, así que podemos fijar interrupciones para disparar solamente sobre un flanco ascendente de la tensión del perno, más que en pin de cambio de voltaje, que incluye caídas los bordes. Esto reduce el número de veces que el ISR se llama distracción desde el bucle principal.
Código de Oleg utiliza una tabla de búsqueda para reducir el tamaño del código compilado para un tamaño realmente pequeño pero no pude obtener resultados confiables que cogería muy lenta rotación y rotación razonablemente rápido. Tenga en cuenta que el hardware contra rebotes (véase paso 2) pueden ayudar mucho con la confiabilidad de las lecturas pero después de una solución de software para simplificar la compilación hardware y ser tan portable a otras aplicaciones de hardware posible.
Esto concluye la introducción de mi reto y consideraciones. En el paso 2 a echar un vistazo en el hardware codificador, terminología y algunas consideraciones prácticas para integrar un codificador rotatorio en su proyecto.