Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:aruno:exp14 [2020/06/12 12:48] alexnikproducts:aruno:exp14 [2020/07/02 12:18] (текущий) alexnik
Строка 4: Строка 4:
  
 ==== Схема эксперимента ==== ==== Схема эксперимента ====
-{{ :products:ardu:exp14_shema_tk.png?nolink |}} +{{ :products:ardu:exp14_shema_tk.png?nolink&400 |}} 
-{{ :products:ardu:exp13_sch.png?nolink |}}+{{ :products:ardu:exp13_sch.png?nolink&400 |}}
 //Рисунок 1. Электрическая принципиальная схема эксперимента// //Рисунок 1. Электрическая принципиальная схема эксперимента//
  
Строка 14: Строка 14:
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
  
-<file cpp Exp13[enable_line_numbers="2", start_line_numbers_at="1"]>+<file cpp Exp14[enable_line_numbers="2", start_line_numbers_at="1"]>
 int a = 8;  int a = 8; 
 int b = 9; int b = 9;
Строка 22: Строка 22:
 int f = 7; int f = 7;
 int g = 6; int g = 6;
-int dp = 10;+int = 10;
 int keyPin = 12; int keyPin = 12;
  
 // Цифра "Один" // Цифра "Один"
-void display1(void){ +void display1(void) { 
     digitalWrite(b,HIGH);     digitalWrite(b,HIGH);
     digitalWrite(c,HIGH);     digitalWrite(c,HIGH);
        
 // Цифра "Два" // Цифра "Два"
-void display2(void){+void display2(void) {
     digitalWrite(a,HIGH);     digitalWrite(a,HIGH);
     digitalWrite(b,HIGH);     digitalWrite(b,HIGH);
Строка 39: Строка 39:
        
 // Цифра "Три" // Цифра "Три"
-void display3(void){ +void display3(void) { 
     digitalWrite(a,HIGH);     digitalWrite(a,HIGH);
     digitalWrite(b,HIGH);     digitalWrite(b,HIGH);
Строка 47: Строка 47:
        
 // Цифра "Четыре" // Цифра "Четыре"
-void display4(void){ +void display4(void) { 
     digitalWrite(f,HIGH);     digitalWrite(f,HIGH);
     digitalWrite(b,HIGH);     digitalWrite(b,HIGH);
Строка 54: Строка 54:
        
 // Цифра "Пять" // Цифра "Пять"
-void display5(void){ +void display5(void) { 
     digitalWrite(a,HIGH);     digitalWrite(a,HIGH);
     digitalWrite(f,HIGH);     digitalWrite(f,HIGH);
Строка 62: Строка 62:
        
 // Цифра "Шесть" // Цифра "Шесть"
-void display6(void){ +void display6(void) { 
     digitalWrite(a,HIGH);     digitalWrite(a,HIGH);
     digitalWrite(f,HIGH);     digitalWrite(f,HIGH);
Строка 71: Строка 71:
        
 // Цифра "Семь" // Цифра "Семь"
-void display7(void){   +void display7(void) {   
     digitalWrite(a,HIGH);     digitalWrite(a,HIGH);
     digitalWrite(b,HIGH);     digitalWrite(b,HIGH);
Строка 77: Строка 77:
        
 // Цифра "Восемь" // Цифра "Восемь"
-void display8(void){ +void display8(void) { 
     digitalWrite(a,HIGH);     digitalWrite(a,HIGH);
     digitalWrite(b,HIGH);     digitalWrite(b,HIGH);
Строка 87: Строка 87:
        
 // Цифра "Девять" // Цифра "Девять"
-void display9(void){ +void display9(void) { 
     digitalWrite(a,HIGH);     digitalWrite(a,HIGH);
     digitalWrite(b,HIGH);     digitalWrite(b,HIGH);
Строка 96: Строка 96:
        
 // Цифра "Нуль" // Цифра "Нуль"
-void display0(void){ +void display0(void) { 
     digitalWrite(a,HIGH);     digitalWrite(a,HIGH);
     digitalWrite(b,HIGH);     digitalWrite(b,HIGH);
Строка 105: Строка 105:
    }    }
 //Очистка дисплея  //Очистка дисплея 
-void clearDisplay(void){ +void clearDisplay(void) { 
     digitalWrite(a,LOW);     digitalWrite(a,LOW);
     digitalWrite(b,LOW);     digitalWrite(b,LOW);
Строка 115: Строка 115:
        
  
-void setup()  +void setup() { 
-+
     int i;     int i;
     for(i=4;i<=11;i++)      for(i=4;i<=11;i++) 
         pinMode(i,OUTPUT);         pinMode(i,OUTPUT);
     pinMode(keyPin,INPUT);     pinMode(keyPin,INPUT);
 +    digitalWrite(h,HIGH);
     display0();     display0();
-+ 
  
 int x = -1;   int x = -1;  
Строка 136: Строка 136:
       }       }
     }     }
-    if(lightsOn) { +   if(lightsOn) { 
-    x = x + 1; +      delay(100);  
-   +      x = x + 1; 
-  if (x == 0) {clearDisplay(); display0(); delay(100); } +    
-  if (x == 1) {clearDisplay(); display1(); delay(100); } +   if (x == 0) {clearDisplay(); display0();
-  if (x == 2) {clearDisplay(); display2(); delay(100); } +   if (x == 1) {clearDisplay(); display1();
-  if (x == 3) {clearDisplay(); display3(); delay(100); } +   if (x == 2) {clearDisplay(); display2();
-  if (x == 4) {clearDisplay(); display4(); delay(100); } +   if (x == 3) {clearDisplay(); display3();
-  if (x == 5) {clearDisplay(); display5(); delay(100); } +   if (x == 4) {clearDisplay(); display4();
-  if (x == 6) {clearDisplay(); display6(); delay(100); } +   if (x == 5) {clearDisplay(); display5();
-  if (x == 7) {clearDisplay(); display7(); delay(100); } +   if (x == 6) {clearDisplay(); display6();
-  if (x == 8) {clearDisplay(); display8(); delay(100); } +   if (x == 7) {clearDisplay(); display7();
-  if (x == 9) {clearDisplay(); display9(); delay(100); } +   if (x == 8) {clearDisplay(); display8();
-  if (x > 9) {x = 0;} +   if (x == 9) {clearDisplay(); display9();
-}+   if (x > 9) {x = 0;} 
 + }
 </file> </file>
- +На первый взгляд программа может показаться очень сложной, но не стоит пугаться, давайте присмотримся повнимательнее.\\ 
-Программа эксперимента довольно простая, назначаем переменным пины контроллера, устанавливаем их в режим вывода и подаем сигнал на нужные.+В начале программы мы инициализируем переменные соответствующие номерам пинов к которым подключен LED - индикатор и кнопка.\\ 
 +Далее следуют одиннадцать функций очень похожих друг на друга. При выполнении функций ''display0()...display9()'' на LED - индикаторе зажигаются цифры от 0 до 9, а при выполнении функции ''clearDisplay()'' все сегменты индикатора гаснут.\\ 
 +В функции ''setup()'' настраиваем пины контроллера и запускаем на выполнение функцию ''display0()''что-бы на индикаторе при запуске сразу загорелся **"0"**.\\ 
 +В функции ''loop()'' прописан обработчик кнопки, который запускает или останавливает смену цифр на LED - индикаторе.\\ 
 +Благодаря тому, что мы отображение цифр вынесли в отдельные функции, основной цикл программы более прост и легче читаем. Кроме того при допущении ошибки ее легче найти и исправить.
  
 ==== Дополнительное задание ==== ==== Дополнительное задание ====
 <WRAP center round tip 60%> <WRAP center round tip 60%>
-  * Измени код программы, чтобы получить другие цифры на дисплее.+Добавь к цифрам 0..9 еще буквы A, b, C d E F, чтобы секундомер переключал символы от 0 до F
 </WRAP> </WRAP>
 +
 +=== Задание повышенной сложности ===
 +<WRAP center round tip 60%>
 +Напиши программу с аналогичным результатом используя массивы 
 +</WRAP>
 +