Your cart is currently empty!


♦
Jekaterina Guzek, Õpimapp / Portfolio
Компоненты:
Этот компонент называется пьезоизлучатель или пьезодинамик, а в разговорной речи часто просто зуммер
Схема:
Код:
// Воспроизведение мелодий.
// Команда Arduino tone() — частота звука для ноты.
// Ноты:
// note частота (Гц)
// c 262 Гц
// d 294 Гц
// e 330 Гц
// f 349 Гц
// g 392 Гц
// a 440 Гц
// b 494 Гц
// C 523 Гц
const int buzzerPin = 9;
// Длина — это общее количество нот и пауз
const int songLength = 18;
char notes[] = "cdfda ag cdfdg gf "; // буквы — ноты, пробел — это пауза
// Настройка ритма.
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
// "tempo" — это скорость мелодии. Чем меньше значение, тем быстрее проигрывание.
int tempo = 150;
void setup()
{
pinMode(buzzerPin, OUTPUT); // Устанавливаем пин для зуммера как выход
}
void loop()
{
int i, duration;
for (i = 0; i < songLength; i++)
{
duration = beats[i] * tempo; // Вычисляем длительность ноты
if (notes[i] == ' ') // если нота отсутствует (пауза)
{
delay(duration); // делаем паузу
}
else
{
tone(buzzerPin, frequency(notes[i]), duration); // проигрываем ноту нужной частоты
delay(duration); // ждем, пока нота отыграет
}
delay(tempo / 10); // небольшая пауза между нотами
}
while(true){} // бесконечная задержка — мелодия играет один раз
}
// Функция преобразования символа ноты в частоту (Гц)
int frequency(char note)
{
int i;
const int numNotes = 8; // количество различных нот
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// Если нота найдена — возвращаем её частоту
for (i = 0; i < numNotes; i++)
{
if (names[i] == note)
{
return(frequencies[i]);
}
}
return(0); // если нота не найдена — вернуть 0 (тишина)
}
Компоненты:
Код:
#include <DHT.h> // sketch -> Include Library -> Manage libraries -> DHT sensor library
#define DHTPIN 2 // сигнал с DHT идёт на пин D2 Arduino
#define DHTTYPE DHT11 // указываем тип датчика
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("Не удалось прочитать данные с датчика!");
return;
}
Serial.print("Temperatuur: ");
Serial.print(temp);
Serial.print(" °C | Niiskus: ");
Serial.print(hum);
Serial.println(" %");
delay(2000);
}
Схема:
Компоненты:
Схема:
Код:
#include <LiquidCrystal.h>
// LCD пины: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int ldrPin = A1; // фоторезистор
const int tempPin = A0; // TMP36
const int buzzerPin = 9; // зуммер
void setup() {
lcd.begin(16, 2);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int lightLevel = analogRead(ldrPin);
int tempValue = analogRead(tempPin);
float voltage = tempValue * (5.0 / 1023.0);
float temperatureC = (voltage - 0.5) * 100.0;
Serial.print("Light: ");
Serial.print(lightLevel);
Serial.print(" | Temp: ");
Serial.print(temperatureC);
Serial.println(" C");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("L:");
lcd.print(lightLevel);
lcd.print(" T:");
lcd.print(temperatureC, 1);
lcd.setCursor(0, 1);
if (temperatureC > 30.0) {
lcd.print("Hot Alarm!");
tone(buzzerPin, 1500); // длительный сигнал
delay(1500);
noTone(buzzerPin); // остановить звук
}
else if (lightLevel > 200) {
lcd.print("Dark Alarm!");
tone(buzzerPin, 1000); // длительный сигнал
delay(1500);
noTone(buzzerPin);
}
else {
lcd.print("All ok!");
tone(buzzerPin, 440); // короткий "пик"
delay(100); // короткий звук
noTone(buzzerPin);
}
delay(1000); // пауза между циклами
}
Подключение библиотеки для LCD и настройка дисплея
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Далее мы назначаем пины
После пинов у нас setup() – запускается один раз при старте. Настраивает дисплей, зуммер и порт.
Главный цикл loop()
– считывает аналоговые значения от фоторезистора и TMP36
int lightLevel = analogRead(ldrPin);
int tempValue = analogRead(tempPin);
После идет преобразования температуры voltage = tempValue * (5.0 / 1023.0);
Для себя я вывожу на Serial Monitor информацию
После мы выводим информацию LCD-дисплей (чуть короче чем на Serial Monitor, т.к не хватает много места)
Переходим на вторую строку дисплея
Условие 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);
}
Видео схемы, как работает код на www.tinkercad.com
Так же видео как работает в реальности
Применение:
Хорошо подойдет к нашему ранниму проекту умной теплицы
Применение:
Применение:
Применение:
Применение: