Paso 3: Analizar el inicio del Sketch
Ahora les explico usted, paso a paso, todas las líneas del boceto.
Las primeras líneas #include se utilizan para importar el código específico de avr para mango, en orden:
- Biblioteca de interrupción para la interrupción del temporizador 1 y botones. Las interrupciones de los dos botones se utilizan para despertar el microcontrolador después de que va a dormir para reducir el consumo de la energía.
- Biblioteca PROGMEM se usa para poner la variable constante a la memoria FLASH en lugar de la memoria RAM. Se utiliza porque todas las variables utilizadas en el bosquejo se almacenan en la memoria RAM del microcontrolador y, por lo general, el RAM es menor que la memoria FLASH.
Por lo tanto, cuando se utiliza un gran número de variables constantes - como la matriz de números - tengo que poner en el FLASH para conservar la memoria RAM.
Quiero informarles que el IDE de Arduino, generalmente, no se muestra si la memoria RAM del microcontrolador es completa. Si ha rellenado la RAM toda, simplemente el esbozo se bloqueará en algún momento y se loco porque no averiguar por qué sucede.
Por lo tanto, si utilizas grandes variables constante, como matriz multidimensional, utilizan PROGMEM. - Dormir biblioteca se usa para poner el microcontrolador en un profundo estado donde consume energía muy baja.
- Biblioteca de la energía se utiliza para manejar el poder de los periféricos del microcontrolador - como el ADC, temporizadores, etc.. Cuando no necesitamos esos periféricos nos cerradas abajo de ellos.
A continuación tenemos el valor constante de la matriz, los pernos y los botones:
En orden:
- MATRIX_ROW es el número de las filasde LEDs. En este caso 5 LEDspor línea.
- MATRIX_COL es el número de los LEDs cols. En este caso 6 LED por columna.
- PIN_NUMBER es el número de pines utilizados para la matriz de Charlieplexing de LEDs de 6 x 5.
- Button_A es el número de pin del botón izquierdo. Este botón disparador la interrupción PCINT6
Botón _B es el número de pin del botón derecho. Este botón activará la interrupción INT0 .
Ahora tenemos las variables utilizadas para la matriz de LEDs de Charlieplexing:
- alfileres [PIN_NUMBER] es una array que almacena los 7 pines utilizados para el Charlieplexing.
connectionMatrix [MATRIX_ROW] [MATRIX_COL] [2] es una matriz multidimensional que la única conexión de cada LED se muestra en la matriz de Charlieplexing.
El primer número de los dos números dentro de las llaves es el ánodo.
El segundo número es el cátodo.matrixState [MATRIX_ROW] [MATRIX_COL] es la matriz multidimensional que indica que el LED se debe encender o apagar. Si cambia un solo bit de esta matriz, el LED correspondiente se enciende en OFF según la cual poco se inserta: 1 está encendido, 0 está apagado.
Esta matriz se utiliza siempre en el sketch porque para mostrar el objeto, como el cojín y la bola, debe ser escribió en esta matriz. Así que hay que eliminar la posición anterior, poniendo las coordenadas del objeto en el matrixState a 0, y entonces se puede escribir la nueva posición, poniendo el 1 a las nuevas coordenadas. Siempre en la matrixState.Si quiere mostrar una cara en la matriz de LEDs, usted necesita pasar cada pedacito de su matriz de cara a la matrixState. Por arte de magia los LEDs asume su matriz de cara! :)
Esto porque la matriz de Charlieplexing se actualiza automáticamente - con la interrupción de desbordamiento del temporizador 1 - de acuerdo sólo a la matriz de matrixState.