Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp28 [2024/11/15 13:37] – [Программный код эксперимента] labuser30products:laboratory_iot_c:exp28 [2024/11/15 13:42] (текущий) – [Программный код эксперимента] labuser30
Строка 62: Строка 62:
 </file> </file>
  
- +Логика программы мало отличается от предыдущего экспериментаНовым дня нас будет получение случайного значения. Для этого  воспользуемся функцией ''random(min, max)'' она возвращает случайное число в диапазоне от min до max. 
-Объявляем переменные и настраиваем кнопку. +Чтобы не заводить дополнительные переменные, мы сразу передаем результат функции ''random()'' в функцию ''draw_digit''. Данная функция полностью скопирована из предыдущего эксперимента без изменений, только тогда она называлась ''draw_time''
-<code python [enable_line_numbers="2", start_line_numbers_at="6"]> +
-button = Pin(0, Pin.IN) +
-state_old = 1 +
-count = 0 +
-</code> +
- +
-В переменной ''state_old'' будем хранить прошлое состояние кнопки.  +
- +
-Рассмотрим основной цикл программы+
-<code python [enable_line_numbers="2", start_line_numbers_at="42"]> +
-while True: +
-    new_state = button.value() +
-    if new_state == 0 and state_old == 1: +
-        rand_bits = random.getrandbits(5) +
-        rand_digit = bit_summ(rand_bits) +
-        rand_digit+=1 +
-        draw_digit(rand_digit) +
-    state_old = new_state +
-</code> +
- +
- +
-В бесконечном цикле программа ждет нажатия на кнопку ''А'', сравнивая ее текущее состояние с логическим нулем, а предыдущее с логической единицейЕсли это состояние обнаружено, то генерируем число, состоящее из 5 случайных битов: +
-<code python [enable_line_numbers="2", start_line_numbers_at="45"]> +
-        rand_bits = random.getrandbits(5) +
-</code> +
- +
-Для получения случайного числа воспользуемся функцией ''random(min, max)'' она возвращает случайное число в диапазоне от min до max. +
    
  
-Функция принимает в качестве параметра число и возвращает сумму его бит. Но, как мы помним, мы генерируем 5 бит. Их сумма будет от 0 до 5, а нам нужно число от 1 до 6. Поэтому просто добавляем 1 к полученной сумме, чтобы получить число в требуемом интервале. +Полученное число выводим на индикатор с помощью функции ''draw_digit''
- +<code arduino [enable_line_numbers="2", start_line_numbers_at="39"]> 
-<code python [enable_line_numbers="2", start_line_numbers_at="46"]> +    draw_time(random(1, 7));
-        rand_digit = bit_summ(rand_bits) +
-        rand_digit+=1+
 </code> </code>
  
-Полученное число выводим на индикатор с помощью функции ''draw_digit''. 
-<code python [enable_line_numbers="2", start_line_numbers_at="48"]> 
-        draw_digit(rand_digit) 
-</code> 
-Данная функция полностью скопирована из предыдущего эксперимента без изменений, только тогда она называлась ''draw_time'' 
  
 ==== Дополнительные задания ==== ==== Дополнительные задания ====