Paso 12: Programación con los codificadores
Bibliotecas de codificador
La forma más fácil de usar codificadores en tu programa es utilizar una biblioteca de codificador. He utilizado el biblioteca de codificador PJRC.
Utilizar en su dibujo, copia la carpeta del codificador en la carpeta de 'bibliotecas' de Arduino, reinicie el IDE de Arduino e incluyen el archivo de encabezado en su bosquejo, añadiendo esta línea en la parte superior de su archivo:
Más sobre las bibliotecas en la Arduino sitio.
Entonces simplemente crear a un miembro de la clase de codificador:
Nombre del codificador (pin_1, pin_2); donde nombre es el nombre que desea darle al codificador, y pin_1 y pin_2 son los pines donde se conecta el codificador.
Eso es todo, sin problemas con interrupciones, la biblioteca encarga de todo para usted.
Cuando se necesita el valor del encoder, simplemente use:
Name.Read(); donde nombre es el nombre se le dio anteriormente. La función read devuelve un largo.
Si lo desea, puede tomar un vistazo a los ejemplos que vienen con la biblioteca. (Archivo > ejemplos > codificador)
Mensajes relativos
La función read devuelve un valor absoluto para la posición (que se restablece cada vez Desconecte la corriente, sin embargo, a diferencia de un potenciómetro). Esto es perfectamente bien para la mayoría de las aplicaciones, pero MIDI es diferente: utiliza números relativos de codificador rotatorio. Lo que esto significa es que el controlador envía la diferencia entre el nuevo y el viejo valor del codificador, así que si por ejemplo el último valor de la función leer era 96, y gire el codificador hacia la derecha para el 1 paso, el nuevo valor será 97 obviamente, pero el Arduino no debería enviar a 97. En cambio, envía la diferencia: 97-96 = + 1. Si usted gira hacia la izquierda 1 paso, sería -1. Simple.
¿Qué pasos? Si se giran el codificador rápidamente para, digamos 4 pasos, hay 2 cosas que le pueden pasar:, Arduino envía su MIDI lo suficientemente rápido para leer el codificador al menos 4 veces mientras que usted gire. Esto significa que enviar 4 mensajes con '+ 1'. Dos, si no es lo suficientemente rápido como para refrescar la función de leer 4 veces, descubrirá que la función de leer ha cambiado más de 1 paso desde la última vez. Por ejemplo, valor último de la función leer 97, gire a 4 pasos y volver a leer. Esto le dará 101: 101 - 97 = 4. No hay problema, el Arduino solo enviará 1 mensaje con '+ 4'.
Puede haber algunos problemas de compatibilidad, debido a que realmente no puede enviar números negativos sobre MIDI. Hay tres formas de enviar la señal de un número.
- Añadir 64. Este es probablemente el más simple. Esto básicamente asigna 0 a 64 (que es 128/2). Por ejemplo, si quiero enviar -1 Añadir 64 = 63 y lo envíe. Si quiero enviar + 1, también añadir 64 = 65. Si envío a sólo 64, el equipo no hará nada, porque sabe que es un desplazamiento de 0. (En el lado de la computadora, sólo restan 64, y se puede utilizar el resultado como si nada ha pasado).
- Bit de signo. En equipos, sobre todo se guardan los valores firmados con un bit de signo. El bit de signo es el bit más significativo. Cuando es 0, el definido por los otros bits es positivo, cuando es 1, el número es negativo. En un mensaje MIDI, esto es de tipo bit 6 (el bit 7, ya que es basado en 0). Por ejemplo: + 4 sería 0b00000100 y -4 sería 0b01000100.
- Una tercera manera es definir + 1 como 0 y -1 127. Podemos seguir esto: + 2 = 1 y -2 = 126, etc. hasta + 63 = 63 y = 65 -63.
Por lo tanto, si tu codificador hace cosas extrañas en su software en concreto, como saltando muy lejos si sólo gira un paso, puede cambiar esto en su programa.
Sin embargo, tal vez usted realmente no necesita escribir su propio programa de...