Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
products:laboratory_iot_c:exp26 [2024/11/15 11:47] – [Программный код эксперимента] labuser30 | products:laboratory_iot_c:exp26 [2024/11/15 12:25] (текущий) – [Программный код эксперимента] labuser30 |
---|
</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() { |
</code> | </code> |
| |
| Если сегмент должен быть включен ''(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%> |