Εισαγωγή
Τα υλικά που θα χρειαστούμε
Για το tutorial αυτό θα χρειαστούμε:
(και φυσικά μερικά καλώδια, 4 στην περίπτωση μας) |
Διεύθυνση I2C συσκευής
Κάθε i2c συσκευή διαθέτει μια διεύθυνση. Η δικιά μου οθόνη έχει διεύθυνση 0x3F, στο ίδιο module συναντάμε και by default την 0x27, η οποία μπορεί να αλλάξει βραχυκυκλώνοντας τα pins Α0, Α1, Α2. Αν θέλετε να αλλάξετε την διεύθυνση της οθόνης, ακολουθήστε το παρακάτω πίνακα (1= Χωρίς βραχυκύκλωμα, 0 = με βραχυκύκλωμα):
Το κύκλωμα
Οι συνδέσεις είναι πολύ απλές,,
- GND στο GND
- Vcc στο 5V
- SDA στο Analog 4
- SCL στο Analog 5
I2C Address Scanner
Τον παρακάτω κώδικα τον βρήκα απο εδώ, θα σας βοηθήσει να βρείτε την διεύθυνση i2c της συσκευής σας σε περίπτωση που αντιμετωπίσετε κάποιο πρόβλημα ή αν θέλετε να επιβεβαιώσετε κάποια αλλαγή.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | // I2C Scanner // Written by Nick Gammon // Date: 20th April 2011 #include <Wire.h> void setup() { Serial.begin (9600); Serial.println ("I2C scanner. Scanning ..."); byte count = 0; Wire.begin(); for (byte i = 8; i < 120; i++) { Wire.beginTransmission (i); if (Wire.endTransmission () == 0) { Serial.print ("Found address: "); Serial.print (i, DEC); Serial.print (" (0x"); Serial.print (i, HEX); Serial.println (")"); count++; delay (1); // maybe unneeded? } // end of good response } // end of for loop Serial.println ("Done."); Serial.print ("Found "); Serial.print (count, DEC); Serial.println (" device(s)."); } // end of setup void loop() {} |
Ανοίξτε την σειριακή οθόνη για να πάρετε το αποτέλεσμα.
|
|
Ο κώδικας
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE) αρχικοποιεί την βιβλιοθήκη, αλλάξτε την διεύθυνση i2c 0x3F αν χρειαστεί.
Η εντολή 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).
Η εντολή 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).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* I2C LCD 16x2 Arduino Tutorial * More info http://www.ardumotive.com/i2clcd(en).html * Dev: Michalis Vasilakis Date: 19/11/2016 Ver. 1.0 */ //Libraries #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address, if it's not working try 0x27. void setup(){ lcd.begin(16,2); // iInit the LCD for 16 chars 2 lines lcd.backlight(); // Turn on the backligt (try lcd.noBaklight() to turn it off) lcd.setCursor(0,0); //First line lcd.print("I2C LCD Tutorial"); lcd.setCursor(0,1); //Second line lcd.print("*Ardumotive.com*"); } void loop(){ } |
Κατεβάστε τον κώδικα απ' εδώ και ανοίξτε το αρχείο με το Arduino IDE. Μέσα θα βρείτε και τις σχετικές βιβλιοθήκες.
|
|
Μπορείτε να κάνετε τις δικές σας παρεμβάσεις στον κώδικα, δοκιμάστε για παράδειγμα να αλλάξετε το μήνυμα στην πρώτη και δεύτερη γραμμή
Well done!
Μόλις ολοκληρώσατε άλλο ένα "How to" tutorial και μάθατε πως να χρησιμοποιείτε μια οθόνη I2C LCD.
Ελπίζω να σας άρεσε, αν θέλετε μπορείτε να αφήσετε το σχόλιο σας παρακάτω.
Ελπίζω να σας άρεσε, αν θέλετε μπορείτε να αφήσετε το σχόλιο σας παρακάτω.