Это старая версия документа!
Компьютерная анимация — последовательный показ (слайд-шоу) заранее подготовленных графических файлов.
Мы уже создавали анимацию на 7-ми сегментном LED - индикаторе, Эксперимент 14. Секундомер, но там мы могли отображать только буквенно-цифровые символы.
LED - матрица с которой мы познакомились в предыдущем эксперименте, позволяет не только отображать простейшие картинки 8х8 точек (пикселей), но создавать простые игры.
В данном эксперименте
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] = { 1,0,0,0,0,0,0,1, 0,0,1,1,1,1,0,0, 0,1,0,0,0,0,1,0, 0,1,0,1,1,0,1,0, 0,1,0,1,1,0,1,0, 0,1,0,0,0,0,1,0, 0,0,1,1,1,1,0,0, 1,0,0,0,0,0,0,1, }; unsigned char ris2[8][8] = { 0,0,1,1,1,1,0,0, 0,1,0,0,0,0,1,0, 1,0,0,1,1,0,0,1, 1,0,1,0,0,1,0,1, 1,0,1,0,0,1,0,1, 1,0,0,1,1,0,0,1, 0,1,0,0,0,0,1,0, 0,0,1,1,1,1,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 < 20 ; i++) { Display(ris1); } for(int i = 0 ; i < 20 ; i++) { Display(ris2); } } void Display(unsigned char dat[8][8]) { for(int c = 0; c<8;c++) { digitalWrite(R[c],LOW); for(int r = 0;r<8;r++) { digitalWrite(C[r],dat[r][c]); } delay(1); Clear(); } } void Clear() { for(int i = 0;i<8;i++) { digitalWrite(C[i],LOW); digitalWrite(R[i],HIGH); } }
В программе эксперимента используем двухмерный массив, в котором зашифровываем выводимые символы. Для вывода всех символов напишем универсальную функцию в которую будем передавать порядковый номер символа зашифрованного в массиве.
displ()
,(подсказка - для этого вам понадобится изменить монтажную схему подключения