Первая программа на Python 3 обычно, как и все первые программы на других языках программирования, реализует задачу вывода на экран дисплея сакральных слов «hello world». Но более сакральным действом, почти как танцы с бубном у костра, будет, если первую программу на  Python 3 Вы сделаете на микроконтроллере (MCU) и это будет не словесная шелуха «hello world»,  а сакральный огонь  излучения светодиода.

На многих модулях с MCU Kendryte k210 стоит трехцветный светодиод (RGB), вот мы через свою первую программу на Python 3 заставим зажечь сначала красный (R) свет, затем зеленый (G) и голубой (B) поочередно. При таком исполнении своей первой программы на Python 3, Вы её запомните на всю жизнь, а слова «hello world»  Вы забудете через неделю. Мой Вам совет приобретайте модуль Maix Dock, и Вы легко и быстро освоите язык программирования Python 3 на решении реальных задач искусственного интеллекта:

Приобрели MAiX DOCK на Aliexpress тут …

Приобрести MAiX DOCK на Banggood тут …

Содержание

Первая программа на Python 3. Ознакомление с материальной частью

Алгоритм нашей первой программы на Python 3

 Сопоставление контактов ввода/вывода периферийных устройств с контактами ввода/вывода MCU Kendryte k210. FPIOA (программируемый массив ввода и вывода)

Первая программа на Python 3. Код

Зажигаем красный свет RGB светодиода

Анализируем код первой программы на языке Python

Зажигаем зеленый свет RGB светодиода

Зажигаем голубой свет RGB светодиода

 

Первая программа на Python 3. Ознакомление с материальной частью

Рис.1 На плате модуля Maix Dock с стороны MCU Kendryte k210 установлены два светодиода. Один (1) голубого свечения — индикатор питания модуля Maix Dock, второй (2) трёхцветный светодиод (RGB) предназначен для проверки работы модуля и знаний человека работающего с данным модулем

Рис.2 Принципиальная схема подключения трехцветного (RGB) светодиода. Для подключения любого светодиода требуется: источник питания, ограничивающий ток резистор и сам светодиод. На плате модуля Maix Dock имеется трехцветный (RGB) светодиод.

 

Рис.3 Принципиальная схема разводки контактов микроконтроллера Kendryte k210 на плате модуля Maix Dock. Красным прямоугольником обведены контакты к которым припаяны на плате выводы трехцветного (RGB) светодиода. Это IO12 — голубой , IO13-зеленый, IO14- красный (на схеме порядок цветов не соответствует реальному определению подключения (RGB) светодиода, так как программно в MCU Kendryte k210 можно переопределить номера контактов ввода/вывода)

Алгоритм нашей первой программы на Python 3

Например, мы хотим, чтобы загорелся красный свет, то есть, включить LED_R встроенный в трехцветный (RGB)  светодиод, который изображен на принципиальной схеме Рис.2. Положительный источник питания + 3,3V подключен, но он не горит, так как на выходе микроконтроллера Kendryte k210 по умолчанию логическая 1 (+3,3V) нам её необходимо переключить на логический 0 (0V). Тогда возникнет разность потенциалов и через светодиод потечет ток и он загорится.

Обратите внимание, что это LED_R псевдоним, который означает, что этот вывод фактически подключен к выводу микросхемы, например, Pin13 или IO13 но на самом деле это Pin14 или IO14, что мы рассмотрим ниже почему это происходит.

 Сопоставление контактов ввода/вывода периферийных устройств с контактами ввода/вывода MCU Kendryte k210. FPIOA (программируемый массив ввода и вывода)

MCU Kendryte k210 поддерживает привязку или переназначения каждого периферийного устройства к любому контакту по желанию, используя для этого функцию FPIOA(программируемый массив ввода и вывода).

Например, согласно принципиальной схемы MCU Kendryte k210 Рис.3,  разводка контактов микроконтроллера с трехцветным светодиодом соответствует контактам  Pin12, Pin13 и Pin14 после запуска функции повторного сопоставления можно заметить, что порядок подключения контактов по цвету трехцветного светодиода, не соответствует принципиальной схеме.

Контакты (аппаратные контакты), соответствующие периферийным устройствам и на кристалле аппаратного обеспечения MCU Kendryte k210, используемого MaixPy, могут быть сопоставлены произвольно. , аппаратный дизайн MCU Kendryte k210 и дизайн программного обеспечения имеют больше свободы.  Например интерфейс I2C может использовать Pin11 и Pin12, а может быть заменен на любой другой Pin.

Примечание. Чтобы различать терминологию GPIO и IO, необходимо понимать что IO также можно назвать Pin то есть физический контакт микроконтроллера или периферийного устройства, а GPIO это логическое понятие Pin/IO с помощью которого посредством команд из программ можно управлять этими Pin/IO .

Рис.4 Из-за этой мощной функции сопоставления GPIO и IO при использовании контактов MCU Kendryte k210 нам необходимо  определить реальные номера его контактов

from board import board_info #  импортируем из модуля board  (библиотеки или фрагмента кода любезно написанного инженерами компании Sipeed) класс board_info (фрагмент кода, конкретно нам необходимый для решения задачи определения номера контакта MCU Kendryte k210 соединенного с контактом LED_R трехцветного светодиода)
print(board_info.LED_R) # выводим на экран значение номера контакта MCU Kendryte k210 соединенного с контактом LED_R трехцветного светодиода)

Первая программа на языке Python 3. Код

Зажигаем красный свет RGB светодиода

Нам нужно использовать GPIO для управления светодиодом
Порядок действий следующий:

from Maix import GPIO
from fpioa_manager import fm
from board import board_info
print(board_info.LED_R)
fm.register(board_info.LED_R, fm.fpioa.GPIO0, force=True)
led_r = GPIO(GPIO.GPIO0, GPIO.OUT)
led_r.value(0)

 

Рис.5 Загружаем простым копированием код в MaixPy и запускаем его, как это сделать подробно описано в нашей статье Глубокое обучение на Python 3. Как можно заметить в окне Последовательного терминала появился номер контакта 14 MCU Kendryte k210 (2) в соответствии с ранее программно определенной разводкой контактов MCU конкретно для модуля Maix Dock

 

Рис.6 Не методом танцев с бубном вокруг костра, а методом запуска кода программы ранее, вы обнаружите, что светодиодный индикатор (RGB)  (2) горит! Горит красным огнем!

Анализируем код первой программы на языке Python

from Maix import GPIO #  из модуля Maix импортируем класс GPIO этот класс поддерживает операции, связанные с периферийными устройствами GPIO
from fpioa_manager import fm # из модуля fpioa_manager импортируем класс fm имеющий функции в основном используемые для сопряжения контактов MCU Kendryte k210 и его периферии (GPIO, I2C, I2S, UART и др.).
from board import board_info # из модуля board импортируем класс board_info имеющий функции считывающие текущие настройки MCU Kendryte k210
print(board_info.LED_R) # выводим на экран значение номера контакта MCU Kendryte k210 соединенного с контактом LED_R трехцветного светодиода)

fm.register (board_info.LED_R, fm.fpioa.GPIO0, force=True) # вызов функции регистрации для привязки вывода к конкретной аппаратной функции GPIO0
led_r = GPIO(GPIO.GPIO0, GPIO.OUT) # cсоздаём новый объект SPI с указанными параметрами (номер контракта, выход )
led_r.value(0) # включаем низкий уровень — светодиод горит

Зажигаем зеленый свет RGB светодиода

from Maix import GPIO
from fpioa_manager import fm
from board import board_info
print(board_info.LED_G)
fm.register(board_info.LED_G, fm.fpioa.GPIO0, force=True)
led_r = GPIO(GPIO.GPIO0, GPIO.OUT)
led_r.value(0)

Рис.7 Меняем в тексте, нашей первой программы на Python, переменную LED_R на LED_G (3) простым редактированием кода в MaixPy IDE и запускаем его. Как можно заметить в окне Последовательного терминала появился номер контакта 13 MCU Kendryte k210 (4)

 

Рис.8 После внесения изменений в программе, загрузки кода и запуска программы, вы обнаружите, что светодиодный индикатор (RGB)  горит! Горит зеленым огнем!

Зажигаем голубой свет RGB светодиода

from Maix import GPIO
from fpioa_manager import fm
from board import board_info
print(board_info.LED_B)
fm.register(board_info.LED_B, fm.fpioa.GPIO0, force=True)
led_r = GPIO(GPIO.GPIO0, GPIO.OUT)
led_r.value(0)

Рис.9 Меняем в тексте, нашей первой программы на Python, переменную LED_G на LED_B (5) простым редактированием кода в MaixPy IDE и запускаем его. Как можно заметить в окне Последовательного терминала появился номер контакта 12 MCU Kendryte k210 (6)

 

Рис.10 После внесения изменений в программе, загрузки кода и запуска программы, вы обнаружите, что светодиодный индикатор (RGB)  горит! Горит синим пламенем!