Interactive information display “Weather Station”

Katse LCD ekraani kasutamine

Отображение текста на LCD экране/Ekraani ühendamine ja teksti kuvamine 1602 LCD ekraanil.

Komponendid:

  • 1 resistor (330 Ω);
  • 16 juhtmed;
  • 1 Potentiometer;
  • 1602 LCD ekraan;
  • 1 Breadboard Small ;
  • 1 Arduino Uno R3.

Tööpõhimõte:

Nüüd võib arendusplaadi USB juhtme abil arvutiga ühendada ning testida ekraani arenduskeskkonna näidisprogrammiga. Arenduskeskkonna LCD ekraani testimiseks mõeldud näited asuvad File -> Exampes -> LyquidCrystal valime nendest näiteks “Hello World”.
Seejärel leida koodi setup () meetodist üles rida lcd.print(“hello, world!”); ning asendada sõna world enda nimega. Peale koodi plaadile laadimist peaks ekraani ülemisele reale ilmuma kiri “hello, teie nimi” ning alumisele sekundiloendur. Keerata potentsiomeetrit nii palju vasakule kui võimalik, et tagada maksimaalne kontrastsus. Teksti mitteilmumise korral peaks üle kontrollima potentsiomeetri ühendused, taustavalguse probleemide korral kahe viimane pesa (A ja K) ühendused.
Esimene katsetus tehtud, saab proovida ekraanile joonistada endale meelepärast liikuvat pilti. Selleks avada erisümbolite näide File -> Exampes -> LyquidCrystal –
>CustomCharacter, mille katsetamisel ilmub käsi üles-alla liigutav mehike. Ekraan ise koosneb 32 kastikesest (16 veergu 2 rida), millest igaüks on 5 x8 pikslit. Kujutiste kuvamine toimub 8-baitiste järjendite abil, kus iga baidi 5 parempoolset bitti defineerivad ühe pikslirea. Järgnevas koodiplokis on toodud CustomCharacker koodist inspireeritud liikuva pildi kood.

Ühendamine:

Tulemuseks on liikuv pilt, kus poiss ja tüdruk üksteiseke südameid ja naerunägusid saadavad.

Ühendamise skeem:

https://www.tinkercad.com/things/2ReDMhepcXd-fantabulous-vihelmo-lahdi?sharecode=PbAsq8sVnldjr91zDwNc_Bs5IosS9meQeLQTiklJI_g

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

}

DateTime (RTClib.h teeke kasutamine)

RTClib.h teeke installimine ja kasutamine

Kasutuskomponeendid:

Arduino Uno

  • Arduino Uno
  • Pildil on

Ühendamise skeem:

https://www.tinkercad.com/things/2hnyuafatY1-exquisite-albar

Kood:

// lisame RTClib.h library


#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
void setup ()
{
Serial.begin(9600);
Wire.begin();
rtc.begin();
if (! rtc.isrunning()) {
  Serial.println("RTC is NOT running!");
  // following line sets the RTC to the date & time this sketch was compiled
  rtc.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop () {
DateTime now = rtc.now();

char dt[10];
char tm[10];

sprintf(dt, "%02d/%02d/%02d", now.year(),now.month(),now.day());
sprintf(tm, "%02d:%02d:%02d", now.hour(),now.minute(),now.second());

Serial.print(dt);
Serial.print(" ");
Serial.print(tm);
Serial.println();

delay(1000);
}


Ilmajaam

Komponendid:

  • 1 resistor ;
  • 19 juhtmed;
  • 1 Potentiometer;
  • 1 Temperature Sensor (TMP36);
  • 1602 LCD ekraan;
  • 1 Breadboard Small ;
  • 1 Arduino Uno R3.

Tööpõhimõte:

  1. Potentiomeeter sisaldab ja lülitab välja LCD ekraani;
  2. Mis abi Temperature Sensor, LCD ekraan näitab temperatuuri;
  3. Ekraanil näidatakse väikest joonist, teksti ja kraadi;
  4. Kui kraadi on alla 95 kraadi, näitab see “Very hot” ja päikesepilti;
  5. Kui kraad on väiksem kui 95 ja suurem kui 75, ilmub kiri “Hot” ja märge pilt;
  6. Kui kraad on väiksem kui 75 ja suurem kui 45, ilmub kiri “Warm” ja pilt südamest;
  7. Kui kraad on väiksem kui 45 ja suurem kui 25, ilmub kiri “Cold” ja vihmavari pilt;
  8. Kui kraad on väiksem kui 25, siis ilmub kiri “Very cold” ja pilt pätt;
  9. Koostas skeemi ja salvestas koodi keskkonda “tinkercad.com”;
  10. Koostas skeemi Arduino;
  11. Loos skeemi, mis töötab foto ja video.

Ühendamise skeem:

https://www.tinkercad.com/things/bPvvGJEBYWS-glorious-inari-turing

Kood:

#include&lt;LiquidCrystal.h&gt;
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 &gt; 45)
{
    lcd.setCursor(1, 0);
    lcd.write(1);
    texts(" Very hot ");
    delay(800);
    lcd.clear();
}
  else if (degreesC &gt; 35)
{
    lcd.setCursor(1, 0);
    lcd.write(2);
    texts(" Hot ");
    delay(800);
    lcd.clear();
}
  else if (degreesC &gt; 20)
{
    lcd.setCursor(1, 0);
    lcd.write(3);
    texts(" Warm ");
    delay(800);
    lcd.clear();
}
  else if (degreesC &gt; 5)
{
    lcd.setCursor(1, 0);
    lcd.write(4);
    texts(" Cold ");
    delay(800);
    lcd.clear();
}
  else if (degreesC &lt; 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 &lt; numCols)
    lcd.print(text);
  else
{
    int pos;
    for(pos = 0; pos &lt; numCols; pos++)
      lcd.print(text[pos]);
    delay(800);
    while(pos &lt; length)
    {
      lcd.scrollDisplayLeft();
      lcd.print(text[pos]);
      pos = pos + 1;
      delay(500);
    }
  }
}

FOTO

Video

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

Kommentaatorid (uued võimalused):

byte smiley [8]

Arduino kuulutus byte smiley [8] loob massiivi 8-st elemendist, mida kasutatakse mingi pildi kohta teabe salvestamiseks, emotikoni kuvamiseks LCD-ekraanil.

LCD.begin

begin () – Initsialiseerib liidese LCD-ekraaniga suhtlemiseks ja määrab ekraani väljundi mõõtmed (laius ja kõrgus). LCD-ekraaniga töötamisel peab funktsioon begin () olema esimene ja eelnema teistele LiquidCrystali teegi käskudele.

LCD.createChar()

Funktsiooni LCD.createChar () kasutatakse Arduino’s LCD-ekraanil kohandatud sümbolite (custom characters) loomiseks. See funktsioon võimaldab teil laadida kohandatud pilte ekraani mällu, et neid saaks kuvada ekraanile standardsete sümbolite asemel.

LCD.setCursor ()

setCursor () Võimaldab määrata kursori positsiooni LCD-ekraanil, määrab positsiooni, kus kuvatakse järgnev tekst.See funktsioon võimaldab määrata, kus kuvatakse järgmine sümbol või tekstirida ekraanil.

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

for (int koht 0;koht<10;koht++) See on Arduino for tsükkel, mida korratakse 10 korda, suurendades igal iteratsioonil muutujat koht alates 0-st kuni 9-ni.

rtc.begin( )

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.

if (! rtc.isrunning())

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() 

LCD.write () on Arduino meetod, mida kasutatakse sümboli väljutamiseks LCD-ekraanile. See võimaldab kuvada ASCII kodeeringus esitatud sümboleid, näiteks tähti, numbreid, kirjavahemärke ja muid erimärke.

if (length < numCols)

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.

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

LiquidCrystal Arduino kuvariga (LCD) töötamiseks. Sulgudes näidatakse pine, millega on ühendatud erinevad näidikusignaalid, näiteks RS, E, D4, D5, D6 ja D7. See võimaldab teil hallata ja kuvada teavet LCD-ekraanil.

Kasutamisvõimalused tavaelus:

Elus kasutatakse reklaamimiseks infostendi või -ekraani. Infoekraane kasutatakse erinevates tootmis- või tööriistades. Muuseumides ja kunstigaleriides. Parkides ja looduskaitsealadel. Turismiatraktsioonides.
Avalikus kohas. Raamatukogudes, veeparkides, büroohoonetes, haiglates ja kaubanduskeskustes.