🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🌅 Проект: будильник на рассвет — звуковой сигнал при появлении дневного света

Большинство световых проектов на сайте включают что-то, когда становится ТЕМНО. Этот — наоборот: пороговый датчик света подаёт сигнал на зуммер, когда в комнате становится СВЕТЛО после ночи — простой будильник, который реагирует на естественный рассвет, а не на заданное время.

Как это работает

Пороговый модуль датчика света содержит фоторезистор и компаратор на одной плате: компаратор сравнивает уровень освещённости с порогом, который настраивается подстроечным резистором, и переключает цифровой выход при пересечении этого порога. В отличие от аналоговых проектов с фоторезистором или цифровых с BH1750/VEML7700 (которые дают число — конкретный уровень освещённости в условных единицах или люксах), здесь получается только простой факт "светлее порога" или "темнее порога", без промежуточных значений.

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

Пошаговая сборка

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

  1. Пороговый датчик света: цифровой выход (DO) → D2 Arduino, VCC → 5V, GND → GND.
  2. Зуммер: сигнал → D8, GND → GND.
  3. Настройте порог срабатывания подстроечным резистором на плате вечером, в условиях, близких к ожидаемому рассвету (не кромешная темнота и не яркий день).

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему. Полярность сигнала
// (светло = HIGH или LOW) проверьте на своём экземпляре платы.

const int SENSOR_PIN = 2;
const int BUZZER_PIN = 8;

bool wasDark = true; // считаем, что начинаем ночью

void setup() {
  Serial.begin(9600);
  pinMode(SENSOR_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
}

void loop() {
  bool isDark = (digitalRead(SENSOR_PIN) == LOW); // проверьте полярность на своей плате

  if (wasDark && !isDark) { // именно момент перехода темнота -> свет
    Serial.println("Рассвет! Будим.");
    for (int i = 0; i < 5; i++) {
      tone(BUZZER_PIN, 1800, 200);
      delay(400);
    }
  }

  wasDark = isDark;
  delay(1000);
}

Дополнительных библиотек не требуется — только встроенная `tone()`. Перед использованием проверьте в мониторе порта, какое значение (HIGH или LOW) соответствует "светло" именно на вашем экземпляре платы, и поправьте сравнение `== LOW` при необходимости.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 📢 тональная сирена на транзисторе TIP120, уп…🧊 ШИМ-регулировка мощности термоэлектрическо… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 132 ₽ 119 ₽ (экономия 13 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA