Терабайт Студио

Ардуино

Здесь находятся прошивки, схемы и уроки по радиотехнике и платформе Ардуино.

Начальный этап (для новичков)

Ввод в радиотехнику

Если у Вас уже есть базовые знания по электронике, этот этап можно пропустить, если нет, читайте дальше.

Что такое электрический ток?

Электрический ток — это поток заряженных частиц, сила которого измеряется в амперах, а напряжение в вольтах.

Резистор

Резистор — это пассивный элемент электрической цепи, главное назначение которого — оказывать электрическое сопротивление току. Простыми словами, это «тормоз» для электронов. Он ограничивает силу тока, преобразуя лишнюю электрическую энергию в тепло.

Закон Ома
Работа резистора описывается формулой: U = I × R, где:

Из этой формулы следует, что чем больше сопротивление (R), тем меньше ток (I) при том же напряжении.

Конденсатор

Конденсатор — это устройство, которое используется для накопления электрического заряда и энергии электрического поля. Простыми словами, это как маленький аккумулятор, но работающий по-другому. Если аккумулятор накапливает энергию медленно (химическим путем) и отдает ее долго, то конденсатор накапливает заряд мгновенно и отдает его тоже почти мгновенно (за доли секунды).

Как он устроен:
Это две металлические пластины (обкладки), разделенные диэлектриком (изолятором — воздухом, бумагой, керамикой или специальной пленкой). Когда вы подаете напряжение, на одной пластине собираются электроны (минус), на другой — их нехватка (плюс). Так накапливается заряд.

Транзистор

Транзистор — это полупроводниковый прибор, который умеет делать две главные вещи:

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

Из чего он состоит (структура):
Транзистор имеет три вывода (электрода):

Что такое Ардуино?

Ардуино — это достаточно интересная платформа по созданию и программированию разнообразных устройств. Сама Ардуино является печатной платой нескольких типов, таких как Arduino Uno, Arduino Nano, Arduino Mega, а также многие другие. На любую из них можно загрузить свою прошивку. Для этого достаточно установить среду разработки Ардуино прошивок Arduino IDE с GitHub.

! Интересный факт !
У каждой Ардуино есть свой микроконтроллер, который состоит из сотен тысяч микротранзисторов. Микротранзистор — это очень маленький транзистор.

Команды

Для Ардуино существует большое количество команд. Самые простые из них это digitalWrite(), delay(). Команда digitalWrite() подаёт или не подаёт питание на указанный пин на плате, а команда delay() отсчитывает время в миллисекундах (1000 миллисекунд = 1 секунда). Из них и будет состоять Ваш первый код.

После установки и запуска Arduino IDE в основном текстовом поле появятся две цветные надписи void setup() {} и void loop() {}. Всё, что находится в модуле void setup() {} повторяется один раз при включении или перезагрузке платы, а модуль void loop() {} повторяет своё содержимое бесконечное количество раз. Всё что начинается с // является комментарием и к коду никакого отношения не имеет, они нужны только для разработчика, как ориентир.

Первый код

Ваш первый код будет выполнять очень простую функцию: помигает светодиодом на самой плате. Вот как он выглядит:

void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }

Скопируйте код и вставьте его в Arduino IDE. После этого нажмите кнопку "Загрузить на плату". Далее обратите внимание на один из светодиодов на плате, он должен мигать.

Принцип работы

В модуле void setup() {} команда pinMode(13, OUTPUT) указывает, что Вы работаете с пином 13 и устанавливает его в режим OUTPUT (выход). А в модуле void loop() {} находятся четыре команды. Команда digitalWrite(13, HIGH) подаёт питание на тринадцатый пин, потом благодаря команде delay(1000) плата ждёт одну секунду, digitalWrite(13, LOW) перестаёт подавать напряжение на пин 13, потом delay(1000) опять ждёт одну секунду. И весь этот цикл повторяется бесконечное количество раз. А светодиод мигает благодаря тому что он привязан к тринадцатому пину на самой плате.

Средний этап (для любителей)

Все команды

Помимо элементарных команд в Arduino IDE их есть ещё очень много. Они разделяются на категории и представлены ниже.

Управляющие Операторы

Эти команды управляют потоком выполнения программы: принимают решения и создают циклы.

Операторы

Используются для выполнения вычислений и сравнений

Переменные и Типы Данных

Определяют, какую информацию может хранить программа.

Основные Функции

Главные инструменты для управления выводами платы и получения данных.

Продвинутые и Специальные Функции

Для более сложных задач, таких как работа с прерываниями и связь с другими устройствами.

Этот список охватывает все основные команды языка Arduino. Также важно помнить, что существует множество библиотек, которые добавляют новые команды для работы с конкретными датчиками, дисплеями и модулями, что значительно расширяет возможности платформы.

Библиотеки

Часто для работы с такой периферией, как сервоприводы, светодиодные ленты, дисплеи и прочими модулями требуются библиотеки. Библиотека — это готовый код для работы с различными дополнениями для платы Ардуино. Библиотеки созданы для того, чтобы Вы не писали огромный код чтобы, например, по отдельности зажигать каждый светодиод на дисплее, а просто с помощью нескольких команд написать на дисплее любую фразу. Установить любую библиотеку можно в самой среде Arduino IDE. Для этого откройте её, выберите раздел Скетч >> Подключить библиотеку >> Управление библиотеками. В появившемся меню, в поисковик вставьте название нужной Вам библиотеки. Далее установите библиотеку, и в самом начале кода пропишите команду #include и название нужной библиотеки.

Теперь на основе полученных знаний Вы сможете собрать несколько интересных проектов, информация о которых представлена ниже.

Шаговик №1

В этом проекте Вы соберёте схему, которая заставит вращаться шаговый мотор 28BYJ-48 5VDC 15031801. Заказать его с драйвером можно на любом маркетплейсе, без драйвера мотор работать не будет.

Для проекта вам понадобится:

Далее соберите все компоненты по схеме:

Пин ArduinoПин драйвера ULN2003
8IN1
9IN2
10IN3
11IN4
5VVCC
GNDGND

Далее постарайтесь ознакомиться с кодом, представленным ниже.

#include <Stepper.h> #define IN1 8 #define IN2 9 #define IN3 10 #define IN4 11 #define JOYSTICK_X A0 const int stepsPerRevolution = 2048; Stepper myStepper(stepsPerRevolution, IN1, IN3, IN2, IN4); void setup() { // Максимальная стабильная скорость myStepper.setSpeed(18); // 18 об/мин — предел для 5В } void loop() { int joystickValue = analogRead(JOYSTICK_X); // Карта скорости: от -18 до +18 об/мин int speed = map(joystickValue, 0, 1023, -18, 18); if (abs(speed) < 2) { speed = 0; } // Устанавливаем скорость и делаем шаги myStepper.setSpeed(abs(speed)); if (speed > 0) { // 10 шагов за итерацию для более отзывчивого управления myStepper.step(10); } else if (speed < 0) { myStepper.step(-10); } // Убираем delay для максимальной скорости // Вместо delay используем microsecond-задержки в библиотеке Stepper }

После ознакомления скопируйте код и вставьте его в Arduino IDE. Проверьте, установлена ли библиотека Stepper. Если нет, установите. Затем нажмите "Загрузить на плату". Прошивка успешно загрузится.

Далее обратите внимание на мотор, его вал должен вращаться.

! Интересный факт !
Шаговый мотор от того и называют шаговым, потому что вращается по шагам.

Шаговик №2

На этот раз Ардуино будет вращать шаговик без библиотеки Stepper, которую Вы могли заметить в предыдущем примере кода. Преимущество этого способа — Вы можете тонко настраивать скорость, меняя delay().

// Пины драйвера int IN1 = 8; int IN2 = 9; int IN3 = 10; int IN4 = 11; // Последовательность для полного шага (4 шага) // Каждый массив из 4 чисел — это состояние пинов IN1-IN4 byte fullStepSequence[4][4] = { {1, 0, 0, 0}, // Шаг 1 {0, 1, 0, 0}, // Шаг 2 {0, 0, 1, 0}, // Шаг 3 {0, 0, 0, 1} // Шаг 4 }; void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } // Функция для подачи сигнала на определенный шаг void setStep(int step) { digitalWrite(IN1, fullStepSequence[step][0]); digitalWrite(IN2, fullStepSequence[step][1]); digitalWrite(IN3, fullStepSequence[step][2]); digitalWrite(IN4, fullStepSequence[step][3]); } void loop() { // Делаем 2048 шагов (один полный оборот) for (int i = 0; i < 2048; i++) { int step = i % 4; // Шаг 0, 1, 2, 3, 0, 1... setStep(step); delay(5); // Пауза между шагами (в миллисекундах) // Меньше число = выше скорость } delay(1000); // Теперь вращаем в обратную сторону for (int i = 0; i < 2048; i++) { int step = 3 - (i % 4); // Шаг 3, 2, 1, 0, 3, 2... setStep(step); delay(5); } delay(1000); }