Praktika 5 LCD ekraan

5.1 Katse LCD ekraani kasutamine

LCD ekraan on valge LED-taustavalgustusega tumesinine ekraan, mis koosneb kahest 16 tähemärgiga reast, kokku 32 tähemärki. Kõigi märkide eraldusvõime on 8 x 5 punkti.

Ülesanne 5 Interaktiivne infoekraan “Ilmajaam”

В жизни подобный экран можно встретить много где, например на микроволновке, стиральной машине и на других устройствах в которых выводится небольшое количества текста для удобства использования прибора

С помощью функции byte arrow[8] можно рисовать пиксели на клетке LCD экрана и использовать уже внутри кода для оформления

приписка lcd. выводит на экран заданную функцию

в моей работе используется 23 провода, 2 резистора 220 и один 10к, потенциометр, датчик температуры и фоторезистор

видео: https://drive.google.com/file/d/1XGTEg-pZeErIbP7pG8qcOlkwrr_9bSup/view?usp=sharing

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
char* myStrings[] = {"Bye user", "Hello user!!", "Day", "Night"};
byte arrow[8] ={0b11000,0b01100,0b00110,0b00011,0b00011,0b00110,0b01100,0b11000};
byte cross[8] = {0b10001,0b01010,0b01010,0b00100,0b00100,0b01010,0b01010,0b10001};
byte sad[8] = {0b00000,0b11011,0b11011,0b00000,0b00000,0b01110,0b10001,0b10001};
byte good[8] = {0b00000,0b11011,0b11011,0b00000,0b00000,0b10001,0b10001,0b01110};
const int Potepin = A5;
const int tempSensorPin = A0; 
const int LightSensorPin = A1;
int Value;
int i=1;
void setup(){
  lcd.begin(16, 2);
  lcd.createChar(1, arrow);
  lcd.createChar(2, cross);
  lcd.createChar(3, sad);
  lcd.createChar(4, good);
  }
void loop(){
  float temperatureC = readTemperature(tempSensorPin);
  int lightLevel = analogRead(LightSensorPin);
  Value=analogRead(Potepin);
  Value=map(Value,0,1023,1,6);
  Value=constrain(Value,1,6);
  
  if (Value==1) {
     for(int j=0;j<2;j++){ 
      for(int i=0;i<16;i++) {
        lcd.setCursor(i,0);
        lcd.write(2); 
        delay(100);
      }
      lcd.clear();
      delay(500); 
    }
  }
  else if (Value==2) {
    lcd.setCursor(0, 0);
    lcd.println(myStrings[0]);
    lcd.write(3); 
    delay(500);
    lcd.clear();
  }
  else if (Value==3) {
    lcd.setCursor(0, 0);
    if (lightLevel < 500) 
    {
      lcd.println(myStrings[2]);
    } 
    else 
    {
      lcd.println(myStrings[3]); 
    }
    delay(500);
    lcd.clear();
  }
  else if (Value==4) {
    lcd.setCursor(0, 0);
    lcd.print("Temperature: ");
    lcd.print(temperatureC);
    lcd.print(" C");
    delay(500);
    lcd.clear();
  }
  else if (Value==5) {
    for(int i=0;i<16;i++) {
      lcd.setCursor(i,0);
      lcd.write(1);
      delay(100);
      lcd.clear();
    }      
  }
  else if (Value==6) {
    lcd.setCursor(0, 0);
    lcd.println(myStrings[1]);
    lcd.write(4);
    delay(500);
    lcd.clear();
  }
}
float readTemperature(int pin) {
  int sensorValue = analogRead(pin);
  float voltage = sensorValue * (1.7 / 1023.0);
  float temperatureC = voltage * 100.0;
  return temperatureC;
}