4. Программирование микроконтроллеров.md


Поздравляем! Вы прошли большой путь - познакомились с микроконтроллерами в первой главе, изучили основы электроники во второй и освоили язык программирования C++ в третьей. Теперь пришло время объединить все эти знания и начать создавать по-настоящему умные устройства!

В этой главе мы перейдём от теории к практике - вы узнаете, как с помощью кода управлять выводами платы Рудирон, считывать данные с датчиков и взаимодействовать с внешними устройствами через различные интерфейсы. Мы начнём с самых основ, чтобы вы почувствовали, как ваши программы оживляют электрические схемы.

Прежде чем писать код, давайте ближе познакомимся с возможностями, которые предоставляет плата Рудирон. Её «мозг» и «органы чувств» — это выводы, или пины, к которым подключаются светодиоды, кнопки, датчики и другие модули. Расположение и функции этих выводов описаны в распиновке (pinout) — это карта, которая поможет вам ориентироваться в выводах Рудирона.

Сердцем платы является отечественный микроконтроллер MDR32, который обладает впечатляющими для своих размеров характеристиками.

Вычислительная мощность:

  • Процессор. Работает на тактовой частоте до 80 МГц, что определяет скорость выполнения ваших команд.
  • Память. 32 кБ оперативной памяти (ОЗУ) для временных данных и 128 кБ постоянной памяти (ПЗУ) для хранения вашей программы. Этого более чем достаточно для большинства учебных и любительских проектов.

Взаимодействие с внешним миром:

  • Цифровые порты ввода-вывода (GPIO): 33 универсальных пина для управления простыми устройствами, такими как светодиоды, реле и кнопки.
  • Аналого-цифровой преобразователь (АЦП): 6 каналов для считывания аналоговых сигналов — например, с потенциометра, джойстика или фоторезистора.
  • Цифро-аналоговый преобразователь (ЦАП): 1 канал для генерации настоящего аналогового сигнала, что полезно для создания звука или точного управления напряжением.
  • Аппаратные прерывания: 2 канала позволяют микроконтроллеру мгновенно реагировать на внешние события (например, на нажатие кнопки), не отвлекаясь от выполнения основной программы.

Интерфейсы связи:

  • 2 интерфейса UART: Для обмена данными с компьютером или модулями (например, GPS или Bluetooth).
  • 2 интерфейса SPI: Для высокоскоростной работы с дисплеями, SD-картами или другими микроконтроллерами.
  • 1 интерфейс I2C: Позволяет подключить целую гирлянду датчиков, используя всего два провода.
  • Поддержка шины CAN: Промышленный стандарт, используемый в автомобильной электронике и системах автоматизации.
  • Программирование и отладка: Интерфейс SWD для подключения профессионального отладчика J-Link.

Одна из уникальных особенностей Рудирона — наличие разъёмов для прямого подключения популярных модулей, таких как NRF24L01 (для беспроводной радиосвязи) и ESP-01 (для Wi-Fi).

Важно понимать: выводы на этих разъёмах дублируют некоторые основные пины платы. Это значит, что если вы используете, например, модуль ESP-01, то пины, отвечающие за UART, будут заняты и их нельзя будет использовать для других задач. Это удобное решение, которое упрощает подключение, но требует внимания при проектировании схемы.


Готовы сделать первый шаг и научить Рудирон взаимодействовать с внешним миром? Переходите к следующему параграфу, чтобы освоить команды digitalWrite и digitalRead.