Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp34 [2024/11/15 20:46] – [Программный код эксперимента] labuser30products:laboratory_iot_c:exp34 [2024/11/16 11:11] (текущий) – [Программный код эксперимента] labuser30
Строка 44: Строка 44:
  
 void setup() { void setup() {
 +  Serial.begin(9600);
   lcd.init();    lcd.init(); 
   lcd.setBacklight(0);    lcd.setBacklight(0); 
   pinMode(ENC_A, INPUT);   pinMode(ENC_A, INPUT);
-  pinMode(ENC_B, INPUT);         +  pinMode(ENC_B, INPUT); 
 +  printLcd(count);        
 } }
    
Строка 57: Строка 59:
     if ((value_a and value_b) or (not value_a and not value_b)) {     if ((value_a and value_b) or (not value_a and not value_b)) {
       count++;       count++;
 +      Serial.println("+");
       printLcd(count);       printLcd(count);
     }      } 
     else if ((not value_a and value_b) or (value_a and not value_b)) {     else if ((not value_a and value_b) or (value_a and not value_b)) {
       count--;       count--;
 +      Serial.println("-");
       printLcd(count);       printLcd(count);
     }     }
Строка 69: Строка 73:
  
 Настраиваем выводы для работы с энкодером: Настраиваем выводы для работы с энкодером:
-<code arduino[enable_line_numbers="2", start_line_numbers_at="22"]>+<code arduino[enable_line_numbers="2", start_line_numbers_at="23"]>
   pinMode(ENC_A, INPUT);   pinMode(ENC_A, INPUT);
   pinMode(ENC_B, INPUT);   pinMode(ENC_B, INPUT);
Строка 81: Строка 85:
 В основном цикле программы получаем текущие состояния линий А и B.   В основном цикле программы получаем текущие состояния линий А и B.  
 Если состояние линии А изменилось, то проверяем условие вращения против часовой стрелки: Если состояние линии А изменилось, то проверяем условие вращения против часовой стрелки:
-<code python[enable_line_numbers="2", start_line_numbers_at="31"]>+<code python[enable_line_numbers="2", start_line_numbers_at="33"]>
    if ((value_a and value_b) or (not value_a and not value_b))     if ((value_a and value_b) or (not value_a and not value_b)) 
 </code> </code>
Строка 87: Строка 91:
  
 Если условие выше не подтвердилось, то проверяем второй вариант: вращение по часовой стрелке: Если условие выше не подтвердилось, то проверяем второй вариант: вращение по часовой стрелке:
-<code arduino[enable_line_numbers="2", start_line_numbers_at="35"]>+<code arduino[enable_line_numbers="2", start_line_numbers_at="38"]>
     else if ((not value_a and value_b) or (value_a and not value_b)):     else if ((not value_a and value_b) or (value_a and not value_b)):
 </code> </code>
-Если уровень сигнала А стал низким, а сигнала B высоким (состояние 3) или уровень сигнала А стал высоким, а B низким (состояние 1), то уменьшаем значение ''count'' на 1, ''печатаем символ ''-'' в терминал и обновляем информацию на дисплее.''+Если уровень сигнала А стал низким, а сигнала B высоким (состояние 3) или уровень сигнала А стал высоким, а B низким (состояние 1), то уменьшаем значение ''count'' на 1, печатаем символ ''-'' в терминал и обновляем информацию на дисплее.
  
 Если ни одно из этих условий не выполнено, то игнорируем сигналы. Перед завершением итерации записываем текущее состояние линии А как старое, для использования в следующей итерации. Если ни одно из этих условий не выполнено, то игнорируем сигналы. Перед завершением итерации записываем текущее состояние линии А как старое, для использования в следующей итерации.
-<code arduino[enable_line_numbers="2", start_line_numbers_at="39"]>+<code arduino[enable_line_numbers="2", start_line_numbers_at="44"]>
   value_a_old = value_a;   value_a_old = value_a;
 </code> </code>