Πως δουλεύει μια LCD οθόνη στο Arduino.

2019-05-22

Η βιβλιοθήκη "LiquidCrystal' μας επιτρέπει να χρησιμοποιήσουμε πολύ εύκολα οθόνες που είναι συμβατές με το Hitachi HD44780 driver. Στο εμπόριο υπάρχουν πολλές απο αυτές σε διάφορα μεγέθη τις οποίες μπορείτε εύκολα να διακρίνετε από τους 16 ακροδέκτες που διαθέτουν για την σύνδεση με κάποιον μικροελεγκτή.
Στον οδηγό αυτό θα μάθετε να χρησιμοποιείτε μια οθόνη LCD 16x2 (αλλά και 20x4, κ.τ.λ.) με το Arduino uno. Επίσης, θα μάθετε για τις συναρτήσεις lcd.begin(), lcd.print() και lcd.setCursor().

Τα υλικά που θα χρειαστούμε

Για το tutorial αυτό θα χρειαστούμε:

  • Arduino uno
  • Breadboard
  • LCD 16x2
  • Ποτενσιόμετρο (π.χ. 4.7K)


Ο κώδικας

Η εντολή lcd.begin(16,2) αρχικοποιεί την βιβλιοθήκη με τις γραμμές και στήλες της οθόνης που έχουμε. Για παράδειγμα, αν είχαμε μια οθόνη με 20 στήλες και 4 γραμμές (20x4) θα έπρεπε να αλλάξουμε την εντολή σε lcd.begin(20x4).Η εντολή lcd.print("--minima--") εκτυπώνει ένα μήνυμα στην πρώτη γραμμή και πρώτη στήλη της οθόνης. Το "minima" θα πρέπει να είναι με λατινικούς χαρακτήρες (δεν επιτρέπετε χρήση Ελληνικών) και να έχει μέγιστο μήκος όσο και το μέγεθος της οθόνης σε στήλες. Για παράδειγμα μια οθόνη με 16 στήλες μπορεί να εμφανίσει στην πρώτη γραμμή μήνυμα με μέγιστο μήκος 16 χαρακτήρες (μαζί με τα κενά), ενώ μια οθόνη με 20 στήλες μπορεί να εμφανίσει μήνυμα με μέγιστο μήκος 20 χαρακτήρες.

Η εντολή lcd.setCursor(0,1) μετακινεί τον δείκτη στην πρώτη στήλη και δεύτερη γραμμή της οθόνης. Αν είχαμε μια οθόνη 20x4 και θέλαμε να ξεκινήσουμε το μήνυμα μας στην πέμπτη στήλη της τρίτης γραμμής θα αλλάζαμε την εντολή σε lcd.setCursor(4,2).

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//i2c pins
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //void setup()
{
//WE define our LCD 16 columns and 2 rows
lcd.begin(16,2);
lcd.backlight();//Power on the back light
//lcd.backlight(); Power off the back light}void loop()
{
//Write your text:
lcd.setCursor(0,0); //we start writing from the first row first column
lcd.print(" ELECTRONOOBS"); //16 characters poer line
delay(1000);//Delay used to give a dinamic effect
lcd.setCursor(0,1);
lcd.print("Thanks, share");
delay(8000);lcd.clear();//Clean the screen
lcd.setCursor(0,0);
lcd.print(" How r U?");
lcd.setCursor(0,1);
lcd.print(" ELECTRONOOBS");
delay(8000);
}

Δημιουργήστε δωρεάν ιστοσελίδα! Αυτή η ιστοσελίδα δημιουργήθηκε με τη Webnode. Δημιουργήστε τη δική σας δωρεάν σήμερα! Ξεκινήστε
Χρησιμοποιούμε τα cookies για να εξασφαλίσουμε την σωστή λειτουργία και ασφάλεια των ιστοσελίδων μας και για να σας προσφέρουμε την καλύτερη δυνατή εμπειρία χρήσης.

Προχωρημένες ρυθμίσεις

Μπορείτε να προσαρμόσετε τις προτιμήσεις σας για τα cookies εδώ. Ενεργοποιήστε ή απενεργοποιήστε τις παρακάτω κατηγορίες και αποθηκεύστε τις επιλογές σας.