Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp27 [2020/05/17 22:43] – [Схема эксперимента] labuser29products:laboratory_iot:exp27 [2020/05/18 11:20] (текущий) – [Программный код эксперимента] labuser29
Строка 18: Строка 18:
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
  
-<file python Exp25.py[enable_line_numbers="2", start_line_numbers_at="1"]>+<file python Exp27.py[enable_line_numbers="2", start_line_numbers_at="1"]>
 from machine import Pin from machine import Pin
 import time import time
Строка 29: Строка 29:
 segments = [14, 13, 4, 5, 12, 16, 15] # ABCDEFG segments = [14, 13, 4, 5, 12, 16, 15] # ABCDEFG
  
 +for s in segments:
 +    led = Pin(s, Pin.OUT).off()
 +    
 digits = [ digits = [
     [1, 1, 1, 1, 1, 1, 0], # 0     [1, 1, 1, 1, 1, 1, 0], # 0
Строка 59: Строка 62:
     draw_time(count)     draw_time(count)
 </file> </file>
 +
 +Объявляем переменные и настраиваем кнопку.
 +<code python [enable_line_numbers="2", start_line_numbers_at="5"]>
 +button = Pin(0, Pin.IN)
 +state_old = 1
 +count = 0
 +</code>
 +
 +В переменной ''state_old'' будем хранить прошлое состояние кнопки, чтобы обнаруживать нажатия, а в ''count'' будем хранить количество зарегистрированных нажатий.
 +
 +
 +Логика работы программы аналогична прошлому эксперименту, кроме основного цикла. Сначала определяем состояние кнопки. Если новое состояние "нажато" и прошлое "не нажато", то увеличиваем значение счетчика нажатий. 
 +
 +<code python [enable_line_numbers="2", start_line_numbers_at="36"]>
 +new_state = button.value()
 +    if new_state == 0 and state_old == 1:
 +        count = count + 1
 +</code>
 +
 +Проверяем не переполнился ли счетчик, если количество нажатий было больше 9, то обнуляем его.
 +
 +<code python [enable_line_numbers="2", start_line_numbers_at="39"]>
 +    if count > 9:
 +        count = 0
 +</code>
 +
 +Записываем текущее состояние кнопки как старое и отображаем текущее состояние счетчика нажатий на дисплее.
 +
 +<code python [enable_line_numbers="2", start_line_numbers_at="41"]>
 +    state_old = new_state
 +    draw_time(count)
 +</code>
 +
 +==== Дополнительные задания ====
 +
 +<WRAP center round tip 60%>
 +  * Добавь к цифрам 0..9 еще буквы A, b, C d E F, чтобы счетчик переключал символы от 0 до F.
 +  * Сделай обратный счетчик, чтобы его значение уменьшалось при нажатии
 +</WRAP>