Ülesanne 5 Interaktiivne infoekraan Töökirjeldus Fotorõhuanduri töö – saadud andmed jagatakse kaheks väärtuseks: öö ja päev. Termoanduri töö – saadud andmed muudetakse pingeks ja kraadideks Celsiuse järgi. Potentsiomeetri ja LCD ekraani töö – saadud andmed potentsiomeetrist jagatakse kolmeks väärtuseks, mille korral LCD ekraan muudab pilti: Ekraanil kuvatakse “Hello!”, tänane kuupäev (sisestatud käsitsi) ja termoanduri näidud – pinge. Ekraanil kuvatakse tänane nädalapäev (sisestatud käsitsi), termoanduri näidud – temperatuur kraadi ja tähega C, samuti fotorõhuanduri näidud “Day” või “Night” koos vastavate päikese ja kuu piltidega. Ekraanil kuvatakse kiri “Timer:” koos tagasiloendusega 8-st 0-ni. Allosas kuvatakse kell, mis muudab osuti asendit iga 2 sekundi järel päripäeva suunas. Kui taimer lõpetab loenduse, ilmub kiri Time out! Komponendid Fototakisti – 1Takisti (220Ω) – 1, Takisti (10kΩ) – 1Termoandur – 1Potentsiomeeter – 1LCD 16 x 2 – 1Arduino Uno R3 – 1Väike breadboard – 1 Kasutamine Digitaalsed reklaamtahvlid toatemperatuuri ja valgustatuse kuvamise ekraanid ekraanid, mis vahetavad erinevaid töörežiime Kood #include <LiquidCrystal.h> const int rs = 12, e = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, e, d4, d5, d6, d7); byte degree[8] = {0b01100, 0b10010, 0b10010, 0b01100, 0b00000, 0b00000, 0b00000, 0b00000}; byte sun[8] = {0b10000, 0b00110, 0b01111, 0b01111, 0b00110, 0b10000, 0b00101, 0b01001}; byte moon[8] = {0b00000, 0b00000, 0b01110, 0b11101, 0b11111, 0b01110, 0b00000, 0b00000}; byte C[8] = {0b01110, 0b10001, 0b10001, 0b10000, 0b10000, 0b10001, 0b10001, 0b01110}; byte up[8] = {0b00000,0b01110,0b10101,0b10101,0b10001,0b01110,0b00000,0b00000}; byte right[8] = {0b00000,0b01110,0b10001,0b10111,0b10001,0b01110,0b00000,0b00000}; byte down[8] = {0b00000,0b01110,0b10001,0b10101,0b10101,0b01110,0b00000,0b00000}; byte left[8] = {0b00000,0b01110,0b10001,0b11101,0b10001,0b01110,0b00000,0b00000}; //Таймер int timer = 8; //Потенциометр int sensorValue = 2; int Value_new; //Свет const int sensorPin = 1; int lightLevel; //Термодатчик const int temperaturePin = 0; float voltage; int degreesC; void setup() { lcd.createChar(1, degree); lcd.createChar(3, sun); lcd.createChar(4, moon); lcd.createChar(6, C); lcd.createChar(7, up); lcd.createChar(8, right); lcd.createChar(10, down); lcd.createChar(13, left); } void loop() { lightLevel = analogRead(sensorPin); lightLevel = map(lightLevel, 300, 800, 0, 2); lcd.begin(16, 2); tmp_stat(); //Потенциометр Value_new = analogRead(sensorValue); Value_new = map(Value_new,0,1023,1,3); //Основной код if (Value_new == 1) { lcd.clear(); lcd.setCursor(5, 0); lcd.print("Hello!"); lcd.setCursor(11, 1); lcd.print(voltage); lcd.setCursor(15, 1); lcd.print("V"); lcd.setCursor(0, 1); lcd.print("24.05.22"); delay(1000); } else if(Value_new == 2) { if (degreesC > 100 || degreesC < 0) { lcd.setCursor(5,0); } else { lcd.setCursor(6,0); } lcd.print(degreesC); lcd.setCursor(8,0); lcd.write(6); lcd.write(1); lcd.setCursor(0,0); lcd.print("Tue."); if (lightLevel == -1) { lcd.setCursor(6, 1); lcd.write(3); lcd.print("Day"); delay(1000); } else if (lightLevel == 2) { lcd.setCursor(5, 1); lcd.write(4); lcd.print("Night"); delay(1000); } delay(1000); } else if(Value_new == 3) { timer1(); } } //Термодатчик float tmp_stat() { voltage = getVoltage(temperaturePin); degreesC = (voltage - 0.5) * 100.0; return voltage, degreesC; } float getVoltage(int pin) { return (analogRead(pin) * 0.004882814); } //Таймер void timer1() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Timer:"); for (timer; timer != -1; timer--) { lcd.setCursor(7,0); lcd.print(timer); lcd.setCursor(7,1); switch (timer) { case 8: lcd.write(7); break; case 6: lcd.write(8); break; case 4: lcd.write(10); break; case 2: lcd.write(13); break; case 0: lcd.write(7); break; } delay(1000); } lcd.clear(); lcd.setCursor(3,0); lcd.print("Time out!!"); delay(1000); } Link Konstruktsioon Tinkercad