- Απαιτούμενα υλικά:
- Ενότητα γραφικών οθόνης Nokia 5110:
- Διάγραμμα κυκλώματος:
- Πρόγραμμα Arduino και Εργασία:
Το εικονικό όνομα " Nokia 5110 " θα έπρεπε να είχε αγοράσει αναμνήσεις από το ισχυρό κινητό τηλέφωνο Nokia που ήταν πολύ δημοφιλές κατά τη διάρκεια της δεκαετίας του '90. Το μοντέλο 5110 ήρθε με μια Γραφική Οθόνη που ήταν αρκετή για να λειτουργήσει ως οθόνη προβολής για το κινητό τότε. Αυτή η οθόνη ήταν σε θέση να εμφανίζει τα πάντα, από αλφαριθμητικούς χαρακτήρες έως μικρά γραφικά που είναι ό, τι απαιτείται για το κινητό τηλέφωνο. Καθώς η γη περιστρέφεται νέες τεχνολογίες με λαμπερές οθόνες αφής που εμφανίζονται και αυτή η οθόνη δεν χρησιμοποιείται πλέον. Ας ελπίσουμε όμως ότι μπορούν να χρησιμοποιηθούν σε ηλεκτρονικές εφαρμογές όπου πρέπει να εμφανίζονται μικρά γραφικά και να αποφεύγεται η σπατάλη χρημάτων σε μεγάλες οθόνες LCD. Έτσι, σε αυτό το σεμινάριο θα μάθουμε πώς να συνδέουμε ένα Nokia 5110 Graphical LCD με το Arduino και να το λειτουργούμε.
Αυτές οι οθόνες LCD έχουν ασπρόμαυρα εικονοστοιχεία διαστάσεων 84 × 48. Μπορεί να φαίνονται μονότονα αλλά μπορούν ακόμα να χρησιμοποιηθούν για την εμφάνιση αξιοπρεπών γραφικών για τα έργα σας και μπορούν εύκολα να χρησιμοποιηθούν με μικροελεγκτές όπως το Arduino. Ας ξεκινήσουμε λοιπόν….!
Απαιτούμενα υλικά:
- Arduino Board (οποιαδήποτε έκδοση)
- Οθόνη Nokia 5110
- Σύνδεση καλωδίων
Ενότητα γραφικών οθόνης Nokia 5110:
Υπάρχουν δύο τύποι αυτών των LCD γραφικών διαθέσιμων στην αγορά. Το ένα με κολλητικά τόσο πάνω όσο και κάτω από την οθόνη και το άλλο με κολλητικά μόνο στο κάτω μέρος της οθόνης. Αυτό που χρησιμοποιούμε ανήκει στον τύπο 2, όπου υπάρχουν επιθέματα μόνο κάτω από την οθόνη. Και οι δύο μονάδες λειτουργούν το ίδιο και ως εκ τούτου οι συνδέσεις είναι ίδιες και για τα δύο. Ανεξάρτητα από το τι ενότητα είναι, μπορείτε να ακολουθήσετε το σεμινάριο.
Όπως προαναφέρθηκε, το Nokia 5110 Graphical LCD έχει 84 pixel σε οριζόντια και 48 pixel σε κατακόρυφο. Το συνολικό μέγεθος της οθόνης είναι 1,72 'x 1,72'. Η μονάδα διαθέτει 6 ακίδες εισόδου χρησιμοποιώντας τις οποίες μπορούμε να το συνδέσουμε σε οποιονδήποτε μικροελεγκτή μέσω επικοινωνίας SPI. Το IC διασύνδεσης που επικοινωνεί μεταξύ της οθόνης και του Arduino είναι το IC ελεγκτή οθόνης Philips PCD8544 του οποίου το δελτίο δεδομένων μπορεί να βρεθεί εδώ. Ωστόσο, εάν χρησιμοποιείτε το Arduino για να επικοινωνήσετε με αυτό το IC, τότε δεν χρειάζεται να ανησυχείτε για το φύλλο δεδομένων, καθώς υπάρχουν βιβλιοθήκες που είναι έτοιμες για λήψη και χρήση. Η ενότητα που χρησιμοποιούμε εδώ φαίνεται παρακάτω.
Διάγραμμα κυκλώματος:
Το πλήρες διάγραμμα κυκλώματος για τη σύνδεση Nokia5110 Graphical LCD με το Arduino δίνεται παρακάτω.
Η μονάδα οθόνης διαθέτει 8 ακίδες που χρησιμοποιούνται για τη ρύθμιση μιας επικοινωνίας SPI με το Arduino. Η μονάδα τροφοδοτείται με τον πείρο 3.3V της πλακέτας Arduino. Σημειώστε ότι αυτές οι μονάδες λειτουργούν με λογική 3.3V και ως εκ τούτου δεν παρέχουν 5V στον πείρο Vcc των οθονών. Έχω συνδέσει απευθείας την καρφίτσα οθόνης στο Arduino, παρόλο που η οθόνη LCD λειτουργεί με λογική 3.3V και η Arduino με λογική 5V επειδή μόνο τότε βρήκα την οθόνη LCD να λειτουργεί σωστά. Μπορείτε να χρησιμοποιήσετε ένα διαχωριστικό τάσης για να μετατρέψετε 5V σε 3.3V εάν απαιτείται, αλλά για μένα λειτουργεί μόνο χωρίς τη λογική μετατροπή. Οι συνδέσεις είναι πολύ απλές και ευθείες. Μόλις τελειώσετε με τις συνδέσεις, το σύστημά σας θα μοιάζει με αυτό που φαίνεται παρακάτω.
Πρόγραμμα Arduino και Εργασία:
Ακολουθήστε τα παρακάτω βήματα για να προγραμματίσετε το Arduino σας για το Nokia 5110 Display. Τα βήματα προϋποθέτουν ότι έχετε ήδη εγκαταστήσει το Arduino IDE και είστε εξοικειωμένοι με τη χρήση του.
Βήμα 1: Ανοίξτε το Arduino IDE στον υπολογιστή σας και επιλέξτε την κατάλληλη πλακέτα στο μενού εργαλείων μετά τη σύνδεση του Arduino στον υπολογιστή σας.
Βήμα 2: Κάντε κλικ εδώ για να κατεβάσετε το Nokia 5110 Display Library by Adafruit library από το αποθετήριο GitHub.
Βήμα 3: Μετά τη λήψη του αρχείου Zip, επιλέξτε Σκίτσο -> Συμπερίληψη βιβλιοθήκης -> Προσθήκη βιβλιοθήκης.ZIP και περιηγηθείτε στην τοποθεσία όπου έγινε λήψη του ZIP.
Σημείωση: Θα πρέπει επίσης να κατεβάσετε τον πυρήνα γραφικών Adafruit GFX που κάνει όλους τους κύκλους, το κείμενο, τα ορθογώνια κ.λπ..
Βήμα 4: Τώρα ανοίξτε το παράδειγμα παραδείγματος επιλέγοντας Αρχείο -> Παραδείγματα -> Adafruit PCD Nokia 5110 LCD Library -> pcdtest και κάντε κλικ στο κουμπί αποστολής
Βήμα 5: Μόλις φορτωθεί το πρόγραμμα, πατήστε το κουμπί επαναφοράς στο Arduino και θα πρέπει να δείτε το παράδειγμα προγράμματος που εμφανίζει όλες τις κινούμενες εικόνες, όπως φαίνεται στο βίντεο που δίνεται στο τέλος αυτού του σεμιναρίου.
Μπορείτε να διαβάσετε το παράδειγμα προγράμματος για να κατανοήσετε τις διάφορες ενσωματωμένες λειτουργίες που θα μπορούσαν να χρησιμοποιηθούν για την εκτέλεση διαφόρων σχεδίων γραφικών στην οθόνη LCD. Αλλά ας προχωρήσουμε ένα βήμα παραπέρα και να δοκιμάσουμε να εμφανίσουμε το CircuitDigest Logo στην οθόνη LCD.
Τώρα ανοίξτε την απαιτούμενη εικόνα στο Paint και αλλάξτε το μέγεθος της εικόνας. Το μέγιστο μέγεθος εικόνας που μπορούμε να χρησιμοποιήσουμε για την οθόνη μας είναι 84 × 48.
Αφού αλλάξετε το μέγεθος της εικόνας, αποθηκεύστε την εικόνα ως bitmap (ασπρόμαυρη) χρησιμοποιώντας την επιλογή αποθήκευσης ως Paint. Για να εμφανίσουμε την εικόνα ως bitmap στην οθόνη LCD θα χρειαζόμαστε λογισμικό που θα μπορούσε να μετατρέψει την εικόνα bitmap σε κώδικα. Μπορείτε να κατεβάσετε το λογισμικό κάνοντας κλικ εδώ. Μετά τη λήψη αποσυμπιέστε το αρχείο και κάντε κλικ στο "BitmapEncoder" για να ξεκινήσετε την εφαρμογή. Ανοίξτε την εικόνα bitmap που μόλις αποθηκεύσαμε χρησιμοποιώντας αυτό το λογισμικό για να λάβετε τη σειρά κωδικοποιημένων τιμών. Μπορείτε να αντιγράψετε απευθείας αυτές τις τιμές και να τις επικολλήσετε στη συστοιχία Arduino. Η τιμή που εμφανίζεται από το λογισμικό για το λογότυπό μας εμφανίζεται παρακάτω
Όπως μπορείτε να δείτε ο πίνακας ξεκινά με την τιμή 48, 48 αυτό είναι το μέγεθος της εικόνας μας. Δεν πρέπει να το προσθέσουμε στη σειρά μας. Επομένως, καταργήστε τις δύο πρώτες τιμές και χρησιμοποιήστε τις υπόλοιπες ως την τιμή πίνακα στο πρόγραμμα. Ο πίνακας θα μοιάζει παρακάτω. Το πλήρες πρόγραμμα δίνεται στο τέλος αυτής της σελίδας για αναφορά σας.
static const unsigned char Logo PROGMEM = {B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00001111, B11111000, B00000000, B00000000, B00000000, B000000, B000000, B000000, B000000, B000000, B000000, B000000 B11111111, B11000000, B00000000, B00000000, B00001110, B00111110, B00111111, B11110000, B00000000, B00000000, B00111110, B00111110, B10000000, B01111100, B00000000, B00000000, B001100, B000000, B000000, B000000, B000000, B00000000 B00001111, B00000000, B00000001, B11111000, B11111111, B00111111, B10000111, B10000000, B00000011, B11111000, B11111111, B11111111, B11000011, B11000000, B00000111, B11110001, B11110001, B11110001, B11110001, B11110001, B11110001 B01100000, B00000000, B00000011, B11100000, B00001001, B11111100, B00000000, B00000000, B00000111,B11100000, B00011001, B11111110, B00000000, B00000000, B00000111, B11000000, B00000001, B11111111, B10000000, B00011111, B11111111, B11000111, B11100011, B11111111, B11111000, B1111, B1111, B1111, B1111, B111111, B111111 B11111111, B11111111, B11111100, B00111111, B11111111, B00011111, B11111111, B11111111, B11111100, B00111111, B11111110, B00111111, B00111111, B11111111, B11111110, B01111111, B11111110, B00111110, B00000000, B01111111, B11111100, B01111111, B11111100, B01111100, B11000000, B00000000, B00000000, B01111111, B11111100, B01111110, B10000000, B00000000, B00000000, B00000000, B00000000, B11111110, B00111111, B11111111, B11111110, B00000000, B00000001, B11111111, B11111111, B11111111, B11111110, B01111111, B11111111, B11111111, B11111111, B11111111, B11111110, B01111111, B11111111, B11111111, B11111111, B11111111, B11111110, B01111111, B11111111,B11000111, B11111111, B11111111, B11111110, B00111111, B11111111, B10000011, B11111110, B00000000, B00000000, B00111111, B11111111, B10110011, B11111000, B00000000, B00000000, B110000, B110000, B11000000, B11000000, B11000000 B10000001, B11111111, B11111100, B00000000, B00011111, B11111000, B00000111, B11111111, B11111000, B00000000, B00000111, B11111110, B00011111, B11111111, B11111000, B00000000, B110011, B110000, B110000, B111100, B11000000 B11111111, B11110000, B00000111, B11111000, B00001111, B11111111, B11000000, B00000000, B00000011, B11111100, B00100111, B11111111, B00000000, B00000000, B00000011, B11111111, B00110111, B11111100, B00000000, B00000000, B00000001, B11111111, B10000111, B11011000, B00111111, B10000000, B00000000, B11111111, B11001111, B10000000, B11111111, B00000000, B00000000, B01111111,B11111111, B10110001, B11111110, B00000000, B00000000, B00011111, B11111111, B10110111, B11111100, B00000000, B00000000, B00001111, B11111111, B10000111, B11110000, B00000000, B00000000, B00000011, B11111111, B11111111, B11000000, B00000000, B00000000, B00000000, B11111111, B11111111, B00000000, B00000000, B00000000, B00000000, B00001111, B11110000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000, B00000000};
Τώρα για να εμφανιστεί αυτό το bitmap πρέπει να χρησιμοποιήσουμε τις ακόλουθες γραμμές κώδικα. Όπου διαγράφονται τα προηγούμενα δεδομένα στην οθόνη και γράφεται η νέα εικόνα bitmap.
display.clearDisplay (); display.drawBitmap (20, 0, Λογότυπο, 48, 48, 1); display.display ();
Η γραμμή display.drawBitmap (20, 0, Logo, 48, 48, 1); εμφανίστε τη θέση, το μέγεθος και το χρώμα της εικόνας bitmap. Η σύνταξη μπορεί να δοθεί ως.
display.drawBitmap (X_Position, Y_Position, Name of Array, μήκος εικόνας, πλάτος εικόνας);
Το μήκος και το πλάτος της εικόνας μπορούν να ληφθούν από τα δύο πρώτα στοιχεία του πίνακα αντίστοιχα όπως αναφέρθηκε προηγουμένως. Όταν εκτελεστεί αυτός ο κωδικός θα εμφανιστεί το bitmap στην οθόνη LCD όπως φαίνεται παρακάτω.
Μπορείτε επίσης να εμφανίσετε απλό κείμενο όπως φαίνεται παρακάτω:
Ελπίζω να καταλάβετε το σεμινάριο και να συνδέσετε το Nokia 5110 LCD με το Arduino. Με αυτήν την γραφική οθόνη στο μανίκι σας μπορείτε να δημιουργήσετε πολλά έργα που απαιτούν μικρές λεπτομέρειες γραφικών. Η πλήρης εργασία βρίσκεται στο παρακάτω βίντεο. Εάν αντιμετωπίζετε οποιοδήποτε πρόβλημα να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε το φόρουμ για να δημοσιεύσετε το πρόβλημά σας ή τις παρακάτω ενότητες σχολίων.