5. Katse LCD ekraani kasutamine

Komponendid:

1 x 1602 LCD ekraan 

1 x potentsiomeeter 

16 x tavalised üksikud isane-isane juhtmed 

1 x 330 Ω takisti

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.

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

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

Kasutuskomponeendid:

  1. Arduino Uno
// 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);
}

Praktiline Ülesanne 5

Komponendid:

1 x 16×02 LCD ekraan 

1 x potentsiomeeter 

1 x tavalised üksikud isane-isane juhtmed 

1 x 220 Ω takisti

Töö kirjeldus: Lühi animatsioon, reklaami paroodia.

https://www.tinkercad.com/things/bprP9RlUCWM-lcd-project

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

#include <LiquidCrystal.h>

int sensorPin = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte unhappypackman1[8] = {
	0b00111,
	0b01111,
	0b11111,
	0b11101,
	0b11111,
	0b11100,
	0b01101,
	0b00111
};

byte unhappypackman2[8] = {
	0b11100,
	0b11110,
	0b11111,
	0b10111,
	0b11111,
	0b00111,
	0b10110,
	0b11100
};

byte happypackman1[8] = {
	0b00111,
	0b01111,
	0b11001,
	0b11011,
	0b11111,
	0b11011,
	0b01100,
	0b00111
};

byte happypackman2[8] = {
	0b11100,
	0b11110,
	0b10011,
	0b11011,
	0b11111,
	0b11011,
	0b00110,
	0b11100
};

byte packman1[8] = {
  0b11100,
  0b11110,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b11110,
  0b11100
};

byte packman2[8] = {
  0b00011,
  0b00111,
  0b01110,
  0b01111,
  0b01111,
  0b01111,
  0b00111,
  0b00011
};

byte packmanEat[8] = {
  0b00011,
  0b00111,
  0b01110,
  0b00011,
  0b00001,
  0b00001,
  0b00011,
  0b00111
};

byte food[8] = {
  0b01110,
  0b01110,
  0b01110,
  0b00100,
  0b11111,
  0b00100,
  0b01010,
  0b10001
};

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.createChar(1, packman1);
  lcd.createChar(2, packman2);
  lcd.createChar(3, packmanEat);
  lcd.createChar(4, food);
  lcd.createChar(5, happypackman1);
  lcd.createChar(6, happypackman2);
  lcd.createChar(7, unhappypackman1);
  lcd.createChar(8, unhappypackman2);
}

void placeFoodLow(int i){
  int p1 = 13;
  int p2 = 9;
  int p3 = 5;
  int p4 = 1;
  if (i < p1){
    lcd.setCursor(p4, 1);
    lcd.write(byte(4));
  }
  if (i < p2){
    lcd.setCursor(p3, 1);
    lcd.write(byte(4));
  }
  if (i < p3){
    lcd.setCursor(p2, 1);
    lcd.write(byte(4));
  }
  if (i < p4){
    lcd.setCursor(p1, 1);
    lcd.write(byte(4));
  }
}

void placeFoodUp(int i){
  int p1 = 13;
  int p2 = 9;
  int p3 = 5;
  int p4 = 1;
  if (i > p1){
    lcd.setCursor(p1, 0);
    lcd.write(byte(4));
  }
  if (i > p2){
    lcd.setCursor(p2, 0);
    lcd.write(byte(4));
  }
  if (i > p3){
    lcd.setCursor(p3, 0);
    lcd.write(byte(4));
  }
  if (i > p4){
    lcd.setCursor(p4, 0);
    lcd.write(byte(4));
  }
}

void loop() {
  int val = analogRead(sensorPin);
  val = map(val, 0, 1023, 1, 2);
  val = constrain(val, 1, 2);
  if (val == 1) {
    delay(1000);
    lcd.clear();
    lcd.setCursor(7, 0);
    lcd.write(byte(7));
    lcd.setCursor(8, 0);
    lcd.write(byte(8));
    delay(4000);
    for (int i = 0; i < 16; i++) {
      lcd.clear();
      placeFoodLow(i);
      lcd.setCursor(15 - i, 1);
      lcd.write(byte(1));
      lcd.setCursor(14 - i, 1);
      lcd.write(byte(2));
      delay(200);
      lcd.clear();
      placeFoodLow(i);
      lcd.setCursor(15 - i, 1);
      lcd.write(byte(1));
      lcd.setCursor(14 - i, 1);
      lcd.write(byte(3));
      delay(200);
    }
    for (int i = 16; i > 0; i--) {
      lcd.clear();
      placeFoodUp(i);
      lcd.setCursor(i, 0);
      lcd.write(byte(1));
      lcd.setCursor(i-1, 0);
      lcd.write(byte(2));
      delay(150);
      lcd.clear();
      placeFoodUp(i);
      lcd.setCursor(i, 0);
      lcd.write(byte(1));
      lcd.setCursor(i-1, 0);
      lcd.write(byte(3));
      delay(150);
    }
    lcd.clear();
    lcd.setCursor(8, 0);
    lcd.write(byte(6));
    lcd.setCursor(7, 0);
    lcd.write(byte(5));
    delay(2000);
    lcd.setCursor(2, 0);
    lcd.print("Sa pole sina");
    delay(2000);
    lcd.setCursor(0, 0);
    lcd.print("Kui oled naljane");
    delay(4000);
  }
  if (val == 2) {
    lcd.clear();
  }
}
Scroll to Top