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