Katse 5

katse 5.1 LCD ekraani kasutamine

Töö kirjeldus:

Looda LCD ekraanil tegevus

Komponendid:

1602 LCD ekraan
potentsiomeeter
takisti 220 Om
Juhtmed 16 tk

Ühendus skeem:

Programm:

#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);

}

Foto:

LCD ekraanil muutub väärtused mis näitab liikumist ja muutmist

Ülesanne 5 Interaktiivne infoekraan

Töö kirjeldus:

Näita LCD ekraanil lause või seisukord väljas (temperatuur)

Komponendid:

Arduino Uno
Arendusplaat
Potentsioometr 1tk
LCD ekraan 1602
Temperatuuri andur TMP
Takisti 220 Om
Juhtmed 19 tk

Ühendus skeem:

https://www.tinkercad.com/things/gn3iX6S4EOP-daring-jaiks/editel?sharecode=0b0_s1dF4zzhvYc600tdORM15FMgxYidNqy5VeQP7I4

Seletus:

LCD ekraanil näitakse temperatuur vastavalt temperatuuri anduri tulemusest, kui temperatuuri andur loeb soe temperatuuri siis näitab LCD ekraanil on soe , päike ja rõõmus näö. Kui temperatuuri andur loeb külma temperatuuri siis näitab LCD ekraanil on külm, kuu ja kurb näö.

Programm:

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int temperaturePin = A0;

const char* myStrings[] = {
  "temperatuur",
  "on soe"
};

const char* coldStrings[] = {
  "temperatuur",
  "on kylm"
};

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

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

byte sunSymbol[8] = {
	0b10101,
	0b01110,
	0b01110,
	0b11111,
	0b11111,
	0b01110,
	0b01110,
	0b10101
};

byte moonSymbol[8] = {
  0b00000,
  0b00100,
  0b01110,
  0b01110,
  0b01110,
  0b00100,
  0b00000,
  0b00000
};

void setup() {
  lcd.begin(16, 2);
  lcd.createChar(0, smiley);
  lcd.createChar(1, sadface);
  lcd.createChar(2, sunSymbol);
  lcd.createChar(3, moonSymbol);
  
  Serial.begin(9600);
}

void loop() {
  int temperature = analogRead(temperaturePin);
  float celsius = map(temperature, 0, 1023, -40, 250);    

  lcd.setCursor(0, 0);
  lcd.print(myStrings[0]); // "temperatuur" kuvamine esimesel real

  lcd.setCursor(0, 1);
  if (celsius > 22) {
    lcd.print(myStrings[1]); // Kuva "soe" teisel real, kui see on kuum
    lcd.write((uint8_t)2); // Päikese sümboli kuvamine
    lcd.write((uint8_t)0); // Naeratava näo kuvamine
  } else {
    lcd.print(coldStrings[1]); // Külma korral näidatakse "kylm" teisel real
    lcd.write((uint8_t)3); // Kuu sümboli kuvamine
    lcd.write((uint8_t)1); // Kurva näo kuvamine
  }
  
  // Prindime temperatuuri ja heleduse väärtused serial monitorile
  Serial.print("Temperature: ");
  Serial.print(celsius);
  Serial.println("C");  

  delay(1000); // Temperatuurikontrollide vaheline viivitus - 1 sekund
  lcd.clear();
    
}

Video:

https://drive.google.com/drive/folders/1QIIOFeZJeWjZsU1fwYtt2furDs4VmduP?usp=share_link

Kus võib seda kasutada

Nutitelefon
Sülearvuti
Televisoorid
Videokassettmagnetofon
Mp3 pleer

Uued funktsioonid:

lcd.write((uint8_t)2); uint8_t universaalne vorm pöörama objektile, siis võtakse milline objekti number, mis oli määratud setup-s.