Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:aruno:exp21 [2020/06/25 17:06] alexnikproducts:aruno:exp21 [2020/06/25 19:29] (текущий) alexnik
Строка 3: Строка 3:
 Компьютерная анимация — последовательный показ (слайд-шоу) заранее подготовленных графических файлов. Компьютерная анимация — последовательный показ (слайд-шоу) заранее подготовленных графических файлов.
 Мы уже создавали анимацию на 7-ми сегментном LED - индикаторе, [[products:aruno:exp14|Эксперимент 14. Секундомер]], но там мы могли отображать только буквенно-цифровые символы.\\ Мы уже создавали анимацию на 7-ми сегментном LED - индикаторе, [[products:aruno:exp14|Эксперимент 14. Секундомер]], но там мы могли отображать только буквенно-цифровые символы.\\
-LED - матрица с которой мы познакомились в [[products:aruno:exp20|предыдущем эксперименте]], позволяет не только отображать простейшие картинки 8х8 точек (пикселей), но создавать простые игры.\\+LED - матрица с которой мы познакомились в [[products:aruno:exp20|предыдущем эксперименте]], позволяет не только отображать картинки 8х8 точек (пикселей), но и создавать простые игры.\\ 
 + 
 +В данном эксперименте сделаем анимацию подмигивающего смайлика.
  
-В данном эксперименте  
 ==== Схема эксперимента ==== ==== Схема эксперимента ====
  
Строка 14: Строка 15:
 //Рисунок 2. Монтажная схема эксперимента// //Рисунок 2. Монтажная схема эксперимента//
  
 +Для управления LED - матрицей понадобится 16 пинов контроллера. На выводы строк ставим токоограничительные резисторы 120 Ом.
  
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
Строка 22: Строка 24:
      
 unsigned char ris1[8][8] = {   unsigned char ris1[8][8] = {  
-                                1,0,0,0,0,0,0,1+                                0,0,0,0,0,0,0,0
-                                0,0,1,1,1,1,0,0, +                                0,1,1,0,0,1,1,0, 
-                                0,1,0,0,0,0,1,0, +                                0,1,1,0,0,1,1,0, 
-                                0,1,0,1,1,0,1,0, +                                0,0,0,0,0,0,0,0, 
-                                0,1,0,1,1,0,1,0,+                                0,0,0,0,0,0,0,0,
                                 0,1,0,0,0,0,1,0,                                 0,1,0,0,0,0,1,0,
                                 0,0,1,1,1,1,0,0,                                 0,0,1,1,1,1,0,0,
-                                1,0,0,0,0,0,0,1,+                                0,0,0,0,0,0,0,0,
                             };                               };  
      
 unsigned char ris2[8][8] =  { unsigned char ris2[8][8] =  {
-                                0,0,1,1,1,1,0,0, +                                0,0,0,0,0,0,0,0, 
-                                0,1,0,0,0,0,1,0, +                                0,1,1,0,0,0,0,0, 
-                                1,0,0,1,1,0,0,1, +                                0,1,1,0,1,1,1,1, 
-                                1,0,1,0,0,1,0,1+                                0,0,0,0,0,0,0,0
-                                1,0,1,0,0,1,0,1, +                                0,0,0,0,0,0,0,0,
-                                1,0,0,1,1,0,0,1,+
                                 0,1,0,0,0,0,1,0,                                 0,1,0,0,0,0,1,0,
                                 0,0,1,1,1,1,0,0,                                 0,0,1,1,1,1,0,0,
 +                                0,0,0,0,0,0,0,0,
                             };                               };  
      
Строка 51: Строка 53:
      
 void loop(){   void loop(){  
-  for(int i = 0 ; i < 20 ; i++) {  +  for(int i = 0 ; i < 70 ; i++) {  
     Display(ris1);       Display(ris1);  
      }        }  
-  for(int i = 0 ; i < 20 ; i++) {     +  for(int i = 0 ; i < 70 ; i++) {     
     Display(ris2);     Display(ris2);
      }        }  
Строка 60: Строка 62:
      
 void Display(unsigned char dat[8][8]) {   void Display(unsigned char dat[8][8]) {  
-  for(int = 0; c<8;c++) {   +  for(int = 0; r<8 ; r++) {   
-    digitalWrite(R[c],LOW);  +    digitalWrite(R[r],LOW);  
-  for(int = 0;r<8;r++)  {   +      for(int = 0;c<8;c++) {   
-    digitalWrite(C[r],dat[r][c]);  +         digitalWrite(C[c],dat[r][c]);   
 +        }   
 +    delay(1);   
 +    Clear();
     }       }  
-  delay(1);   
-  Clear(); 
-   }   
  }    }  
      
Строка 75: Строка 77:
     digitalWrite(R[i],HIGH);       digitalWrite(R[i],HIGH);  
    }      }  
- }+ 
 </file> </file>
  
-В программе эксперимента используем двухмерный массив, в котором зашифровываем выводимые символы. Для вывода всех символов напишем универсальную функцию в которую будем передавать порядковый номер символа зашифрованного в массиве.+В программе пины контроллера по столбцам и строкам для удобства объединены в отдельные массивы **R[]** и **C[]**.\\ 
 +Для отрисовки вызываем функцию ''Display()''которая принимает в качестве аргумента массив зашифрованной картинки, и далее в первом цикле перебираются пины строк и подается сигнал **LOW**. Вложенный цикл перебирает столбцы и в соответствие с данными в массиве картинки присваивает соответствующему пину сигнал **LOW**, если в массиве значение 0 или сигнал **HIGH**, если значение 1\\
  
 ==== Дополнительное задание ==== ==== Дополнительное задание ====
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-  * добавьте дополнительно еще буквы A, b, C, d, E, F +Создайте свою анимацию из нескольких картинок
-  * усовершенствуйте функцию ''displ()'',(подсказка - для этого вам понадобится изменить монтажную схему подключения+
 </WRAP> </WRAP>