Praktika 5 LCD ekraan

Katse LCD ekraani kasutamine:

kasutatud komponendid:

1 x 1602 LCD ekraan 

1 x potentsiomeeter 

16 x tavalised üksikud isane-isane juhtmed 

1 x 330 Ω takisti

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

}

5.2. DateTime (RTClib.h teeke kasutamine)

kasutatud komponendid:

pole

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

Ülesanne 5 Interaktiivne infoekraan «Ilmajaam»

kasutatud komponendid:

1 Arduino Uno R3
1 LCD 16 x 2
1 250kΩ Potentiometer
1 220Ω Resistor

Kood:

#include <LiquidCrystal.h>
#include <RTClib.h>
RTC_DS1307 rtc;
const int POTENTIOMETER_PIN=0;
const int rs=12, en=11, d4=5, d5=4, d6=3, d7=2;
const int numRows=2;
const int numCols=16;
const byte customChar[8]={
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111
};
const char chessboard1[numRows][numCols+1]={
  " 0 0 0 0 0 0 0 0 ",
  "0 0 0 0 0 0 0 0  "
};
const char chessboard2[numRows][numCols+1]={
  "0 0 0 0 0 0 0 0 ",
  " 0 0 0 0 0 0 0 0"
};
int potentiometerValue;
float voltage;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
 
String StringList[5] = {"Hello world!    ","Hello Vlad!     ","Hello Bogdan!   ","Tere paevast!   ","Tere!           "};
byte pickedIndex;
String text;
 
void displayChessboard(const char board[numRows][numCols + 1]) {
  lcd.clear();
  for (int row = 0; row < numRows; row++) {
    lcd.setCursor(0, row);
    for (int col = 0; col < numCols; col++) {
      if (board[row][col] == '0') {
        lcd.write(byte(0));
      } else {
        lcd.print(board[row][col]);
      }
    }
  }
}
   
void lcdClear1() {
  if ((voltage >= 0) && (voltage < 3)) {
    lcd.clear();
  }
}
 
void lcdClear2() {
  if ((voltage >= 3) && (voltage <= 5)) {
    lcd.clear();
  }
}
 
void setup() {
  rtc.begin();
  rtc.adjust(DateTime(__DATE__, __TIME__));
  lcd.begin(numCols, numRows);
  lcd.createChar(0, customChar);
  pinMode(POTENTIOMETER_PIN,INPUT);
}
 
void loop() {
  pickedIndex = random(5);
  text=StringList[pickedIndex];
  int len=text.length();
  potentiometerValue=analogRead(POTENTIOMETER_PIN);
  voltage=potentiometerValue*(5.0/1023.0);
  if ((voltage<=5) && (voltage>=3)) {
    lcd.clear();
    for (int i = 0; i < len; i++) {
      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());
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(dt);
      lcd.print(" ");
      lcd.print(tm);
      lcd.setCursor(0, 1);
      lcd.print(text);
      delay(500);
      text = text.substring(1, len) + text.substring(0, 1);
    }
    } else if ((voltage<=3) && (voltage>=0)) {
    delay(1000);
    displayChessboard(chessboard1);
    lcdClear2();
    delay(1000);
    displayChessboard(chessboard2);
    lcdClear2();
    }
}

Uued funktsioonid:

  1. LiquidCrystal lcd(rs, en, d4, d5, d6, d7): Initsialiseerib LCD ekraani.
  2. lcd.begin(numCols, numRows): Seab LCD ekraani veergude ja ridade arvu.
  3. lcd.createChar(0, customChar): Loob LCD ekraanil kuvatava uue kohandatud tähemärgi.
  4. lcd.clear(): Kustutab kogu teksti LCD ekraanilt, jättes ekraani tühjaks.
  5. lcd.setCursor(column, row): Määrab kursori asukoha ekraanil, et järgmine tekst või sümbol kuvataks just sellest asukohast alates.
  6. lcd.write(byte): Kuvab ekraanil teatud positsioonil LCD-le eelnevalt defineeritud kohandatud tähemärgi.
  7. lcd.print(data): Prindib LCD ekraanile etteantud andmed. Andmed võivad olla teksti või numbrilised väärtused.

Lisa kommentaar