5.1 Katse LCD ekraani kasutamine

// lisame LiquidCrystal library

#include <LiquidCrystal.h>

// määrame, milliste digitaalpesadega ekraan ühendatud on

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

// loome erisümbolid

byte smiley[8] ={0b00000,0b00000,0b01010,0b00000,0b00000,0b10001,0b01110,0b00000};

byte armsDown[8] ={0b00100,0b01010,0b00100,0b00100,0b01110,0b10101,0b00100,0b01010};

byte armsUp[8] ={0b00100,0b01010,0b00100,0b10101,0b01110,0b00100,0b00100,0b01010};

byte kass[8] ={0b00000,0b00000,0b00000,0b10000,0b10011,0b11111,0b01110,0b01010};

byte tydruk[8] ={0b00100,0b01010,0b00100,0b11111,0b00100,0b00100,0b01110,0b11111};

byte v2ikesyda[8] ={0b00000,0b00000,0b00000,0b11011,0b11111,0b11111,0b01110,0b00100};

void setup() {

// algväärtustatakse LDC ekraani read ja veerud

lcd.begin(16, 2);

// defineerime erisümbolid

lcd.createChar(1, smiley);

lcd.createChar(3, armsDown);

lcd.createChar(4, armsUp);

lcd.createChar(5, kass);

lcd.createChar(6, tydruk);

lcd.createChar(7, v2ikesyda);

}

void loop() {

// koht kuhu hakkame joonistama - 3. veerg, esimene rida

lcd.setCursor(2, 0);

// joonistame kassi

lcd.write(5);

// ja tüdruku

lcd.write(6);

//muudame kursori asukohta: 2. rida 14. veerg

lcd.setCursor(13, 1);

// joonistame poisi

lcd.write(3);

delay(400);

//muudame kursori asukohta: 1. rida 5. veerg

lcd.setCursor(4, 0);

//joonistame for tsükli abil väikese pausiga 10 smaili

for (int koht = 0; koht < 10; koht++) {

lcd.write(1);

delay(400);

}

lcd.setCursor(13, 1);

lcd.write(4);

//loobime südameid

for (int koht = 13; koht >= 4; koht--) {

lcd.setCursor(koht, 0);

lcd.write(7);

delay(400);

  }

delay(400);

}



Ülesanne 5. Interaktiivne infoekraan “Ilmajaam”

Töö kirjeldus



Kasutatud komponenid



Töö protsess



Uuritud funktsioonid



Kasutamisvõimalused tavaelus



Interaktiivne skeem



Skeem



Video (link)



Programm

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const int temperaturePin = A1;
const int lightPin = A0;

float voltage, degreesC;

char* tempTekstid[] = {
  "Kylm ilm!",       // < 15
  "Monus ilm!",     // 15–25
  "Soojus kasvab!",  // 25–30
  "Palavus! Vett!"   // >30
};

char* lightTekstid[] = {
  "Paikseline",   // < 85
  "Pilvine",      // 85–170
  "Vihmane"       // >170
};

byte smile[8] = {
	0b00000,
	0b01010,
	0b01010,
	0b00000,
	0b10001,
	0b01110,
	0b00000,
	0b00000
};

byte rain[8] = {
	0b00100,
	0b00100,
	0b01010,
	0b01010,
	0b10001,
	0b10001,
	0b10001,
	0b01110
};

byte degrees[8] = {
	0b01110,
	0b01010,
	0b01110,
	0b00000,
	0b00000,
	0b00000,
	0b00000,
	0b00000
};

byte heart[8] = {
	0b00000,
	0b01010,
	0b11111,
	0b11111,
	0b01110,
	0b00100,
	0b00000,
	0b00000
};

byte sad[8] = {
	0b00000,
	0b01010,
	0b01010,
	0b00000,
	0b01110,
	0b10001,
	0b00000,
	0b00000
};

void setup() {
  Serial.begin(9600);
  
  lcd.begin(16, 2);
  lcd.createChar(1, degrees);
  lcd.createChar(2, smile);
  lcd.createChar(3, rain);
  lcd.createChar(4, heart);
  lcd.createChar(5, sad);
          
  lcd.setCursor(0, 0);
  lcd.print("Ilmajaam:");       
  lcd.setCursor(0, 1);
  lcd.print("TTHK ilm");

   // paremale
  for (int koht = 9; koht <= 15; koht++) {
    lcd.setCursor(koht, 1);
    lcd.write(byte(4)); 
    delay(300);
    lcd.setCursor(koht, 1);
    lcd.print(" "); 
  }

  // vasakule
  for (int koht = 14; koht >= 9; koht--) {
    lcd.setCursor(koht, 1);
    lcd.write(byte(4)); 
    delay(300);
    lcd.setCursor(koht, 1);
    lcd.print(" ");
  }
	
  lcd.setCursor(9, 1); 
  lcd.write(byte(4)); 
  
  delay(1000);
}

void loop() {
  // --- Temperatuur ---
  voltage = analogRead(temperaturePin) * 0.004882814;
  degreesC = (voltage - 0.5) * 100.0;
  
   // --- Valgustus ---
  int lightLevel = analogRead(lightPin);
  lightLevel = map(lightLevel, 300, 800, 0, 255);
  lightLevel = constrain(lightLevel, 0, 255);
  
  // Printimine Serial Monitori
  Serial.print("Temp: ");
  Serial.print(degreesC);
  Serial.print(" °C | Light level: ");
  Serial.println(lightLevel);
  
  // Tekst temperatuuri järgi  
  char* tempTekst;
  
  if (degreesC < 15) {
    tempTekst = tempTekstid[0];
  } else if (degreesC < 25) {
    tempTekst = tempTekstid[1];
  } else if (degreesC < 30) {
    tempTekst = tempTekstid[2];
  } else {
    tempTekst = tempTekstid[3];
  }
  
  // Tekst valgustuse järgi  
  char* lightTekst;
  byte lightIcon;
  
  if (lightLevel > 170){
    lightTekst = lightTekstid[2];
    lightIcon = 3;
  } else if (lightLevel > 85){
    lightTekst = lightTekstid[1];
    lightIcon = 5;
  } else {
    lightTekst = lightTekstid[0];
    lightIcon = 2;
  } 

  // Esimene ekraan: temperatuuritekst
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(tempTekst);
  lcd.setCursor(0, 1);
  lcd.print("Temp: ");
  lcd.print(degreesC, 1);
  lcd.write(byte(1));
  lcd.print("C");
  delay(2000);
  
  // Teine ekraan: valgustus ja ikoon
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(lightTekst);
  lcd.setCursor(strlen(lightTekst) + 1, 0);
  lcd.write(lightIcon);
  lcd.setCursor(0, 1);
  lcd.print("Temp: ");
  lcd.print(degreesC, 1);
  lcd.write(byte(1)); 
  lcd.print("C");
  delay(2000);
 
}