Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:aruno:exp15 [2020/06/30 17:08] alexnikproducts:aruno:exp15 [2020/07/02 14:24] (текущий) alexnik
Строка 24: Строка 24:
 int h = 10; int h = 10;
 int keyPin = 12; int keyPin = 12;
 +int data [11][8] = {{1,1,1,1,1,1,0,1},
 +                    {0,1,1,0,0,0,0,1},
 +                    {1,1,0,1,1,0,1,1},
 +                    {1,1,1,1,0,0,1,1},
 +                    {0,1,1,0,0,1,1,1},
 +                    {1,0,1,1,0,1,1,1},
 +                    {1,0,1,1,1,1,1,1},
 +                    {1,1,1,0,0,0,0,1},
 +                    {1,1,1,1,1,1,1,1},
 +                    {1,1,1,1,0,1,1,1},
 +                    {0,0,0,0,0,0,0,0}};
  
-// Цифра "Один" +void displ (int);
-void display1(void) {  +
-    digitalWrite(b,HIGH); +
-    digitalWrite(c,HIGH); +
-   }  +
-// Цифра "Два" +
-void display2(void) { +
-    digitalWrite(a,HIGH); +
-    digitalWrite(b,HIGH); +
-    digitalWrite(g,HIGH); +
-    digitalWrite(e,HIGH); +
-    digitalWrite(d,HIGH); +
-   }  +
-// Цифра "Три" +
-void display3(void) {  +
-    digitalWrite(a,HIGH); +
-    digitalWrite(b,HIGH); +
-    digitalWrite(c,HIGH); +
-    digitalWrite(d,HIGH); +
-    digitalWrite(g,HIGH); +
-   }  +
-// Цифра "Четыре" +
-void display4(void) {  +
-    digitalWrite(f,HIGH); +
-    digitalWrite(b,HIGH); +
-    digitalWrite(g,HIGH); +
-    digitalWrite(c,HIGH); +
-   }  +
-// Цифра "Пять" +
-void display5(void) {  +
-    digitalWrite(a,HIGH); +
-    digitalWrite(f,HIGH); +
-    digitalWrite(g,HIGH); +
-    digitalWrite(c,HIGH); +
-    digitalWrite(d,HIGH); +
-   }  +
-// Цифра "Шесть" +
-void display6(void) {  +
-    digitalWrite(a,HIGH); +
-    digitalWrite(f,HIGH); +
-    digitalWrite(g,HIGH); +
-    digitalWrite(c,HIGH); +
-    digitalWrite(d,HIGH);   +
-    digitalWrite(e,HIGH);   +
-   }  +
-// Цифра "Семь" +
-void display7(void) {    +
-    digitalWrite(a,HIGH); +
-    digitalWrite(b,HIGH); +
-    digitalWrite(c,HIGH); +
-   }  +
-// Цифра "Восемь" +
-void display8(void) {  +
-    digitalWrite(a,HIGH); +
-    digitalWrite(b,HIGH); +
-    digitalWrite(g,HIGH); +
-    digitalWrite(c,HIGH); +
-    digitalWrite(d,HIGH);   +
-    digitalWrite(e,HIGH);   +
-    digitalWrite(f,HIGH);   +
-   }  +
-// Цифра "Девять" +
-void display9(void) {  +
-    digitalWrite(a,HIGH); +
-    digitalWrite(b,HIGH); +
-    digitalWrite(g,HIGH); +
-    digitalWrite(c,HIGH); +
-    digitalWrite(d,HIGH);   +
-    digitalWrite(f,HIGH);   +
-   }  +
-// Цифра "Нуль" +
-void display0(void) {  +
-    digitalWrite(a,HIGH); +
-    digitalWrite(b,HIGH); +
-    digitalWrite(c,HIGH); +
-    digitalWrite(d,HIGH);   +
-    digitalWrite(e,HIGH);   +
-    digitalWrite(f,HIGH);   +
-   } +
-//Очистка дисплея  +
-void clearDisplay(void) {  +
-    digitalWrite(a,LOW); +
-    digitalWrite(b,LOW); +
-    digitalWrite(g,LOW); +
-    digitalWrite(c,LOW); +
-    digitalWrite(d,LOW);   +
-    digitalWrite(e,LOW);   +
-    digitalWrite(f,LOW);   +
-   +
  
 void setup() {  void setup() { 
-    int i; +    for(int i=4;i<=11;i++) 
-    for(i=4;i<=11;i++) +
         pinMode(i,OUTPUT);         pinMode(i,OUTPUT);
     pinMode(keyPin,INPUT);     pinMode(keyPin,INPUT);
-    display0();+    displ(11);
    
  
 int x = -1;   int x = -1;  
 +int button_old = 1;
 void loop() {  void loop() { 
-   if(digitalRead(keyPin) == HIGH ) { +   if((digitalRead(keyPin) == LOW)&&(button_old == 1)) { 
-     x = x + 1;+      x = x + 1;
     }     }
-   if (x == 0) {clearDisplay(); display0();} +   displ(11); 
-   if (x == 1) {clearDisplay(); display1();+   displ(x);
-   if (x == 2) {clearDisplay(); display2();+
-   if (x == 3) {clearDisplay(); display3();+
-   if (x == 4) {clearDisplay(); display4();+
-   if (x == 5) {clearDisplay(); display5();+
-   if (x == 6) {clearDisplay(); display6();+
-   if (x == 7) {clearDisplay(); display7();+
-   if (x == 8) {clearDisplay(); display8();+
-   if (x == 9) {clearDisplay(); display9();}+
    if (x > 9) {x = 0;}    if (x > 9) {x = 0;}
 +   
 +   button_old = digitalRead(keyPin);
 +   delay(20);
  }  }
 +
 +void displ (int num) {
 +  int j = 0;
 +  digitalWrite(a, data[num][j]); j = j + 1;
 +  digitalWrite(b, data[num][j]); j = j + 1; 
 +  digitalWrite(c, data[num][j]); j = j + 1; 
 +  digitalWrite(d, data[num][j]); j = j + 1; 
 +  digitalWrite(e, data[num][j]); j = j + 1; 
 +  digitalWrite(f, data[num][j]); j = j + 1; 
 +  digitalWrite(g, data[num][j]); j = j + 1; 
 +  digitalWrite(h, data[num][j]); j = j + 1; 
 +  } 
 +}
 </file> </file>
  
 +В основном цикле программы мы обрабатываем нажатие кнопки и считаем количество нажатий, при чем счетчик нажатий увеличивается при условии что кнопка уже отпущена (с пина считывается сигнал "LOW"), но была нажата (в переменную **button_old** записана 1, что соответствует сигналу "HIGH" считанному с пина кнопки).\\ 
 +Для отображения символа используется пользовательская функция ''displ()'', которая в качестве аргумента принимает номер зашифрованного в массиве символа (0..9), где "1" означает, что будет подаваться сигнал "HIGH", а "0" означает, что будет подаваться сигнал "LOW"
  
 ==== Дополнительное задание ==== ==== Дополнительное задание ====