Uus funktsioonid:
#include <LiquidCrystal.h> – raamatukogu LCD-ekraani juhtimiseks
lcd.setCursor(2, 0) – seab kursori LCD-ekraanil positsioonile (2, 0), st esimese rea 3. veergu.
lcd.write(n) – Kuvab n-koodiga tähemärgi (antud juhul on tegemist kassi kujutisega, mis oli eelnevalt kohandatud tähemärgina defineeritud).
milles() – kirjeldatud allpool
Töö protses:
See kood juhib LCD-ekraani, mis näitab graafilisi sümboleid. See loob mitmeid kohandatud sümboleid (naeratavad näod, kass, tüdruk, tüdruk, tüdruk, poiss ja süda). Loop() kuvab kõigepealt kassi ja tüdrukut, seejärel poissi, kelle käed on ülespoole tõstetud, seejärel 10 naeratusnägu ja taas poissi, kelle käed on alla tõstetud. Seejärel kuvatakse loopiga südameid, mis liiguvad vasakult paremale. Kogu protsessiga kaasnevad viivitused, et sümbolid oleksid ekraanil nähtavad.
Kasutatud:
1x LCD ekraan
1x Potentsiomeeter
16x Juhtmed
1x 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 LCD 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);
}
Foto:

Uus funktsioon :
milles() – mõõdab aega millisekundites alates Arduino sisselülitamisest.
Töö protses:
Funktsioon millis() saab millisekundite arvu, mis on möödunud Arduino sisselülitamisest alates. Muutuja previousMillis salvestab aja, mil LED viimati sisse või välja lülitati. string digitalWrite(ledPin, !digitalRead(ledPin)) kontrollib LED-i praegust olekut (sisse, kui see oli välja lülitatud ja vastupidi).
Kasutatud:
1x LED lamp
1x 220om takisti
3x Juhtmed
Kood:
'const int ledPin = 13;
unsigned long previousMillis = 0;
const long interval = 1000; //(1000 миллисекунд)
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite(ledPin, !digitalRead(ledPin));
}
}
Foto:

Interaktiivne infoekraan “Ilmajaam”
Töö protsess:
Kood juhib LCD-ekraani, näitab temperatuuri ja valgustugevust. See loeb andurilt temperatuuri ja arvutab selle Celsiuse ja Fahrenheiti järgi, mis vahetuvad iga sekundiga. Valguse tase loetakse ja kuvatakse luksides. Iga 10 sekundi järel ilmub ekraanile naeratav nägu: naeratav, kui temperatuur on üle 25 °C, ja kurb, kui alla selle.
Kasutatud:
1x LCD Ekraan
1x Temperatuuri Sensor
1x Photoresistor
1x Potentsiometer
1x 220 Oom Takisti
1x 10K Oom Takisti
21x Juhtmed
Kood:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int tempPin = A1;
const int lightPin = A0;
float temperature;
float voltage;
float degreesF;
int lightLevel;
unsigned long previousMillis = 0;
const long interval = 1000;
unsigned long emojiMillis = 0;
const long emojiInterval = 10000;
unsigned long lastEmojiShowTime = 0;
unsigned long lastDegreeSwitch = 0;
bool fDegrees = false;
void setup() {
lcd.begin(16, 2);
pinMode(tempPin, INPUT);
pinMode(lightPin, INPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
lightLevel = analogRead(lightPin);
voltage = getVoltage(tempPin);
temperature = (voltage - 0.5) * 100.0;
degreesF = temperature * (9.0/5.0) + 32.0;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
if (currentMillis - lastDegreeSwitch > 500) {
lastDegreeSwitch = currentMillis;
fDegrees = !fDegrees;
}
if (fDegrees) {
lcd.print(degreesF, 1);
lcd.print(" F");
}
else {
lcd.print(temperature, 1);
lcd.print(" C");
}
lcd.setCursor(0, 1);
lcd.print("Light: ");
lcd.print(1023-lightLevel);
lcd.print(" lx");
}
if (currentMillis - lastEmojiShowTime >= emojiInterval) {
lastEmojiShowTime = currentMillis;
lcd.clear();
lcd.setCursor(6, 0);
if (temperature > 25) {
lcd.print(":)");
} else {
lcd.print(":(");
}
delay(1000);
}
}
float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814);
}
Foto:

Video:

