Paso 4: Charlieplexing en Software - mostrando una imagen
Aquí te armamos nuestra variable para celebrar los 20 valores (píxeles) para nuestra imagen de LED. El valor predeterminado se muestra a continuación (todos 0). Esto mostraría una imagen oscura, con todos los LEDs apagados, pero podemos cambiar esto en el software.
char led_grid [20] = {}
000, 000, 000, 000, 000,
000, 000, 000, 000, 000,
000, 000, 000, 000, 000,
000, 000, 000, 000, 000
};
Estoy permitiendo que esta variable tienda más que 1 y 0, pero números más grandes también. Quiero hacer mi LED dimmer a veces. Así que he decidido para este proyecto un valor de 100 será full brillo y 0 estará apagado.
La siguiente función será recorrer todas las 20 posiciones en la led_grid y si el valor de cada píxel está por encima de cero, se encenderá el LED correspondiente. Puesto que sólo puede encender un LED a la vez, la imagen debe ser constantemente re-dibujados y lo suficientemente rápido como para que no se notará el efecto estroboscópico/parpadeo con los ojos. Normalmente esto no será un problema con las velocidades que se puede ejecutar en un microcontrolador.
void draw_frame(void) {}
char led, bright_val, b;
para (led = 0; llevado < = 19; led ++) {}
software de PWM
bright_val = led_grid [led];
para (b = 0; b < bright_val; b += 4) {light_led(led);} //delay mientras que en
para (b = bright_val; b < 100; b += 4) {leds_off();} //delay y apagado
}
}