Курс Arduino с нуля · Большие проекты

Урок 31. Свой проект: от идеи до готового устройства

Финал курса. Без готовой схемы — вместо неё метод: шесть шагов от идеи на бумажке до прибора в корпусе, каркас программы, сквозной пример и восемь идей из деталей набора.

Урок 31 из 31⏱ примерно 45 минутОбновлено: 30 июля 2026

Что понадобится

  • Плата Uno из набора
  • Кабель USB
  • Макетная плата
  • Детали под вашу идею — из набора
  • Бумага и карандаш для схемы

Все детали есть в обучающем наборе, по которому идёт курс.

Это последний урок курса — и он не похож на остальные. Здесь не будет готовой схемы и программы, которую нужно повторить. Вместо этого — самый важный навык: как самому пройти путь от «а вот бы сделать…» до работающего прибора. Все тридцать уроков готовили вас именно к этому.

Из чего состоит любой прибор

Чувствуеткнопкиурок 10крутилкаурок 14светурок 15наклон и вибрацияурок 16магнитурок 17температура и влажностьурок 27Думаетпороги и гистерезисурок 15часы millisурок 11списки-массивыурок 13случайностьурок 21состояния прибораурок 24проверка кодаурок 29Действуетсветурок 5цветурок 9звукурок 19движение: сервоурок 22вращение: моторурок 23текст на экранеурок 26Соберите прибор как фразу: «когда он чувствует…, он решает… и действует…»
Карта ваших умений с номерами уроков-подсказок. Любое устройство курса — от ночника до сейфа — собрано из этих трёх колонок.

Присмотритесь к любому устройству вокруг — от чайника до лифта. Внутри всегда одна и та же троица: датчики чувствуют, программа думает, а прибор действует. Придумывая своё устройство, соберите его как фразу: «когда прибор чувствует…, он решает… и делает…». Если фраза сложилась — треть работы позади.

Шесть шагов от идеи до прибора

1. ИдеяОдной фразой: что приборделает и для кого.2. СценарийПо шагам на бумаге:«если… — то…», все случаи.3. Детали и выводыСписок деталей из набораи кто какой вывод занимает.4. Сборка по узламОдин узел — одна проверкадиагностическим скетчем.5. Программа кусочкамиКаждый кусочек прошили —проверили — идём дальше.6. Испытания и корпусПодбор порогов, поиск сбоев,коробка, подпись, премьера.не заработало — это нормально: вернитесь на шаг назад и проверьте узлы по одному
Путь, которым мы прошли каждый проект курса — от шлагбаума до игры. Теперь по нему пойдёт ваша собственная идея.
  • Идея. Одной фразой и для кого-то конкретного: «ночник для брата», «сторож для холодильника», «копилка, которая радуется монетам».
  • Сценарий. На бумаге, по шагам: что прибор делает в покое, что — при событии, что — если событие затянулось. Вспомните сейф: ввод, открытие, блокировка — мы сначала нарисовали его состояния, а уже потом писали код.
  • Детали и выводы. Выпишите детали из набора и сразу — кто какой вывод занимает. Этот список спасал нас в уроках 28–30, спасёт и вас.
  • Сборка по узлам. Никогда не собирайте всё сразу. Один узел — одна проверка: подключили датчик — напечатали его числа в монитор порта; подключили зуммер — пискнули. Так делал каждый наш проект в «Шаге 1».
  • Программа кусочками. По три-пять строк с прошивкой после каждого куска. Тридцать уроков мы писали код только так — это не учебный приём, это и есть нормальный способ.
  • Испытания и корпус. Подберите пороги по своим числам, помучайте прибор нечестными нажатиями, посадите в коробку — и устраивайте премьеру.

Пример: проходим путь целиком

Покажем метод на настоящей задаче. Идея: сторож для холодильника — пищать, если дверцу забыли закрыть. Сценарий: внутри холодильника при открытой дверце горит лампочка; если светло дольше двадцати секунд — напоминать звуком каждые две секунды; стало темно — замолчать. Детали: фоторезистор с резистором 10 кОм (схема из урока 15, вход A0) и зуммер (схема из урока 19, вывод 12). Два узла, оба уже собирали — вот и вся схема. Программа:

// Урок 31. Пример: сторож холодильника — пищит, если дверцу забыли.

const int LIGHT_PIN = A0;    // фоторезистор с резистором 10 кОм, как в уроке 15
const int BUZZER_PIN = 12;   // зуммер, как в уроке 19

const int LIGHT_LEVEL = 300;         // порог «внутри горит свет» — подберите свой!
const unsigned long LIMIT = 20000;   // сколько миллисекунд можно держать дверцу

unsigned long openedAt = 0;   // когда мы заметили свет
bool wasLight = false;

void setup() {
  Serial.begin(9600);   // монитор порта поможет подобрать порог
}

void loop() {
  int light = analogRead(LIGHT_PIN);
  Serial.println(light);   // закрытый и открытый холодильник дают разные числа

  bool isLight = (light > LIGHT_LEVEL);
  if (isLight && !wasLight) {
    openedAt = millis();   // свет только что зажёгся — засекаем время
  }
  wasLight = isLight;

  if (isLight && millis() - openedAt > LIMIT) {
    tone(BUZZER_PIN, 2000, 200);   // дверца открыта слишком долго!
    delay(1800);                   // напоминаем раз в две секунды
  }

  delay(100);
}

Испытания: положите датчик в холодильник, откройте монитор порта и посмотрите числа при закрытой и открытой дверце — своё пороговое число впишите вместо нашего. Если у вашего делителя числа от света не растут, а падают — просто переверните знак сравнения. Заметьте: в программе нет ни одной новой команды, только уроки 11, 15 и 19.

Каркас, с которого можно начинать

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

// Урок 31. Каркас любого устройства: собрать — решить — показать.
// Это не заготовка «на потом» — он уже работает: зажигает встроенный
// светодиод, когда число со входа A0 больше порога.

const int SENSOR_PIN = A0;   // сюда встанет ваш датчик
const int OUT_PIN = 13;      // а сюда — ваше действие
const int LEVEL = 500;       // порог: подберите свой по монитору порта

void setup() {
  Serial.begin(9600);        // монитор порта — глаза отладчика
  pinMode(OUT_PIN, OUTPUT);
  // Здесь же — подготовка каждой вашей детали: pinMode, lcd.begin и т.д.
}

void loop() {
  // 1. Собрать данные: опросить датчики и кнопки.
  int value = analogRead(SENSOR_PIN);

  // 2. Решить: сравнить с порогом, обновить состояние.
  bool needAction = (value > LEVEL);

  // 3. Показать: свет, звук, экран или движение.
  digitalWrite(OUT_PIN, needAction);

  Serial.println(value);     // всегда печатайте, что видит прибор
  delay(50);
}

Начните свой проект с него: подставьте свой датчик, своё действие — и наращивайте по кусочку. Строку с печатью в монитор не удаляйте до самого конца: это глаза, которыми вы видите, что на самом деле происходит внутри.

Правила, которые спасут

  • Не верьте догадкам — печатайте числа. Монитор порта показывает, что прибор видит на самом деле (урок 12).
  • Пороги всегда свои. Числа из чужих программ не работают: освещение, датчики и руки у всех разные (урок 15).
  • Ищите неисправность половинками. Не работает целое — проверьте узлы по отдельности: датчик отдельно, действие отдельно. Виновник найдётся за пару делений.
  • Кнопка дребезжит, деталь имеет полярность, канавка разрывает столбики. Три источника «мистики», закрывающие большинство загадок (уроки 4, 10, 11).
  • delay блокирует, millis — нет. Ждать можно, если ждать — вся работа; иначе стройте на часах (уроки 21 и 24).
  • Сложность — это состояния. Если прибор ведёт себя по-разному в разных режимах, нарисуйте состояния и переходы, как у шлагбаума и сейфа (уроки 24 и 29).

Идеи для первого проекта

  • Копилка с фанфарами — датчик вибрации ловит монету, зуммер играет туш, а экран считает вклады (уроки 16, 19, 26).
  • Дверной звонок с секретным стуком — вибрация считает удары: три удара — мелодия для своих (уроки 16, 19).
  • Умная теплица на подоконнике — DHT11 следит за жарой и сухостью, экран показывает, зуммер зовёт полить (уроки 26–28).
  • Шторка от солнца — фоторезистор чувствует солнце, сервопривод поворачивает картонную шторку (уроки 15, 22).
  • Вентилятор по жаре — DHT11 плюс мотор через транзистор: жарко — включился, остыло — затих (уроки 23, 27).
  • Гоночный светофор — три светодиода и кнопка: обратный отсчёт, случайная задержка и старт, фальстарт караулим как в уроке 21 (уроки 7, 21).
  • Охрана ящика стола — фоторезистор в тёмном ящике: открыли — сирена, а выключить может только секретный код (уроки 15, 29).
  • Магнитный турникет для игрушек — датчик Холла и сервопривод-шлагбаум: машинка с магнитиком проезжает сама (уроки 17, 24).

Что вы теперь умеете

  • читать и рисовать схемы, собирать их на макетке без пайки — с урока 4;
  • управлять светом, цветом и яркостью — блок «Управляем светом»;
  • слушать кнопки без дребезга и считать время без остановки — блок «Кнопки»;
  • читать датчики и принимать решения с порогами и гистерезисом — блок «Датчики»;
  • играть звуки и мелодии — блок «Звук»; двигать вещи — блок «Движение»;
  • показывать цифры и текст на индикаторе и экране — блок «Индикаторы и экраны»;
  • собирать из всего этого настоящие устройства — метеостанция, сейф, игра;
  • и главное — доводить свою идею до работающего прибора по шести шагам.

Курс окончен — тридцать один урок, десятки схем и программ, и всё это на деталях одного набора. Дальше — ваши собственные приборы. Возвращайтесь к урокам как к справочнику, подглядывайте в «Базу знаний» на этом сайте, показывайте свои устройства близким — и собирайте следующее. У вас теперь есть для этого всё.

Частые вопросы

С чего начать свой первый проект на Arduino?

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

Как выбрать детали для своей идеи?

Разложите идею на три части: что прибор чувствует, что решает и что делает. Под каждую часть в наборе есть деталь: кнопки, фоторезистор, DHT11, датчики наклона и Холла — чувствуют; светодиоды, зуммер, сервопривод, мотор и экран — действуют. Карта с номерами уроков есть в тексте.

Что делать, если собранное устройство не работает?

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

Можно ли собирать свои устройства без пайки?

Да. Весь курс собран на макетной плате: детали и провода просто вставляются в отверстия и переставляются сколько угодно раз. Пайка понадобится, только когда захотите сделать прибор насовсем.

Где брать справку по командам после курса?

Возвращайтесь к урокам как к справочнику — в конце каждого есть список того, что он объясняет. Подробные статьи по деталям и командам собраны в «Базе знаний» на этом сайте, а все программы курса открываются и работают в Trema IDE.

← Все уроки курса