Популярность платформы программирования Arduino возросла до такой степени, что большинство людей знакомы с базовой архитектурой Arduino и ее различными поддерживающими сетями. В результате, начать работу со схемами на базе Arduino легко, даже человеку не имеющего технического образования. Конечно же, большинство начинающих пишут код для Arduino на ее родном языке - Wiring (по сути это почти как язык С), хотя можно использовать и такой широко популярный язык программирования как Python.
Но мало кто знает, что для работы с платформой Arduino можно использовать и такой нишевой, но весьма эффективный в ряде случаев такой язык как Rust. В данной статье мы рассмотрим основы программирования платы Arduino Uno на языке программирования Rust.
Изучение Rust — это важный и сложный шаг, даже для разработчиков, которые привыкли разрабатывать коды с использованием других языков программирования. Опыт разработки сильно отличается от языка к языку, но основы достаточно просты для понимания с помощью всего нескольких книг и виртуального обучения. Хотя первые несколько дней могут показаться запутанными и разочаровывающими, они будут более чем достойны усилий.
Но что представляет собой язык программирования Rust?
Язык программирования Rust
Rust — это язык программирования, который существует уже около десяти лет. Однако это гораздо больше, чем просто язык программирования. Это экосистема, состоящая из инструментов, которые потенциально могут предложить гораздо больше, чем раньше. Rust предлагает несколько преимуществ по сравнению с другими языками программирования, например, он безопасен для памяти, высококонкурентен и эффективен для параллельного кода.
Он также предоставляет объектно-ориентированные возможности, которых не хватает обычным процедурным языкам, таким как C или C++.
Кроме того, встроенные системы Rust расширились и включают несколько интересных библиотек. Вы можете получить массу удовольствия от встроенных систем, воспользовавшись этими библиотеками. Это одна из многих причин, по которым множество разработчиков предпочитают использовать Rust в качестве основного языка программирования.
Примеры использования Rust
Rust используется в ситуациях программирования, сосредоточенных на безопасности при работе с управлением памятью и параллелизмом. Это важная часть программного обеспечения в современном мире программирования. Rust необходим в программировании в случаях, когда ресурсы ограничены, особенно при работе с конфиденциальными данными или программами, которые могут потенциально нанести вред, если будут вести себя неправильно.
Внедрив в Arduino самый любимый язык программистов, Rust, вы увидите множество преимуществ, предоставляемых Rust, которые принесут пользу вашим проектам способами, о которых вы и не подозревали. Но сначала давайте глубже разберемся с Arduino.
Об Ардуино
Arduino — это аппаратная платформа с открытым исходным кодом, основанная на простой плате микроконтроллера. Она предназначена для художников, дизайнеров и любителей, с различными видами плат, предлагающими различные функции и возможности. Если вы знакомы с платформой Arduino, вы могли подумать, что это просто еще один инструмент для прототипирования электроники. Однако это далеко от истины. Сообщество Arduino выросло (можете прочитать историю его успеха) и стало большой частью того, что известно как Интернет вещей (IoT).
Экосистема Arduino состоит не только из оборудования в том, как оно используется. Она даже поддерживает несколько языков программирования, включая C++ и C. Однако, если вы только начинаете работать с Arduino, вы, скорее всего, будете использовать Arduino IDE для большинства своих разработок.
В этом контексте нам придется иметь дело с новым языком программирования Rust. Понимание того, что такое Rust и как с ним работать, потребует некоторых исследований и знакомства с явным управлением памятью и тем, как компилятор может выводить информацию о программе во время компиляции, а не во время выполнения (например, в динамически типизированном языке, таком как Python).
Изучаем Rust для Arduino
По большей части, начало работы с Rust для Arduino похоже на изучение любого другого языка программирования. Вам придется немного почитать и изучить базовый синтаксис и концепции, так что вам придется потратить на это время.
Самое важное, что следует отметить, это то, что Rust не предоставляет полезного механизма для обработки сбоев (по крайней мере, не так, как можно было бы ожидать от таких языков, как Java или Python), и многие ошибки считаются ошибками программиста. Поэтому изучение Rust потребует большей осторожности в отношении анализа данных, очистки входных данных и подобных задач.
Как запустить код Rust на Arduino
При написании программы Arduino первое, что нужно учесть, — это то, как будет использоваться плата. Процесс запуска кода на Arduino сильно отличается от других языков. Сначала вам нужно создать скетч с помощью Arduino IDE. После этого загрузить скетч на плату. Этот скетч должен иметь все функции, необходимые для его запуска, включая исполняемый код, встроенные переменные и функции настройки, которые вызываются во время выполнения.
После компиляции кода его необходимо загрузить на плату. Программисту необходимо подключить провод от контакта A через ряд резисторов к GND (земле). Если код выполняется как приложение на компьютере, он сначала скомпилирует и загрузит программу перед запуском.
Давайте напишем код Rust для Arduino
Процесс будет почти идентичен, если вы использовали Arduino. Вам придется создать новый скетч, подключить схему к плате, скомпилировать и загрузить ее. Мы не будем беспокоиться об этом шаге, так как мы ничего не можем сделать с ошибками. Поэтому давайте начнем писать код!
Rust для Arduino поставляется с rust/rustc-serialize, который управляет сериализацией структур данных Rust. Поэтому давайте его использовать!
1 2 3 |
extern crate rustc_serialize; ... let hello_str = serialize_str!(Hello from Rust on the Arduino board); print!("Hello {}!", h |
Мы можем использовать макрос serialize_str! для преобразования нашей структуры данных Rust в строковое представление ASCII, которое может быть распечатано позже. Библиотека serde делает это, проходя по структуре и ища специальный вид маркера, называемый тегами. Это будет вам знакомо, если вы когда-либо разрабатывали подобный код с использованием C++ или C#.
Что, если бы мы хотели большей гибкости, позволяя пользователям предоставлять свою структуру? Если бы мы использовали другой язык, мы, вероятно, сделали бы ее глобальной переменной и разрешили бы доступ из любого места. Для этого нам придется создать новый файл с именем rust_program.rs и определить одну структуру, которая будет разрешена для передачи модулем.
1 2 3 4 |
// rust_program.rs struct ArduinoStr { } ... let hello_str = serialize_str!(ArduinoStr { name: "Arduino"}); print!("Hello {}!", hello_str); // |
Rust для Arduino не является полнофункциональным, поэтому нам нужно предоставить методы доступа. Это не обязательно для других языков программирования из-за их строгой проверки типов. Rust для Arduino считывает структуры данных Rust очень нестандартным способом. Он также не предоставляет инструментов для преобразования структур данных Rust в другие форматы, такие как Prolog или JSON.
В этом случае мы просто хотим распечатать данные. Поэтому мы будем использовать println! вместо println!(ArduinoStr f) .
Вот и все! Мы создали и запустили нашу первую программу Rust на плате Arduino. Но зачем нам сначала сериализовать структуру Rust? Это просто удобство, как и использование IO.puts!(String s), когда вы хотите распечатать строку из файла.
Заключение
Цель этой статьи — научить программистов работать с Rust, причинами принятия этого языка программирования и вариантами использования Rust, включая проекты Arduino. Также здесь вы найдете советы о том, как написать простую программу Rust, которую затем можно скомпилировать и загрузить на плату Arduino.
Процесс написания кодов с использованием Rust идентичен любому другому языку программирования на платформе Arduino, с некоторыми незначительными отличиями в обработке ошибок или структурах данных. Сериализация структур данных Rust проста и интуитивно понятна благодаря использованию тегов.
Вот и все! Используя Rust на платформе Arduino, вы можете часто запускать идеи проектов Rust и со временем улучшать свои навыки программирования.
30 просмотров