Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp26 [2024/11/15 11:42] – [Программный код эксперимента] labuser30products:laboratory_iot_c:exp26 [2024/11/15 12:25] (текущий) – [Программный код эксперимента] labuser30
Строка 61: Строка 61:
 </WRAP> </WRAP>
  
-В строке 3 объявляем массив, в котором описываем цифры от 0 до 9 и какие сегменты должны светиться на индикаторе, чтобы эту цифру отобразить, а какие должны быть потушены. Для описания этого мы использовали двумерный массив. Это массив, у которого каждый из элементов является тоже массивом. Посмотрим внимательнее: элементом под индексом 0 у массива ''digits'' является массив ''{1, 1, 1, 1, 1, 1, 0}''. Это перечисление состояний сегментов для отображения цифры 0. Порядок перечисления соответствует порядку в массиве ''segments''. Это важно и потребуется нам для отображения цифр.+В строке 3 объявляем массив, в котором описываем цифры от 0 до 9 и какие сегменты должны светиться на индикаторе, чтобы эту цифру отобразить, а какие должны быть потушены. Для описания этого мы использовали двумерный массив. Это массив, у которого каждый из элементов является тоже массивом. Посмотрим внимательнее: элементом под индексом 0 у массива ''digits[0]'' является массив ''{1, 1, 1, 1, 1, 1, 0}''. Это перечисление состояний сегментов для отображения цифры 0. Порядок перечисления соответствует порядку в массиве ''segments''. Это важно и потребуется нам для отображения цифр. Для того, чтобы обратиться элементу массива состояний нужно использовать выражение такого вида''digits[0][0]'', оно вернет 1.
  
-В основном цикле программы мы перебираем все элементы цифры от 0 до 9 включительно. Обрати внимание на оператор меньше или равно ''<='' в цикле ''for''+В основном цикле программы мы с помощью цикла ''for'' перебираем цифры от 0 до 9 включительно и вызываем функцию ''draw_time(i)'' для каждой цифры. Обрати внимание на оператор меньше или равно ''%%<=%%'' в цикле ''for''
 <code arduino [enable_line_numbers="2", start_line_numbers_at="29"]> <code arduino [enable_line_numbers="2", start_line_numbers_at="29"]>
 void loop() { void loop() {
Строка 84: Строка 84:
 </code> </code>
  
-Получается, что функция получила данные о том какие сегменты ей нужно включить, а какие выключить. Соответственно она должна это исполнить. Для этого она проходит по всем элементам массива сегментов, как обычно, с помощью оператора ''in'', но в этот раз мы использовали еще оператор ''enumerate''. Обычно оператор ''in'' перебирая элементы массива записывает в переменную содержимое элемента массива, его значение, а ''enumerate(digit)'' создает последовательность кортежей, состоящих из индексов и значений. В кортеже ''el'' в элементе 0 оказывается индекс, а в элементе 1 значение. +Если сегмент должен быть включен ''(digits[digit][i])'', то нужно его зажечь. Номер пина, который нужно включить, записан в массиве ''segments'' в элементе с индексом ''i''. Именно поэтому мы сделали так, что последовательность пинов в массиве ''segments'' соответствует им в массиве ''digits'', чтобы у них были одинаковые индексы.
- +
-Номер индекса нам нужен, чтобы обратиться по нему к нужному сегменту, а его значение, чтобы знать что с ним делать — зажигать или тушить.  +
- +
-<code python [enable_line_numbers="2", start_line_numbers_at="26"]> +
-        if (el[1]): +
-            Pin(segments[el[0]]).on() +
-        else: +
-            Pin(segments[el[0]]).off() +
-</code> +
-Если сегмент должен быть включен (digits[digit][i]), то нужно его зажечь. Номер пина, который нужно включить, записан в переменной ''segments'' в элементе с индексом ''i''. Именно поэтому мы сделали так, что последовательность пинов в массиве ''segments'' соответствует им в массиве ''digits'', чтобы у них были одинаковые индексы. +
  
 <WRAP center round info 60%> <WRAP center round info 60%>
-  * [[https://younglinux.info/python/feature/enumerate|Подробнее об enumerate]] +  * [[https://alexgyver.ru/lessons/arrays/|Подробнее о массивах]]
-  * [[https://pythonworld.ru/tipy-dannyx-v-python/kortezhi-tuple.html|Подробнее о кортежах в Python]]+
 </WRAP> </WRAP>
 ==== Дополнительные задания ==== ==== Дополнительные задания ====