programm kajastab LCD-ekraanil dünaamilist kuva koos temperatuuritingimustel põhinevate LED-indikaatoritega. Kui temperatuuri alla 20 kraadi siis infoekraan kajastab temperatuuri ning heiastab teade “Not hot today” ledid välja lülitatud. Korral temperatuur muutub ülalpool 20 ja alla 30, infoekraan kajastab temperatuuri ning heiastab teade “Love hot weather” ,siis ledid sisse lülitatud. Puhul temperatuur muutub ülalpool 30, infoekraan kajastab temperatuuri ning heiastab teade “Turn on AC” (peetakse silmas air conditioner) , ledid hakkavad pilgutama, teavitades meid niimodi mõnest terviseriskist ja servo mootor simuleerib konditsioneeri sisselülitamist.

#include <LiquidCrystal.h>
#include <Servo.h>

//1. Temperatuurianduri analoogviik
int sensor = A0;

//2. Muutujad temperatuuri väärtuste salvestamiseks Celsiuse ja Fahrenheiti //kraadides
float temp; 
float tempc;
float tempf;
//3. Digitaalne pin LED-i jaoks
int ledPin1 = 13;
int ledPin2 = 13;

int servoPin = 10;  // Pin, millega servo on ühendatud

Servo myServo;  
// Servoobjekti loomine

//4. LCD ühendused
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

//5. Функция setup инициализирует дисплей и устанавливает контакты светодиодов в
//качестве выходных сигналов.
void setup() {
  lcd.begin(16, 2);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  myServo.attach(servoPin);  // Kinnitamine servo määratud tihvti külge
}


// kui temperature enam 35c mängitakse meloodia
void playMelody() {
  // Define the melody notes and their durations
  int melody[] = {262, 294, 330, 349, 392, 440, 494, 523};
  int noteDurations[] = {4, 4, 4, 4, 4, 4, 4, 4};

  
  for (int i = 0; i < 8; i++) {
    tone(8, melody[i], 1000 / noteDurations[i]);
    delay(100); // Add a small delay between notes
  }
}

void loop() {

//6. Temperatuuri väärtuste lugemine

  temp = analogRead(sensor);
  tempc = (temp * 4.88) / 10;
  tempf = (tempc * 1.8) + 32;

  lcd.clear(); // Ekraani tühjendamine

  //7. Temperatuuri kuvamine Celsiuse kraadides

  lcd.setCursor(0, 0);
  lcd.print("Temp in C = ");
  lcd.print(tempc);

  lcd.setCursor(0, 1);

  //8. Kontroll LED-juhtimise ja ekraaniteadete temperatuuri läve
  if (tempc < 20) {
    digitalWrite(ledPin1, LOW);   
    digitalWrite(ledPin2, LOW);   
    myServo.write(0);  // servo asend 0  (väljas asend)
    lcd.print("Not hot today");
  } else if (tempc >= 20 && tempc < 30) {
    digitalWrite(ledPin1, LOW);    
    digitalWrite(ledPin2, HIGH);  
    myServo.write(0); 
    lcd.print("Love hot weather");
  } else if (tempc >= 30 && tempc < 35) {
    // Blink LEDs
    digitalWrite(ledPin1, HIGH);   
    digitalWrite(ledPin2, HIGH);   
    myServo.write(90);  //  servo asend 90 kraadi peale (air canditioner sisse     //lületatud)
    delay(100);  // Blink interval
    digitalWrite(ledPin1, LOW);   
    digitalWrite(ledPin2, LOW);   
    delay(100);  // Blink interval
    lcd.print("Turn on AC");
  } else {
    // Blink LEDs in turn
    for (int i = 0; i < 5; ++i) {
      digitalWrite(ledPin1, HIGH);   
      delay(100);  // Blink interval
      digitalWrite(ledPin1, LOW);   
      digitalWrite(ledPin2, HIGH);   
      delay(100);  // Blink interval
      digitalWrite(ledPin2, LOW);    
    }
    myServo.write(90);
    lcd.print("Turn on AC");
    playMelody();
  }

  delay(1000);  
  noTone(8);
}

programm pakub LCD-ekraanil dünaamilist kuva koos temperatuuritingimustel põhinevate LED-indikaatorite ja servo mootoriga. Nii siis, kui temperatuur on üle 35 kraadi, aktiveeritakse kõlar.



1.

2.