Ülesanne 5 Interaktiivne infoekraan “Ilmajaam”


5. Katse LCD ekraani kasutamine

https://www.tinkercad.com/things/lWZagK9TQ0j-bodacious-fulffy

Tööpõhimõte Katse LCD :

  • Töö tulemusena kujunevad ekraanil joonistused

Komponeendid Katse LCD :

  • 1 1602 LCD ekraan ;
  • 1 potentsiomeeter ;
  • 16 juhtmed ;
  • 1 resistor ;
  • 1 Breadboard Small ;
  • 1 Arduino Uno R3

Katse LCD kood :

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

}

Ilmajaam

https://www.tinkercad.com/things/cbzgvnH1xQ5-funky-elzing-duup

Ilmajaam kasutamine :

  • Muudab temperatuuri TMP36 abil.
  • Ekraan lülitatakse sisse potentsiomeeteriga.
  • Temperatuur kuvatakse ekraanil.
  • Kui kraadi on alla 95 kraadi, näitab see “Very hot” ja sun pilti.
  • Kui kraad on väiksem kui 95 ja suurem kui 75, ilmub kiri “Hot” ja note pilt.
  • Kui kraad on väiksem kui 75 ja suurem kui 45, ilmub kiri “Warm” ja heart pilt.
  • Kui kraad on väiksem kui 45 ja suurem kui 25, ilmub kiri “Cold” ja umbrella pilt.
  • Kui kraad on väiksem kui 25, siis ilmub kiri “Very cold” ja scull pilt.

Ilmajaam komponeendid :

  • 1 resistor ;
  • 1 Andur TMP36 ;
  • 1 1602 LCD ekraan ;
  • 1 potentsiomeeter ;
  • 19 juhtmed ;
  • 1 Breadboard Small ;
  • 1 Arduino Uno R3

Ilmajaam kood :

#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
int numRows = 2; //Количество строк на LCD
int numCols = 16; //Количество столбцов на LCD.
const int temperaturePin = A0; 
const int lightPin = 0;
byte sun[8] = {
  0b10101,
  0b01110,
  0b11111,
  0b01110,
  0b10101,
  0b00000,
  0b00000,
  0b00000
};
byte note[8] = {
  0b00000,
  0b00011,
  0b00101,
  0b01001,
  0b01001,
  0b01011,
  0b11011,
  0b11000
};
byte heart[8] = {
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000,
  0b00000
};
byte umbrella[8] = {
  0b00000,
  0b00100,
  0b01110,
  0b11111,
  0b00100,
  0b00100,
  0b00100,
  0b00000
};
byte scull[8] = {
 0b00000,
 0b01110,
 0b10101,
 0b10101,
 0b11011,
 0b01110,
 0b01110,
 0b01110
};
void setup()
{
  Serial.begin(9600);
  lcd.begin(numCols, numRows);
  lcd.createChar(1, sun);
  lcd.createChar(2, note);
  lcd.createChar(3, heart);
  lcd.createChar(4, umbrella);
  lcd.createChar(5, scull);  
}
void loop()
{
  float voltage, degreesC, degreesF;
  voltage = getVoltage(temperaturePin);
  degreesC = (voltage - 0.5) * 100;
  degreesF = degreesC * (9.0/5.0) + 32.0;
  lcd.setCursor(0,1);
  lcd.print(degreesC);
  lcd.println(" degrees C ");
  delay(800);
  if (degreesC > 45)
{
    lcd.setCursor(1, 0);
    lcd.write(1);
    texts(" Very hot ");
    delay(800);
    lcd.clear();
}
  else if (degreesC > 35)
{
    lcd.setCursor(1, 0);
    lcd.write(2);
    texts(" Hot ");
    delay(800);
    lcd.clear();
}
  else if (degreesC > 20)
{
    lcd.setCursor(1, 0);
    lcd.write(3);
    texts(" Warm ");
    delay(800);
    lcd.clear();
}
  else if (degreesC > 5)
{
    lcd.setCursor(1, 0);
    lcd.write(4);
    texts(" Cold ");
    delay(800);
    lcd.clear();
}
  else if (degreesC < 5)
{
    lcd.setCursor(1, 0);
    lcd.write(5);
    texts(" Very cold ");
    delay(800);
    lcd.clear();
}
}
float getVoltage(int pin)
{
  return (analogRead(pin) * 0.004882814);
}
void texts(char *text)
{
  int length = strlen(text);
  if(length < numCols)
    lcd.print(text);
  else
{
    int pos;
    for(pos = 0; pos < numCols; pos++)
      lcd.print(text[pos]);
    delay(800);
    while(pos < length)
    {
      lcd.scrollDisplayLeft();
      lcd.print(text[pos]);
      pos = pos + 1;
      delay(500);
    }
  }
}

Photo / Video :

Video :

https://drive.google.com/file/d/1NwrsVEwOJuCwoUhfwLdZLmcwRT0gMznr/view?usp=drivesdk

Photo :

Kommentaatorid (uued võimalused) :

  • for (int koht 0;koht<10;koht++) See on Arduino for tsükkel, mida korratakse 10 korda, suurendades muutujat koht igal iteratsioonil alates 0 kuni 9.
  • rtc.begin () Reaalajakell (Real Time Clock, RTC) on elektrooniline skeem, mis on spetsiaalselt ette nähtud jooksva aja, kuupäeva, nädalapäeva ja muude aja- ja kalendriandmete arvestamiseks.
  • LCD.clear (); on Arduino meetod, mida kasutatakse LCD (Liquid Crystal Display) ekraani sisu puhastamiseks. Pärast selle meetodi väljakutsumist muutub ekraan tühjaks, ilma kuvatava teksti või sümboliteta.
  • if (length < numCols) on Arduino tinglik operaator, mis kontrollib, kas muutuja length väärtus on väiksem kui muutuja numCols väärtus. Kui tingimus on tõene, täidetakse if-ploki sees olev kood.
  • if (rtc.isrunning () ) on Arduino tinglik operaator, mis kontrollib, kas reaalaja kellamoodul (RTC) töötab. Kui isrunning meetod () tagastab tõe, siis RTC töötab ja tingimus on täidetud.
  • LCD.write () on Arduino meetod, mida kasutatakse sümboli väljutamiseks LCD (Liquid Crystal Display) ekraanil. See võimaldab kuvada ASCII kodeeringus esitatud sümboleid, näiteks tähti, numbreid, kirjavahemärke ja muid erimärke.

Näiteid elust :

  • Tänavatermomeeter
  • Toatermomeeter

Comments

Lisa kommentaar

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga