Arduino Nano: 5 пошаговых проектов для начинающих электроников

Пройдите тест, узнайте какой профессии подходите
Сколько вам лет
0%
До 18
От 18 до 24
От 25 до 34
От 35 до 44
От 45 до 49
От 50 до 54
Больше 55

Для кого эта статья:

  • Начинающие разработчики и студенты в области электроники
  • Преподаватели и наставники в кружках робототехники и технологий
  • Хоббисты и любители DIY, заинтересованные в создании проектов с Arduino

    Помню свое первое знакомство с Arduino Nano — маленькой платой, открывшей для меня целый мир электроники. 🔍 От непонимания, как подключить простейший светодиод, до создания "умных" устройств — путь, который проходит каждый начинающий. В этой статье мы разберем 5 пошаговых проектов, требующих минимум компонентов и знаний, но дающих максимум понимания. С готовыми схемами и детальными комментариями в коде вы удивитесь, как быстро сможете превратить набор проводов и микроконтроллер в работающее устройство!

Если Arduino кажется вам интересным, но вы хотите расширить свои возможности в программировании, обратите внимание на Обучение Python-разработке от Skypro. Python отлично дополняет навыки работы с Arduino, позволяя создавать более сложные системы с веб-интерфейсами, обработкой данных и машинным обучением. Многие мои студенты, начав с Arduino, успешно осваивают Python для расширения функционала своих проектов.

Arduino Nano для начинающих: основы работы и настройка

Arduino Nano — компактная плата размером всего 45×18 мм, но функционально почти идентичная своему старшему брату Arduino Uno. Эта миниатюрность делает Nano идеальным выбором для проектов с ограниченным пространством и мобильных устройств. 🔋

Прежде чем приступить к проектам, необходимо настроить среду разработки и подготовить плату:

  1. Загрузите и установите Arduino IDE с официального сайта arduino.cc
  2. Подключите Arduino Nano к компьютеру через кабель micro-USB
  3. В меню "Инструменты" выберите "Плата: Arduino Nano"
  4. Выберите правильный процессор (ATmega328P или ATmega328P (Old Bootloader))
  5. Выберите порт, к которому подключена ваша плата

Часто новички сталкиваются с проблемой определения платы в системе. Если Arduino IDE не видит вашу плату, вероятно, вам потребуется установить драйвер CH340 или FT232, в зависимости от того, какой чип USB-UART используется на вашей версии Nano.

Характеристика Arduino Nano Arduino Uno
Микроконтроллер ATmega328P ATmega328P
Рабочее напряжение
Входное напряжение 7-12В 7-12В
Цифровые выводы 14 (6 с ШИМ) 14 (6 с ШИМ)
Аналоговые входы 8 6
Размеры 45×18 мм 68×53 мм

Важно понимать расположение пинов на Arduino Nano. В отличие от Arduino Uno, где пины расположены по краям платы, на Nano они идут в два ряда с обеих сторон платы. Обратите внимание на следующие ключевые пины:

  • Цифровые пины: D0-D13 (из них D3, D5, D6, D9, D10, D11 поддерживают ШИМ)
  • Аналоговые пины: A0-A7 (могут использоваться и как цифровые)
  • Питание: 5V, 3.3V, GND
  • AREF: опорное напряжение для аналоговых входов

Алексей Петров, преподаватель электроники

Помню свой первый опыт с Arduino Nano, когда вел кружок робототехники для школьников. Дети, никогда не державшие в руках паяльник, были напуганы количеством проводов и терминологией. Решение пришло неожиданно – мы начали с визуализации. Нарисовали большую схему Nano на ватмане и раскрасили пины разными цветами: питание – красным, "земля" – черным, цифровые – синим, аналоговые – зеленым.

Затем провели игру, где нужно было на скорость найти нужный пин на реальной плате. Это сняло барьер "страшной микросхемы", и уже через 30 минут дети свободно ориентировались в пинах. Теперь я всегда начинаю с такой визуализации – это помогает новичкам быстрее запомнить распиновку и снимает страх перед "сложной электроникой".

Пошаговый план для смены профессии

Мигающий светодиод: первый проект с пошаговой схемой

Мигающий светодиод (Blink) — это "Hello World" в мире Arduino. 💡 Этот простейший проект позволяет понять основы подключения компонентов и написания кода.

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

  • Arduino Nano
  • Светодиод (любого цвета)
  • Резистор 220-330 Ом
  • Макетная плата
  • Соединительные провода

Схема подключения:

  1. Подключите длинную ножку светодиода (анод, +) к цифровому пину D13 Arduino Nano через резистор
  2. Подключите короткую ножку светодиода (катод, -) к пину GND (земля) Arduino Nano

Код для загрузки в Arduino:

cpp
Скопировать код
// Программа для мигания светодиодом
// Подключаем светодиод к пину 13
const int ledPin = 13;

void setup() {
  // Инициализируем пин как выход
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);   // Включаем светодиод
  delay(1000);                  // Ждем секунду
  digitalWrite(ledPin, LOW);    // Выключаем светодиод
  delay(1000);                  // Ждем еще секунду
}

Объяснение кода:

  • const int ledPin = 13; — объявляем константу с номером пина, к которому подключен светодиод
  • setup() — функция, которая выполняется один раз при запуске Arduino
  • pinMode(ledPin, OUTPUT); — настраиваем указанный пин как выход
  • loop() — функция, которая выполняется бесконечно после setup()
  • digitalWrite(ledPin, HIGH); — подаем высокий уровень сигнала (5В) на пин, что включает светодиод
  • delay(1000); — задержка на 1000 миллисекунд (1 секунда)
  • digitalWrite(ledPin, LOW); — подаем низкий уровень сигнала (0В) на пин, что выключает светодиод

После загрузки кода в Arduino Nano ваш светодиод должен начать ритмично мигать: секунду гореть, секунду не гореть. Если этого не происходит, проверьте правильность подключения (особенно полярность светодиода) и убедитесь, что код успешно загрузился.

Модификации проекта для экспериментов:

  • Измените время задержки, чтобы светодиод мигал быстрее или медленнее
  • Добавьте второй светодиод и заставьте их мигать попеременно
  • Создайте последовательность мигания, напоминающую азбуку Морзе
  • Используйте функцию analogWrite() вместо digitalWrite() для плавного изменения яркости (только на пинах с поддержкой ШИМ)

Проекты с датчиками: измеряем температуру и расстояние

Датчики — глаза и уши вашего Arduino, позволяющие ему взаимодействовать с окружающим миром. 🌡️ Начнем с двух популярных и простых в использовании датчиков.

1. Измеритель температуры с датчиком DS18B20

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

  • Arduino Nano
  • Датчик DS18B20 (водонепроницаемый или обычный)
  • Резистор 4.7 кОм
  • Макетная плата
  • Соединительные провода

Схема подключения:

  1. Подключите VDD (обычно красный провод) датчика к 5V на Arduino
  2. Подключите GND (черный провод) к GND на Arduino
  3. Подключите DATA (желтый или белый провод) к цифровому пину D2 на Arduino
  4. Установите подтягивающий резистор 4.7 кОм между VDD и DATA

Для работы с DS18B20 необходимо установить две библиотеки: OneWire и DallasTemperature. Сделать это можно через меню "Скетч" > "Подключить библиотеку" > "Управлять библиотеками", затем найти и установить эти библиотеки.

Код для измерения температуры:

cpp
Скопировать код
// Подключаем необходимые библиотеки
#include <OneWire.h>
#include <DallasTemperature.h>

// Определяем пин, к которому подключен датчик
#define ONE_WIRE_BUS 2

// Создаем экземпляр класса OneWire и передаем ему номер пина
OneWire oneWire(ONE_WIRE_BUS);

// Передаем ссылку на OneWire библиотеке DallasTemperature
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(9600); // Инициализируем последовательный порт
  Serial.println("Измеритель температуры DS18B20");
  
  // Запускаем библиотеку
  sensors.begin();
}

void loop() {
  // Запрашиваем температуру
  sensors.requestTemperatures();
  
  // Выводим температуру в градусах Цельсия
  float temperatureC = sensors.getTempCByIndex(0);
  
  // Проверяем успешность считывания
  if(temperatureC != DEVICE_DISCONNECTED_C) {
    Serial.print("Температура: ");
    Serial.print(temperatureC);
    Serial.println(" °C");
  } else {
    Serial.println("Ошибка при считывании данных");
  }
  
  delay(1000); // Пауза между измерениями
}

Загрузите код и откройте монитор последовательного порта (Ctrl+Shift+M или через меню "Инструменты"). Вы увидите показания температуры, обновляющиеся каждую секунду.

2. Измеритель расстояния с ультразвуковым датчиком HC-SR04

HC-SR04 — популярный ультразвуковой датчик для измерения расстояния. 📏 Для проекта понадобятся:

  • Arduino Nano
  • Ультразвуковой датчик HC-SR04
  • Макетная плата
  • Соединительные провода

Схема подключения:

  1. VCC датчика подключите к 5V на Arduino
  2. GND датчика к GND на Arduino
  3. Trig датчика к цифровому пину D7 на Arduino
  4. Echo датчика к цифровому пину D8 на Arduino

Код для измерения расстояния:

cpp
Скопировать код
// Определяем пины для подключения датчика
const int trigPin = 7;
const int echoPin = 8;

// Объявляем переменные для хранения длительности импульса и расстояния
long duration;
int distance;

void setup() {
  // Инициализируем последовательный порт
  Serial.begin(9600);
  
  // Настраиваем пины
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // Очищаем trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  
  // Устанавливаем trigPin в HIGH на 10 микросекунд
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Считываем echoPin, возвращает время путешествия звуковой волны в микросекундах
  duration = pulseIn(echoPin, HIGH);
  
  // Рассчитываем расстояние
  // Скорость звука в воздухе примерно 343 м/с или 0.0343 см/мкс
  // Время, которое измеряется – это время туда и обратно, поэтому делим на 2
  distance = duration * 0.034 / 2;
  
  // Выводим результат в монитор порта
  Serial.print("Расстояние: ");
  Serial.print(distance);
  Serial.println(" см");
  
  delay(500); // Пауза между измерениями
}

Датчик Диапазон измерений Точность Применение
DS18B20 -55°C до +125°C ±0.5°C Бытовая автоматика, аквариумы, теплицы
HC-SR04 2 см – 400 см ±3 мм Роботы, сигнализации, автоматические двери
DHT11 0°C до 50°C, 20% до 90% влажности ±2°C, ±5% Метеостанции, системы климат-контроля
PIR (движение) До 7 м 110° угол обзора Охранные системы, автоматическое освещение

Загрузите код и откройте монитор последовательного порта. При перемещении объекта перед датчиком вы увидите изменение измеренного расстояния.

Марина Соколова, руководитель кружка робототехники

Работая с группой подростков 13-15 лет, я столкнулась с интересной ситуацией. Один из мальчиков, Дима, крайне замкнутый и неуверенный в себе, постоянно сомневался в своих способностях. На занятии с ультразвуковым датчиком он подключил всё правильно, но код не работал — датчик показывал случайные значения.

Вместо того чтобы указать на ошибку, я предложила ему стать "детективом" и самостоятельно найти проблему. Через 20 минут Дима обнаружил, что перепутал номера пинов в коде (но не в подключении). Его лицо буквально осветилось, когда он исправил ошибку и датчик заработал!

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

Интерактивные устройства: кнопки и светодиодная индикация

Взаимодействие человека с Arduino — важная часть большинства проектов. Научимся создавать простые интерактивные устройства с кнопками и светодиодной индикацией. 👆

Для этого раздела нам понадобится базовое понимание концепции подтягивающих резисторов (pull-up/pull-down). Кнопки и другие механические переключатели требуют определенной схемы подключения, чтобы избежать "плавающего" состояния пина, когда кнопка не нажата.

1. Управление светодиодом с помощью кнопки

Создадим простую схему, где при нажатии на кнопку загорается светодиод. Для этого проекта потребуются:

  • Arduino Nano
  • Тактовая кнопка
  • Светодиод
  • Резистор 220-330 Ом (для светодиода)
  • Резистор 10 кОм (подтягивающий для кнопки)
  • Макетная плата
  • Соединительные провода

Схема подключения:

  1. Подключите одну ножку кнопки к 5V
  2. Подключите вторую ножку кнопки к пину D2 и через резистор 10 кОм к GND (схема pull-down)
  3. Подключите анод светодиода (+, длинная ножка) через резистор 220 Ом к пину D3
  4. Подключите катод светодиода (-, короткая ножка) к GND

Код для управления светодиодом:

cpp
Скопировать код
// Определяем пины
const int buttonPin = 2;  // Пин с кнопкой
const int ledPin = 3;     // Пин со светодиодом

// Переменные для хранения состояния
int buttonState = 0;

void setup() {
  // Инициализируем пины
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
  // Считываем состояние кнопки
  buttonState = digitalRead(buttonPin);

  // Проверяем, нажата ли кнопка
  if (buttonState == HIGH) {
    digitalWrite(ledPin, HIGH);  // Включаем светодиод
  } else {
    digitalWrite(ledPin, LOW);   // Выключаем светодиод
  }
}

Этот базовый код можно модифицировать, чтобы реализовать более сложные функции:

2. Переключатель состояния (toggle) с использованием кнопки

В этой модификации каждое нажатие кнопки будет менять состояние светодиода (вкл/выкл), а не просто зажигать его во время нажатия:

cpp
Скопировать код
const int buttonPin = 2;
const int ledPin = 3;

int ledState = LOW;         // текущее состояние светодиода
int lastButtonState = LOW;  // предыдущее состояние кнопки

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT);
}

void loop() {
  // Считываем текущее состояние кнопки
  int buttonState = digitalRead(buttonPin);

  // Сравниваем с предыдущим состоянием
  if (buttonState != lastButtonState) {
    // Если состояние изменилось и кнопка нажата
    if (buttonState == HIGH) {
      // Меняем состояние светодиода на противоположное
      ledState = !ledState;
      digitalWrite(ledPin, ledState);
    }
    // Небольшая задержка для устранения дребезга контактов
    delay(50);
  }
  
  // Сохраняем текущее состояние как предыдущее для следующей итерации
  lastButtonState = buttonState;
}

Эта схема демонстрирует важный концепт в программировании Arduino — обработку изменений состояния (state change detection) вместо постоянного опроса состояния.

3. Светодиодная индикация с несколькими уровнями

Создадим "индикатор уровня" с несколькими светодиодами, которые загораются в зависимости от значения с аналогового входа (например, потенциометра):

Для этого проекта потребуются:

  • Arduino Nano
  • Потенциометр (10-100 кОм)
  • 4-5 светодиодов разных цветов
  • Резисторы 220-330 Ом по количеству светодиодов
  • Макетная плата
  • Соединительные провода

Схема подключения:

  1. Подключите крайние выводы потенциометра к 5V и GND
  2. Подключите средний вывод потенциометра к аналоговому входу A0
  3. Подключите светодиоды через резисторы к пинам D3, D5, D6, D9 (выбраны пины с ШИМ)
  4. Катоды всех светодиодов подключите к GND

Код для управления индикатором уровня:

cpp
Скопировать код
// Определяем пины для светодиодов
const int ledPins[] = {3, 5, 6, 9};
const int numLeds = 4;

// Пин потенциометра
const int potPin = A0;

void setup() {
  // Настраиваем пины светодиодов как выходы
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
}

void loop() {
  // Считываем значение с потенциометра (0-1023)
  int sensorValue = analogRead(potPin);
  
  // Определяем, сколько светодиодов должно гореть
  // Делим диапазон 0-1023 на 4 сегмента
  int ledsToLight = map(sensorValue, 0, 1023, 0, numLeds);
  
  // Зажигаем нужное количество светодиодов
  for (int i = 0; i < numLeds; i++) {
    if (i < ledsToLight) {
      digitalWrite(ledPins[i], HIGH); // Зажигаем
    } else {
      digitalWrite(ledPins[i], LOW);  // Гасим
    }
  }
  
  // Короткая задержка для стабильности
  delay(20);
}

Для более плавного эффекта можно модифицировать код, используя функцию analogWrite() для ШИМ-пинов, что позволит регулировать яркость светодиодов:

cpp
Скопировать код
// Модифицированная версия с плавной регулировкой яркости
void loop() {
  int sensorValue = analogRead(potPin);
  
  // Для каждого светодиода определяем яркость
  for (int i = 0; i < numLeds; i++) {
    // Вычисляем пороговые значения для каждого светодиода
    int thresholdLow = i * (1023 / numLeds);
    int thresholdHigh = (i + 1) * (1023 / numLeds);
    
    if (sensorValue < thresholdLow) {
      // Ниже порога – выключен
      analogWrite(ledPins[i], 0);
    } else if (sensorValue > thresholdHigh) {
      // Выше верхнего порога – полная яркость
      analogWrite(ledPins[i], 255);
    } else {
      // В диапазоне – плавное увеличение яркости
      int brightness = map(sensorValue, thresholdLow, thresholdHigh, 0, 255);
      analogWrite(ledPins[i], brightness);
    }
  }
  
  delay(20);
}

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

Полезные мини-проекты на Arduino Nano с готовыми схемами

В этом разделе собраны практичные мини-проекты, которые можно собрать быстро и получить полезное устройство. 🛠️ Каждый проект включает готовую схему, список компонентов и полностью рабочий код.

1. Метеостанция с датчиком DHT11/DHT22

Создайте простую домашнюю метеостанцию, которая измеряет температуру и влажность воздуха.

Компоненты:

  • Arduino Nano
  • Датчик DHT11 или DHT22
  • ЖК-дисплей 16x2 с I2C адаптером
  • Резистор 10 кОм (если ваш DHT не имеет встроенного)
  • Макетная плата и провода

Схема подключения:

  1. DHT11/22: VCC к 5V, GND к GND, DATA к пину D4
  2. I2C дисплей: VCC к 5V, GND к GND, SDA к A4, SCL к A5
cpp
Скопировать код
// Подключаем необходимые библиотеки
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Настройка датчика DHT
#define DHTPIN 4
#define DHTTYPE DHT11 // Заменить на DHT22 при необходимости
DHT dht(DHTPIN, DHTTYPE);

// Настройка дисплея (адрес 0x27 для 16x2)
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  dht.begin();
  lcd.init();
  lcd.backlight();
  
  lcd.print("Метеостанция");
  lcd.setCursor(0, 1);
  lcd.print("Инициализация...");
  delay(2000);
}

void loop() {
  // Считываем влажность и температуру
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // Проверяем, корректны ли полученные значения
  if (isnan(h) || isnan(t)) {
    lcd.clear();
    lcd.print("Ошибка датчика!");
    Serial.println("Ошибка считывания с DHT!");
    delay(2000);
    return;
  }

  // Выводим данные на дисплей
  lcd.clear();
  lcd.print("Темп: ");
  lcd.print(t);
  lcd.print(" C");
  lcd.setCursor(0, 1);
  lcd.print("Влаж: ");
  lcd.print(h);
  lcd.print(" %");

  // Выводим в монитор порта для отладки
  Serial.print("Влажность: ");
  Serial.print(h);
  Serial.print(" %, Температура: ");
  Serial.print(t);
  Serial.println(" °C");

  // Обновляем показания каждые 5 секунд
  delay(5000);
}

2. Автоматическая подсветка с фоторезистором

Создайте систему, которая автоматически включает светодиод или реле при наступлении темноты.

Компоненты:

  • Arduino Nano
  • Фоторезистор (LDR)
  • Резистор 10 кОм
  • Светодиод
  • Резистор 220 Ом (для светодиода)
  • Макетная плата и провода

Схема подключения:

  1. Подключите один вывод фоторезистора к 5V
  2. Другой вывод фоторезистора подключите к аналоговому пину A0 и через резистор 10 кОм к GND
  3. Подключите анод светодиода через резистор 220 Ом к пину D9
  4. Подключите катод светодиода к GND
cpp
Скопировать код
// Определяем пины
const int photoPin = A0;  // Фоторезистор
const int ledPin = 9;     // Светодиод (ШИМ-пин для плавного управления)

// Настройки порогов освещенности
const int thresholdDark = 300;   // Порог темноты
const int thresholdBright = 700; // Порог яркости

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // Считываем значение с фоторезистора
  int lightLevel = analogRead(photoPin);
  
  // Выводим в монитор порта для отладки
  Serial.print("Уровень освещенности: ");
  Serial.println(lightLevel);
  
  // Логика управления светодиодом
  if (lightLevel < thresholdDark) {
    // В темноте включаем светодиод на полную яркость
    analogWrite(ledPin, 255);
  } else if (lightLevel > thresholdBright) {
    // При ярком свете выключаем светодиод
    analogWrite(ledPin, 0);
  } else {
    // В промежуточных условиях регулируем яркость
    int brightness = map(lightLevel, thresholdDark, thresholdBright, 255, 0);
    analogWrite(ledPin, brightness);
  }
  
  delay(100); // Небольшая задержка для стабильности
}

3. Музыкальный дверной звонок с пьезоэлементом

Создайте простой дверной звонок, который воспроизводит мелодию при нажатии на кнопку.

Компоненты:

  • Arduino Nano
  • Тактовая кнопка
  • Пьезоэлемент (зуммер)
  • Резистор 10 кОм
  • Макетная плата и провода

Схема подключения:

  1. Подключите одну ножку кнопки к 5V
  2. Вторую ножку кнопки подключите к пину D2 и через резистор 10 кОм к GND
  3. Подключите положительный вывод пьезоэлемента к пину D8
  4. Отрицательный вывод пьезоэлемента подключите к GND
cpp
Скопировать код
// Определяем пины
const int buttonPin = 2;  // Кнопка
const int buzzerPin = 8;  // Пьезоэлемент

// Определяем ноты
#define NOTE_C4  262
#define NOTE_D4  294
#define NOTE_E4  330
#define NOTE_F4  349
#define NOTE_G4  392
#define NOTE_A4  440
#define NOTE_B4  494
#define NOTE_C5  523

// Мелодия "Для Элизы" (упрощенная версия)
int melody[] = {
  NOTE_E4, NOTE_D4, NOTE_E4, NOTE_D4, NOTE_E4, NOTE_B4, NOTE_D4, NOTE_C4, NOTE_A4,
  0, NOTE_C4, NOTE_E4, NOTE_A4, NOTE_B4, 0, NOTE_E4, NOTE_G4, NOTE_B4, NOTE_C5
};

// Длительность нот (1 – целая нота, 4 – четвертная, 8 – восьмая и т.д.)
int noteDurations[] = {
  8, 8, 8, 8, 8, 8, 8, 8, 4,
  8, 8, 8, 8, 4, 8, 8, 8, 8, 4
};

// Переменные для отслеживания состояния кнопки
int lastButtonState = LOW;
bool playMelody = false;

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  // Считываем состояние кнопки
  int buttonState = digitalRead(buttonPin);
  
  // Проверяем, было ли нажатие кнопки
  if (buttonState != lastButtonState) {
    if (buttonState == HIGH) {
      playMelody = true;
    }
    delay(50);  // Задержка для устранения дребезга контактов
  }
  
  lastButtonState = buttonState;
  
  // Если нужно проиграть мелодию
  if (playMelody) {
    // Проигрываем мелодию
    for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
      if (melody[i] == 0) {
        // Пауза
        delay(1000 / noteDurations[i]);
      } else {
        // Играем ноту
        tone(buzzerPin, melody[i], 1000 / noteDurations[i]);
        delay(1000 / noteDurations[i] * 1.3); // Небольшая пауза между нотами
        noTone(buzzerPin);
      }
    }
    
    playMelody = false;  // Сбрасываем флаг после проигрывания
  }
}

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

Освоение Arduino Nano через практические проекты открывает удивительные возможности в мире электроники. Начав с простого мигания светодиода и дойдя до создания метеостанции, вы приобретаете не просто набор навыков, а новый способ мышления. Каждый реализованный проект становится ступенькой к более сложным системам и уникальным изобретениям. Помните, что главное в этом пути – практика и эксперименты, которые превращают теоретические знания в работающие устройства.

Читайте также

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Что такое Arduino Nano?
1 / 5

Загрузка...