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.