Praktika 6: Buzzeri kasutamine “Väike Alarm Süsteem”
Katse 6: -Buzzer-
Komponendid:
x1
x4
Kirjeldus:
Piesoelement (buzzer) on ühendatud Arduino digitaalse väljundiga D9 ja maandusega (GND). Buzzerit kasutatakse helisignaalide ja alarmi edastamiseks.
Skeem:

Kood:
// Meloodiate mängimine.
// Käsk Arduino tone() - noote tihedus.
// Noodid:
// note frequency
// c 262 Hz
// d 294 Hz
// e 330 Hz
// f 349 Hz
// g 392 Hz
// a 440 Hz
// b 494 Hz
// C 523 Hz
const int buzzerPin = 9;
// pikkus on nootide ja pausite koguste summa
const int songLength = 18;
char notes[] = "cdfda ag cdfdg gf "; // tähed on noodid ja tühik on paus
// Rütmi seadistamine.
int beats[] = {1,1,1,1,1,1,4,4,2,1,1,1,1,1,1,4,4,2};
// "tempo" meloodia kiirus. Kui väiksem tempo_ siis suurem kiirus.
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] == ' ') // kui noot puudub
{
delay(duration);
}
else
{
tone(buzzerPin, frequency(notes[i]), duration);
delay(duration);
}
delay(tempo/10); // väike paus nootide vahel
}
while(true){}
}
int frequency(char note)
{
int i;
const int numNotes = 8; // nootide kogus
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
int frequencies[] = {262, 294, 330, 349, 392, 440, 494, 523};
// kui noot on olemas, siis tagastame selle tiheduse
for (i = 0; i < numNotes; i++)
{
if (names[i] == note)
{
return(frequencies[i]);
}
}
return(0);
}
Interaktiivne Arduino skeem
Ülesanne 6: Buzzeri kasutamine “Väike Alarm Süsteem”
NUKKA : Nutikas Kliimakontrolli- ja alarmsüsteem
Kirjeldus:
NUKKA on nutikas kliimakontrolli- ja alarmsüsteem, mis jälgib reaalajas keskkonna temperatuuri ning kohandub dünaamiliselt vastavalt valgustasemele (päeva/öö või avatud/suletud ukse režiim).
Süsteemi põhilised olekud ja tööloogika:
- Käivitus: Sisselülitamisel kõlab üks lühike piiks ja ekraan kuvatab tervitusteksti.
- Süsteem väljas (OFF): Ekraanile kuvatakse “NUKKA: VALJAS” ja buzzer vaikib.
- Pime režiim (Uks kinni): Kui ruumis on pime, kuvatakse andmed ekraanile ja süsteem töötab täielikus vaikuses.
- Valge režiim (Uks lahti / Pre-alarm): Kui valgustase tõuseb, hakkab buzzer tegema harva ja pehmet hoiatussignaali, tuletades meelde ukse sulgemist.
- Kriitiline häire (ALARM): Kui temperatuur väljub lubatud piiridest (< 5°C või > 25°C), katkeb tavarežiim, ekraanile ilmub veateade ja buzzer lülitub valjule kahetoonilisele sireenile.
- Kriitiline häire (ALARM): Kui temperatuur väljub lubatud piiridest (< 5°C või > 25°C), katkeb tavarežiim, ekraanile ilmub veateade ja buzzer lülitub valjule kahetoonilisele sireenile.
Komponendid:
x1
x1
x1
x1
x1
x1
x1
x1
x1
x1
x22
Skeem:
Simulatsioon väljas:
Simulatsiooni tööl:


Kood:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Viigud
const int temperaturePin = A1;
const int lightPin = A0;
const int buzzerPin = 9;
const int switcherPin = 6;
// Muutujad
float voltage, degreesC;
bool firstStartDone = false;
void setup() {
Serial.begin(9600);
pinMode(buzzerPin, OUTPUT);
pinMode(switcherPin, INPUT_PULLUP);
lcd.begin(16, 2);
// Käivitusekraan
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("NUKKA");
lcd.setCursor(1, 1);
lcd.print("Susteem valmis");
tone(buzzerPin, 2000, 150);
delay(1500);
lcd.clear();
}
void loop() {
// Süsteemi oleku kontroll
bool systemOn = digitalRead(switcherPin) == LOW;
// Süsteem on välja lülitatud
if (!systemOn) {
noTone(buzzerPin);
lcd.setCursor(0, 0);
lcd.print("NUKKA: VALJAS ");
lcd.setCursor(0, 1);
lcd.print(" ");
firstStartDone = false;
delay(200);
return;
}
// Andurite lugemine
voltage = analogRead(temperaturePin) * 0.004882814;
degreesC = (voltage - 0.5) * 100.0;
int lightLevel = analogRead(lightPin);
// Andmete saatmine Serial Monitori
Serial.print("Temp: ");
Serial.print(degreesC);
Serial.print(" C | Light: ");
Serial.println(lightLevel);
bool alarm = false;
String alarmMessage = "";
// Temperatuuri kontroll
if (degreesC > 25) {
alarm = true;
alarmMessage = "Liiga kuum! ";
}
else if (degreesC < 5) {
alarm = true;
alarmMessage = "Liiga kulm! ";
}
// Häirerežiim
if (alarm) {
lcd.setCursor(0, 0);
lcd.print("ALARM! ");
lcd.setCursor(0, 1);
lcd.print(alarmMessage);
tone(buzzerPin, 1500, 150);
delay(200);
tone(buzzerPin, 1000, 150);
delay(200);
}
// Tavarežiim
else {
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(degreesC, 0);
lcd.print(" C ");
lcd.setCursor(0, 1);
// Valguse kontroll
if (lightLevel >= 200) {
lcd.print("Olek: Pime ");
} else {
lcd.print("Olek: Valge ");
}
// Esimene käivitus
if (!firstStartDone) {
delay(1000);
firstStartDone = true;
}
// Helisignaalid
else {
if (lightLevel >= 200) {
noTone(buzzerPin);
delay(1000);
} else {
tone(buzzerPin, 600, 80);
delay(1500);
}
}
}
}
Video:
Interaktiivne Arduino skeem
Uuritud funktsioonid
| Funktsioon | Tüüp | Kirjeldus | Kasutus koodis |
|---|---|---|---|
analogRead() |
Standard | Loeb analoogsisendi väärtuse (0 kuni 1023) | Temperatuurianduri ja fototakisti näitude lugemine |
digitalRead() |
Standard | Loeb digitaalsisendi oleku (HIGH või LOW) | Slaidlüliti asendi kontrollimine (süsteem SEES/VÄLJAS) |
tone() |
Standard | Genereerib määratud sagedusega heli (ruutlaine) viigul | Käivituspiiksu, hoiatussignaali ja häiresireeni loomine |
noTone() |
Standard | Peatab heli genereerimise määratud viigul | Buzzeri vaigistamine pime-režiimis või kui süsteem on väljas |
delay() |
Standard | Peatab programmi töö määratud millisekunditeks | Tervitusteksti kuvamise aja ja helipauside juhtimine |
lcd.begin() |
LiquidCrystal | Määrab LCD-ekraani veergude ja ridade arvu | 16×2 tähemärgiga LCD-ekraani alglaadimine seadistuses |
lcd.clear() |
LiquidCrystal | Kustutab ekraanilt kogu teksti ja viib kursori nurka | Ekraani täielik puhastamine käivitamisel ja režiimi vahetusel |
lcd.setCursor() |
LiquidCrystal | Määrab kursori asukoha (veeru ja rea) ekraanil | Teksti täpne paigutamine ekraani esimesele või teisele reale |
lcd.print() |
LiquidCrystal | Kuvab teksti, muutujaid või väärtusi LCD-ekraanil | Temperatuurinäidu, olekute ja hoiatusteadete kuvamine |
Kasutamisvõimalused tavaelus
🌱 Nutikad kasvuhooned
NUKKA aitab hoida eksootiliste taimede jaoks stabiilset mikrokliimat. Kui uks unustatakse lahti (valgus tõuseb), teavitab seade kasutajat pehme signaaliga, et soojus välja ei voolaks. Kriitilise kuuma või külma korral käivitub alarmsireen.
❄️ Professionaalsed külmkambrid
Toiduainete või ravimite hoiustamisel on temperatuuri režiim kriitilise tähtsusega. Seade tuvastab koheselt, kui külmiku uks on jäänud paokile, ning annab valju häiresignaali enne, kui tooted jõuavad üles sulada või rikneda.
🔒 Serveriruumid ja andmekeskused
Serverid nõuavad pidevat jahutust ja pimedust. NUKKA suudab valvata IT-infrastruktuuri: kui keegi siseneb ruumi (valgus lülitub sisse) ja konditsioneer rikkisoleku tõttu temperatuur tõuseb üle 30°C, käivitub koheselt turvaalarm.
🍷 Eriti tundlikud hoiulaod
Kallite veinide, kunstiteoste või keemiliste reaktiivide hoidmisel on vaja pimedat ja rangelt kontrollitud keskkonda. NUKKA tagab, et hoiutingimused oleksid ööpäevaringselt täidetud, reageerides igale valguse ja temperatuuri muutusele.
🏡 Autonoomne koduvalve
Süsteemi saab kasutada lihtsa turvaelemendina suvilates või garaažides. Kui lüliti on asendis ON, valvab seade ruumi: valguse andur märkab sissetungijat (ukse avamist või taskulampi) ja temperatuuriandur reageerib tulekahjule.
🔬 Laborid ja inkubaatorid
Meditsiinilistes või bioloogilistes uuringutes, kus testitakse näidiseid kindlal temperatuuril. NUKKA kahetasemeline hoiatussüsteem aitab teadlastel hoida eksperimendi keskkonda stabiilsena ja märgata kõrvalekaldeid õigeaegselt.
