Peamised funktsioonid:

Mõõdab mitmesuguseid keskkonnanäitajaid:

  • Temperatuur (nt TMP36 või DHT11)
  • Valgustase (fototakisti – LDR)
  • Niiskuseandur(uuri ise) jne

Kuvab kõik andurite mõõtmised LCD-ekraanil

  • Näiteks: “Temp: 24°C Valgus: 320”
  • Reaalajas uuenevad väärtused
#include <LiquidCrystal.h>

int buzzer = 9;
int tempPin = A1;       // TMP36
int ldrPin = A0;        // LDR (valgusandur)
const int buttonPin = 13;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  pinMode(buzzer, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // Кнопка подключена к земле
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Alarm valmiduses");
  delay(1000);
  lcd.clear();
}

void loop() {
  float tempC = analogRead(tempPin) * 0.160; // TMP36 andmetöötlus
  int lightLevel = analogRead(ldrPin);
  bool alarmSilenced = digitalRead(buttonPin) == LOW; // Кнопка нажата

  Serial.print("Temp: ");
  Serial.print(tempC);
  Serial.print(" C  Light: ");
  Serial.println(lightLevel);

  // Kuvame alati ekraanile andmed
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(tempC);
  lcd.print("C    "); // puhastab jäägid

  lcd.setCursor(0, 1);
  lcd.print("Valgus: ");
  lcd.print(lightLevel);
  lcd.print("   "); // puhastab jäägid

  // Reageerimine ohtudele
  if (tempC > 30 || lightLevel < 200) {
    if (!alarmSilenced) {
      noTone(buzzer); // muusika peatub
      alarmSignal();  // mängib ainult kui nupp pole vajutatud
    } else {
      noTone(buzzer); // vaikib
    }
  } else {
    // Kõik normis – mängib taustamuusikat
    tone(buzzer, 440); // A4 toon
    delay(200);
    noTone(buzzer);
  }

  delay(500);
}

void alarmSignal() {
  tone(buzzer, 1000); delay(100);
  noTone(buzzer);     delay(100);
  tone(buzzer, 1000); delay(100);
  noTone(buzzer);     delay(100);
  tone(buzzer, 1000); delay(300);
  noTone(buzzer);
}