Buzzer

Компоненты:

Этот компонент называется пьезоизлучатель или пьезодинамик, а в разговорной речи часто просто зуммер

  • 1 пьезоизлучатель
const int buzzerPin = 5;
const int songLength = 30;

// ноты: дважды фраза E E F G G F E D | C C D E E D D  и снова
char notes[] = "eefggfedccdeeddeefggfedccdedcc";

// длительности (1 = четверть, 2 = половина)
int beats[] = {
  // такт 1 (8 четвертных)
  1,1,1,1,1,1,1,1,
  // такт 2 (6 четвертных + половинная)
  1,1,1,1,1,1,2,
  // такт 3 повтор фразы 1 (8 четвертных)
  1,1,1,1,1,1,1,1,
  // такт 4 повтор фразы 2 (6 четвертных + половинная)
  1,1,1,1,1,1,2
};

int tempo = 210;  // длительность четвертной ноты в миллисекундах

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

void loop() {
  for (int i = 0; i < songLength; i++) {
    int duration = beats[i] * tempo;
    char n = notes[i];
    if (n == ' ') {
      delay(duration);
    } else {
      tone(buzzerPin, frequency(n), duration);
      delay(duration);
    }
    delay(tempo / 20);  // небольшой разрыв между нотами
  }
  while (true) {}       // зацикливать не будем
}

int frequency(char note) {
  const int numNotes = 7;
  char names[] = {'c','d','e','f','g','a','b'};
  int freqs[]   = {262,294,330,349,392,440,494};
  for (int i = 0; i < numNotes; i++) {
    if (names[i] == note) return freqs[i];
  }
  return 0;
}

Система сигнализации

Компоненты:

  • 1 LCD экран (1602)
  • 1 Потенциометр 
  • 1 Резистор 220 Ω
  • 1 Резистор 10 КΩ
  • Температурный датчик
  • Фоторезистр
  • Пьезоизлучатель

Для полноценной работы нам потребуется подключение к библиотеки led экрана и соед:

#include &lt;LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Условие 1 — перегрев (температура > 30 °C):

if (temperatureC > 30.0) {
  lcd.print("Hot Alarm!");
  tone(buzzerPin, 1500);      // Звук высокой частоты
  delay(1500); 
  noTone(buzzerPin);          // Отключение звука
}

Условие 2 — темно (свет > 200):

else if (lightLevel > 200) {
  lcd.print("Dark Alarm!");
  tone(buzzerPin, 1000);      // Звук средней частоты
  delay(1500);
  noTone(buzzerPin);
}

Если не два вехних — всё хорошо (нет Alarm):

else {
  lcd.print("All ok!");
  tone(buzzerPin, 440);       // Низкий короткий сигнал
  delay(100);
  noTone(buzzerPin);
}

Видео

Ради проверки работы с повышенными температурами, испытывающему пришлось обжечь пальцу о горячую поверхность. Но как видим все работает