Компьютерная анимация — последовательный показ (слайд-шоу) заранее подготовленных графических файлов.
Мы уже создавали анимацию на 7-ми сегментном LED - индикаторе, Эксперимент 14. Секундомер, но там мы могли отображать только буквенно-цифровые символы.
LED - матрица с которой мы познакомились в предыдущем эксперименте, позволяет не только отображать картинки 8х8 точек (пикселей), но и создавать простые игры.
В данном эксперименте сделаем анимацию подмигивающего смайлика.
Рисунок 1. Электрическая принципиальная схема эксперимента
Рисунок 2. Монтажная схема эксперимента
Для управления LED - матрицей понадобится 16 пинов контроллера. На выводы строк ставим токоограничительные резисторы 120 Ом.
int R[] = {2,7,A5,5,13,A4,12,A2}; int C[] = {6,11,10,3,A3,4,8,9}; unsigned char ris1[8][8] = { 0,0,0,0,0,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,1,0,0,0,0,1,0, 0,0,1,1,1,1,0,0, 0,0,0,0,0,0,0,0, }; unsigned char ris2[8][8] = { 0,0,0,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,1,1,1,1, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,1,0,0,0,0,1,0, 0,0,1,1,1,1,0,0, 0,0,0,0,0,0,0,0, }; void setup() { for(int i = 0;i<8;i++) { pinMode(R[i],OUTPUT); pinMode(C[i],OUTPUT); } } void loop(){ for(int i = 0 ; i < 70 ; i++) { Display(ris1); } for(int i = 0 ; i < 70 ; i++) { Display(ris2); } } void Display(unsigned char dat[8][8]) { for(int r = 0; r<8 ; r++) { digitalWrite(R[r],LOW); for(int c = 0;c<8;c++) { digitalWrite(C[c],dat[r][c]); } delay(1); Clear(); } } void Clear() { for(int i = 0;i<8;i++) { digitalWrite(C[i],LOW); digitalWrite(R[i],HIGH); } }
В программе пины контроллера по столбцам и строкам для удобства объединены в отдельные массивы R[] и C[].
Для отрисовки вызываем функцию Display()
которая принимает в качестве аргумента массив зашифрованной картинки, и далее в первом цикле перебираются пины строк и подается сигнал LOW. Вложенный цикл перебирает столбцы и в соответствие с данными в массиве картинки присваивает соответствующему пину сигнал LOW, если в массиве значение 0 или сигнал HIGH, если значение 1.
Создайте свою анимацию из нескольких картинок