Η Κίνα παρέχει για μια μικρή τιμή μια τεράστια ποσότητα όχι μόνο ηλεκτρονικών συσκευών, αλλά και των εξαρτημάτων τους. Μια μικρή σειρά από διόδους εκπομπής φωτός μπορεί να δείξει τις πληροφορίες που χρειάζεστε, πιθανώς αριθμούς, καθώς η ανάλυση δεν είναι πολύ υψηλή, LED 8 επί 8, κάθε διάμετρος 3 χλστ. Αυτή η μήτρα λάμπει στο κόκκινο, γιατί είναι η πιο ορατή και τραβάει την προσοχή περισσότερο από άλλα χρώματα.
Εάν έχετε πολλές τέτοιες μήτρες σε LED, μπορείτε να τις συνδέσετε για να δημιουργήσετε μεγάλους πίνακες πληροφοριών.
Οθόνη Matrix - μια συσκευή που αποτελείται από μια μήτρα LED 8x8 και μια πλακέτα ελέγχου που βασίζεται στο τσιπ MAX7219 με τις ελάχιστες απαιτούμενες σωληνώσεις. Στη φωτογραφία μπορείτε ήδη να δείτε την τελική συσκευή, αλλά μου ήρθε ταχυδρομικά με αυτήν τη μορφή, οπότε έπρεπε να πάρω ένα συγκολλητικό σίδερο και να κολλήσω τα πάντα με τον σωστό τρόπο.
Η βασική σύνδεση με την πλακέτα Arduino Nano φαίνεται στο διάγραμμα κυκλώματος.
Όπως μπορείτε να δείτε από το διάγραμμα, όλα είναι απλά, απλά πρέπει να συνδέσετε τις επαφές και των δύο πλακών με καλώδια με την ακόλουθη σειρά:
Arduino Nano | Matrix 8x8 |
PIN 12 | PIN DIN |
PIN 11 | PIN CLK |
PIN 10 | PIN CS |
PIN 5V | PIN 5V |
PIN GND | PIN GND |
Λοιπόν, επιτέλους ήρθε η ώρα να δουλέψετε με τον κώδικα και για να εκτελέσετε τη μήτρα LED, πρέπει να κάνετε λήψη και εγκατάσταση της βιβλιοθήκης LedControl. Η βιβλιοθήκη υποστηρίζει μικροκυκλώματα MAXIM 7221 και 7219. Η μήτρα LED χρησιμοποιεί το MAX7219 ως πρόγραμμα οδήγησης, αυτό χρειαζόμαστε. Νομίζω ότι πρέπει να ξεκινήσουμε με ένα μικρό σκίτσο που δείχνει τις βασικές λειτουργίες αυτής της βιβλιοθήκης. Στο σκίτσο, η συνάρτηση setRow() χρησιμοποιείται για την ενεργοποίηση/απενεργοποίηση των LED. Η σύνταξη για την κλήση της συνάρτησης setRow() είναι:
matrix.setRow(0, row, col, set);
Οπου μήτρα- αντικείμενο κλάσης LedControl
0 - διεύθυνση της συσκευής στο δίαυλο SPI, σε αυτήν την περίπτωση υπάρχει μόνο μία συσκευή και η αρίθμηση ξεκινά από τη διεύθυνση μηδέν
σειρά- σειρά (Πιθανές τιμές από 0 έως 7)
διάσελο- στήλη (Οι πιθανές τιμές είναι από 0 έως 7)
σειρά- τιμή ρύθμισης( αληθής- ανάβω, ψευδής- σβήνω)
matrix.setRow(0, 1, 4, true)
Ενεργοποιήστε το LED στη μήτρα, που βρίσκεται στην 1η σειρά και στην 4η στήλη.
Ενα άλλο παράδειγμα:
int x = 1;
int y = 4;
matrix.setRow(0, x, y, true);
matrix.setRow(0, x, y, false);
Το ίδιο συμβαίνει μόνο με τη χρήση μεταβλητών και την επακόλουθη απενεργοποίηση του αναμμένου LED στις δεδομένες συντεταγμένες. Έτσι, στο σκίτσο, πολλά κινούμενα σχέδια παίζονται χρησιμοποιώντας τη συνάρτηση setRow ().
#include "LedControl.h" //Σύνταξη για τη δημιουργία της κλάσης LedControl(dataPin,clockPin,csPin,numDevices) //Όπου το LedControl είναι αντικείμενο της κλάσης //dataPin είναι η καρφίτσα στην πλακέτα Arduino στην οποία θα το pin DIN be connect //clockPin είναι η ακίδα στην πλακέτα Arduino στην οποία θα συνδεθεί η ακίδα CLK //csPin - η ακίδα στην πλακέτα Arduino στην οποία θα συνδεθεί η ακίδα CS //numDevices - ο αριθμός των συσκευών στο δίαυλο / /Δημιουργήστε ένα αντικείμενο της κλάσης matrix στην περίπτωσή μας με μια συνδεδεμένη συσκευή LedControl matrix = LedControl(12, 11 , 10, 1); //Χρόνος καθυστέρησης για την ενεργοποίηση/απενεργοποίηση της λυχνίας LED στη μήτρα const int delayValue = 100; //Πρωτότυπα λειτουργιών //Διαδοχική ενεργοποίηση/απενεργοποίηση void PointSerialSet(); //Snake από δεξιά προς τα αριστερά void PointRigthToLeft(); //Snake από κάτω προς τα πάνω void PointDownToUp(); //Snake από αριστερά προς τα δεξιά void PointLeftToRigth(); //Snake από πάνω προς τα κάτω void PointUpToDown(); //Εφέ - εξασθενίζοντας παλμό void PointFading(); //Εφέ - κενό παλμού PointPulse(); //Εφέ - αυξανόμενο κενό ώθησης PointClimbing(); //Επίδραση της συστροφής της σπείρας μέσα στο void PointToSpiralIn(); //Επίδραση της περιστροφής του σπειροειδούς κενού προς τα έξω PointToSpiralOut(); void setup() ( // Η συσκευή με διεύθυνση 0 wake by default matrix.shutdown(0, false); //Ρυθμίστε τη φωτεινότητα του πίνακα Led στο 8 //Οι πιθανές τιμές είναι από 0 έως 15 matrix.setIntensity( 0, 8). (); PointPulse() ; PointClimbing(); PointToSpiralIn(); PointToSpiralOut(); ) //Σώματα συναρτήσεων void PointSerialSet() ( //Χρησιμοποιήστε τη συνάρτηση setLed(διεύθυνση, γραμμή, στήλη, σύνολο) //Διαδοχική ενεργοποίηση από σειρές για(int i = 0; i< 8; i ++) { for(int j = 0; j < 8; j ++) { //Включить светодиод matrix.setLed(0, i, j, true); delay(delayValue); //Выключить светодиод matrix.setLed(0, i, j, false); } } } void PointRigthToLeft() { //Используем функцию setLed(address, row, col, set) //Змейка справа - налево for(int i = 7; i >= 0; i --) ( for(int j = 7, n = 0; j >= 0, n< 8; j --, n ++) { if((i % 2) >0) ( matrix.setLed(0, j, i, true); delay(delayValue); matrix.setLed(0, j, i, false); ) else ( matrix.setLed(0, n, i, true); delay(delayValue); matrix.setLed(0, n, i, false); ) ) ) ) void PointDownToUp() ( //Χρησιμοποιήστε τη συνάρτηση setLed(address, row, col, set) //Snake από κάτω προς τα πάνω για (int i = 7; i >= 0; i --) ( for(int j = 7, n = 0; j >= 0, n< 8; j --, n ++) { if((i % 2) >0) ( matrix.setLed(0, i, n, true); delay(delayValue); matrix.setLed(0, i, n, false); ) else ( matrix.setLed(0, i, j, true); delay(delayValue); matrix.setLed(0, i, j, false); ) ) ) ) void PointLeftToRigth() ( //Χρησιμοποιήστε τη συνάρτηση setLed(address, row, col, set) //Snake από αριστερά προς τα δεξιά για (int i = 0 i< 8; i ++) { for(int j = 7, n = 0; j >= 0, n< 8; j --, n ++) { if((i % 2) >0) ( matrix.setLed(0, j, i, true); delay(delayValue); matrix.setLed(0, j, i, false); ) else ( matrix.setLed(0, n, i, true); delay(delayValue); matrix.setLed(0, n, i, false); ) ) ) ) void PointUpToDown() ( //Χρησιμοποιήστε τη συνάρτηση setLed(address, row, col, set) //Snake από πάνω προς τα κάτω για (int i = 0 i< 8; i ++) { for(int j = 7, n = 0; j >= 0, n< 8; j --, n ++) { if((i % 2) >0) ( matrix.setLed(0, i, n, true); delay(delayValue); matrix.setLed(0, i, n, false); ) else ( matrix.setLed(0, i, j, true); delay(delayValue); matrix.setLed(0, i, j, false); ) ) ) ) void PointFading() ( //Χρησιμοποιήστε τη συνάρτηση setLed(address, row, col, set) //Fading effect int upValue = 0 ; int downValue = 7; for(int i = 0; i< 8; i ++) { if(i % 2) { for(int n = downValue; n >= upvalue; n --) ( matrix.setLed(0, n, i, true); delay(delayValue); matrix.setLed(0, n, i, false); ) downValue --; ) else ( for(int j = upValue; j< downValue + 1; j ++) { matrix.setLed(0, j, i, true); delay(delayValue); matrix.setLed(0, j, i, false); } upValue ++; } } } void PointClimbing() { //Используем функцию setLed(address, row, col, set) //Эффект затухания int upValue = 4; int downValue = 4; for(int i = 0; i < 8; i ++) { if(i % 2) { for(int n = downValue; n >= upvalue; n --) ( matrix.setLed(0, n, i, true); delay(delayValue); matrix.setLed(0, n, i, false); ) downValue ++; ) else ( for(int j = upValue; j< downValue + 1; j ++) { matrix.setLed(0, j, i, true); delay(delayValue); matrix.setLed(0, j, i, false); } upValue --; } } } void PointPulse() { //Используем функцию setLed(address, row, col, set) //Эффект пульса for(int i = 0; i < 8; i ++) { if(i == 4) { for(int climb = i; climb >= 0; climb --) ( matrix.setLed(0, climb, i, true); delay(delayValue / 4); matrix.setLed(0, climb, i, false); ) for(int fade = 1; fade< 8; fade ++) { matrix.setLed(0, fade, i, true); delay(delayValue / 4); matrix.setLed(0, fade, i, false); } } else { matrix.setLed(0, 4, i, true); delay(delayValue); matrix.setLed(0, 4, i, false); } } } void PointToSpiralIn() { //Используем функцию setLed(address, row, col, set) //Эффект спирали внутрь int lengthX = 8; // Ширина матрицы int lengthY = 8; // Высота матрицы int pointX = 0; int pointY = 0; int dir = 0; // Направление (0 - вправо, 1 - вниз, 2 - влево, 3 - вверх) int offset = 0; // Смещение // Перебираем всю матрицу for (int i = 0; i < lengthX * lengthY; i++) { matrix.setLed(0, pointY, pointX, true); delay(delayValue); matrix.setLed(0, pointY, pointX, false); if(dir == 0) { pointX ++; if(pointX >= μήκοςX - 1 - μετατόπιση) ( dir = 1; ) συνέχεια; ) if(dir == 1) (pointY ++; if(pointY ><= offset) { dir = 3; } continue; } if(dir == 3) { pointY --; if(pointY <= offset + 1) { dir = 0; offset ++; pointY = offset; } continue; } } } void PointToSpiralOut() { //Используем функцию setLed(address, row, col, set) //Эффект спирали внаружу int lengthX = 8; // Ширина матрицы int lengthY = 8; // Высота матрицы int pointX = 3; //начать с этих координат int pointY = 3; //начать с этих координат int dir = 0; // Направление (0 - вправо, 1 - вниз, 2 - влево, 3 - вверх) int offset = 3; // Смещение // Перебираем всю матрицу for (int i = 0; i < lengthX * lengthY; i++) { matrix.setLed(0, pointY, pointX, true); delay(delayValue); matrix.setLed(0, pointY, pointX, false); if(dir == 0) { pointX ++; if(pointX >= μήκοςX - 1 - μετατόπιση) ( dir = 1; ) συνέχεια; ) if(dir == 1) ( pointY ++; if(pointY >= lengthY - 1 - offset) (dir = 2; ) συνέχεια; ) if(dir == 2) (pointX --; if(pointX<= offset - 1) { dir = 3; } continue; } if(dir == 3) { pointY --; if(pointY <= offset - 1) { dir = 0; offset --; pointY = offset; } continue; } } }
Βίντεο από το σκίτσο:
Αυτό το άρθρο δημιουργήθηκε για όσους αγόρασαν μια γυμνή μήτρα 8x8 και καταχωρητές μετατόπισης 74hc595 και δεν ξέρουν πώς να τα συνδέσουν όλα.
Έψαξα στο Διαδίκτυο για πολύ καιρό για οδηγίες σχετικά με το πώς να συνδέσω τα παραπάνω εξαρτήματα, αλλά βρήκα είτε όχι για τα μητρώα μου είτε με μη λειτουργικά σκίτσα, οπότε αποφάσισα ότι πρέπει ακόμα να δουλέψω με τα χέρια και το κεφάλι μου για να ευχαριστήσω τον εαυτό μου με 8 * 8 εικόνες.
Έχοντας βρει φύλλα δεδομένων για τους καταχωρητές matrix και shift στο Διαδίκτυο, σχεδίασα το ακόλουθο διάγραμμα:
Το 12ο σκέλος και των δύο μικροκυκλωμάτων (πείρο κλειδώματος), για αποθήκευση θυρών είναι κοινό, γιατί δεν έχει νόημα να μανδαλώνουμε τους καταχωρητές σε διαφορετικούς χρόνους. Ορισμένοι από τους ακροδέκτες (άνοδοι) της μήτρας συνδέονται μέσω αντιστάσεων περιορισμού ρεύματος με ονομαστική τιμή 220 ohms. Όλα τα άλλα σύμφωνα με το σχήμα είναι εξαιρετικά απλά. Για κάθε ενδεχόμενο, εικόνες με το pinout του matrix.
Οι εικόνες θα πρέπει να εμφανίζονται γραμμή προς γραμμή (αλλιώς με παρόμοιες μήτρες δεν υπάρχει τρόπος), με μικρή καθυστέρηση (το ανθρώπινο μάτι πρακτικά δεν διακρίνει καθυστέρηση 1ms).
Προσπάθησα να εξηγήσω τα πάντα στο σκίτσο. Κατά τη μεταφόρτωση στον πίνακα, στην οθόνη θα εμφανίζονται οι αριθμοί που θα στείλουμε στην οθόνη της θύρας arduino. (Δείτε βίντεο)
Φωτογραφία της τελικής συσκευής (ζιγκ-ζαγκ στην οθόνη, στο σκίτσο η εικόνα της αποθηκεύεται στη συστοιχία εικόνων)
Στο μέλλον θα προσπαθήσω να κάνω κάτι ενδιαφέρον σε αυτήν την οθόνη.
Τέλος, οι ενότητες matrix έφτασαν από την Κίνα. Κάθε μονάδα αποτελείται από ένα τσιπ MAX7219 (), μια μήτρα LED, έναν πυκνωτή και μια αντίσταση βρίσκονται στην πλεξούδα.
Ελέγχεται από το MAX7219 μέσω διασύνδεσης SPI.
Τα μικροκυκλώματα σε ένα σύμπλεγμα συνδέονται σε σειρά. Διάβασα στο Διαδίκτυο ότι η μέγιστη δυνατή σειριακή σύνδεση επιτρέπει μόνο 8 κομμάτια MAX7219. Μην πιστεύεις. Συνδέθηκαν 16 μονάδες και όλα λειτουργούν καλά.
Οι ενότητες που παρουσιάζονται στο Ali διατίθενται σε διάφορες εκδόσεις. Οι πιο δημοφιλείς είναι 2 τύποι: με μικροκύκλωμα σε DIP και σε πακέτα SOIC. Η μονάδα τσιπ DIP είναι μεγαλύτερη και δεν είναι τόσο βολική όταν συνδέεται σε ένα σύμπλεγμα. Θα πρέπει να συνδέσετε ένα σωρό καλώδια.
Οι μονάδες με τσιπ σε συσκευασία SOIC έχουν το μέγεθος μιας μήτρας LED και συνδέονται με συγκόλληση ή βραχυκυκλωτήρες. Αποδεικνύεται ωραίο και τακτοποιημένο.
Οι πιο γνωστές βιβλιοθήκες για εργασία με πίνακες και συμπλέγματα είναι Πάνελ MAX72xx από τον Mark Riceκαι Parola by MajicDesigns:Η πρώτη βιβλιοθήκη είναι πιο εύκολη στη χρήση, η δεύτερη πιο σύνθετη με περισσότερες δυνατότητες. Θα το γράψω πιο αναλυτικά.
Απαιτείται εγκατάσταση βιβλιοθήκης όταν χρησιμοποιείτε τον πίνακα MAX72xx Adafruit GFX.
Για να ρωσικοποιήσετε το κείμενο, θα χρειαστεί να κάνετε λήψη ΑΥΤΟ ΤΟ ΑΡΧΕΙΟκαι αντικαταστήστε το προεπιλεγμένο αρχείο glcdfont.c στον κατάλογο Arduino/Libraries/Adafruit-GFX-Library-master. Επίσης σε αυτό το αρχείο, εκτός από τα απαραίτητα γράμματα και αριθμούς, περιγράφεται μια δέσμη από κάθε λογής χαρακτήρες. Μπορεί να μην είναι όλα χρήσιμα. Η παρακάτω εικόνα εξηγεί πώς σχηματίζονται τα σύμβολα.
Εάν είναι απαραίτητο, μπορείτε να δημιουργήσετε τα δικά σας σύμβολα και να τα αντικαταστήσετε με τυχόν αχρησιμοποίητα στο αρχείο. Σχεδόν όλες οι γραμματοσειρές bitmap που χρησιμοποιούνται σε διάφορες βιβλιοθήκες σχηματίζονται με αυτόν τον τρόπο.
Έτσι, εγκαθίστανται οι βιβλιοθήκες MAX72xx Panel και Adafruit GFX, το αρχείο glcdfont.c αντικαθίσταται. Εκκινήστε το Arduino IDE, ανοίξτε ΑΡΧΕΙΟ. Υπάρχει μια συνάρτηση utf8rus στο σκίτσο. Παρέχει επανακωδικοποίηση του πίνακα χαρακτήρων για τη ρωσική γλώσσα. Χρειάζεται μόνο για κανονική έξοδο από το πρόγραμμα, δηλαδή, στο πρόγραμμα, το επιθυμητό κείμενο είναι γραμμένο στα ρωσικά. Εάν το κείμενο εισάγεται μέσω της θύρας COM, τότε οι κωδικοί χαρακτήρων διορθώνονται στη συνάρτηση Serial_Read. Στο IDE και στην κονσόλα, οι προγραμματιστές χρησιμοποιούσαν διαφορετικές κωδικοποιήσεις.
Στην αρχή του αρχείου υπάρχουν γραμμές που είναι απαραίτητες για να λειτουργήσει η βιβλιοθήκη.
int numberOfHorizontalDisplays = 1;
int numberOfVerticalDisplays = 16;
Έχω modules με τσιπ σε πακέτο SOIC. Έχουν ένα μικρό χαρακτηριστικό. Η μήτρα των μονάδων εγκαθίσταται περιστρεφόμενη κατά 90 μοίρες. Είναι μια αμοιβή ευκολίας. Εάν εκτελέσετε τα σκίτσα που συνοδεύουν τις βιβλιοθήκες, θα εξάγουν κείμενο από κάτω προς τα πάνω σε κάθε ενότητα. Το κείμενο θα εμφανίζεται σε ζιγκ-ζαγκ. Για να αντιμετωπιστεί αυτή η πάθηση, πρέπει να «πει» στη βιβλιοθήκη ότι υπάρχουν 16 κάθετες οθόνες (βρίσκονται φυσικά οριζόντια). Και στη συνέχεια στο void Setup καθορίστε τη γραμμή για τη βιβλιοθήκη
matrix.setRotation(matrix.getRotation() + 1);
Θα αναποδογυρίσει μέσω προγραμματισμού κάθε μήτρα. Και όλα θα εμφανίζονται κανονικά.
Οι μονάδες με πακέτο τσιπ DIP δεν το έχουν αυτό. Όλα είναι όμορφα, εκτός από ένα σωρό καλώδια.
Η βιβλιοθήκη του πίνακα MAX72xx είναι μάλλον μέτρια. Δεν υπάρχουν οπτικά εφέ εξόδου. Το σύμπλεγμα γίνεται αντιληπτό ως ένα σύνολο. Τα πράγματα είναι πολύ καλύτερα με τον MD Parola.
Οι κάτοχοι μονάδων με τσιπ σε πακέτο SOIC θα αντιμετωπίσουν επίσης το πρόβλημα του προσανατολισμού των μονάδων σε ένα σύμπλεγμα. Μόνο που φαίνεται λίγο διαφορετικό από το MAX72xx. Εδώ, οι ενότητες θα εμφανιστούν, όπως ήταν, εκτός σειράς.
Σκίτσο του HelloWorld από δείγματα που περιλαμβάνονται στη βιβλιοθήκη.
Προγραμματικά στο σκίτσο, δεν μπόρεσα να θεραπεύσω αυτήν την πάθηση. Του αντιμετώπισα διαφορετικά. Στο αρχείο Adruino/libraries/MD_MAX72xx_lib.h στο τέλος πρέπει να βρείτε τις γραμμές όπως στην εικόνα.
Και διορθώστε την επιλεγμένη γραμμή 1 έως 0. Αποθηκεύστε το αρχείο. Το Arduino IDE δεν χρειάζεται επανεκκίνηση. Ρίχνουμε, κοιτάμε.
Τώρα μπορείτε να χρησιμοποιήσετε 24 εφέ κινούμενων σχεδίων. Το κινούμενο σχέδιο ξεκινά με την εντολή P.displayText ("Κείμενο προς εμφάνιση", "Στοίχιση κειμένου", ταχύτητα, καθυστέρηση εμφάνισης, εφέ εξασθένισης, εφέ εξασθένισης). Όπως μπορείτε να δείτε, υπάρχουν πολλές ρυθμίσεις.
Και το πιο ευχάριστο είναι η διαίρεση του συμπλέγματος σε εικονικές ζώνες. Η εργασία με ζώνες δεν είναι πολύ δύσκολη. Δεν δημοσιεύω το σκίτσο, είναι στα δείγματα που συνοδεύουν τη βιβλιοθήκη. Τώρα μπορείτε να εμφανίσετε το ρολόι στην αρχή του συμπλέγματος και το ticker ειδήσεων στις υπόλοιπες μονάδες χωρίς προβλήματα, σχεδόν.
Όπως μπορείτε ήδη να μαντέψετε, το πρόβλημα είναι με τα κυριλλικά γράμματα. Είναι επίσης επιλύσιμη. Δίπλα στο προηγούμενο αρχείο στον ίδιο κατάλογο βρίσκεται το αρχείο MD_MAX72xx_font.cpp. Αυτό είναι ένα αρχείο γραμματοσειράς. Οι χαρακτήρες σε αυτό σχηματίζονται παρόμοια με το αρχείο γραμματοσειράς GFX της βιβλιοθήκης. Υπάρχει μια μικρή διαφορά. Εδώ το μέγεθος του χαρακτήρα μπορεί να είναι μικρότερο από 5 πόντους. Στη βιβλιοθήκη Adafruit GFX, το θαυμαστικό, για παράδειγμα, καταλαμβάνει τις ίδιες 5 κουκκίδες τόσο πλάτος όσο οποιοδήποτε άλλο σύμβολο, χρησιμοποιείται μόνο μία σειρά κουκκίδων. Τα υπόλοιπα δεν λάμπουν, αλλά χρησιμοποιούνται ως σύμβολο. Στο Parola, το ίδιο θαυμαστικό καταλαμβάνει επίσης μια σειρά κουκκίδων, μόνο που δεν υπάρχουν κενές κουκκίδες κοντά, αλλά μπορούν να υπάρχουν διπλανοί χαρακτήρες. Θα είναι πιο ξεκάθαρο να κατανοήσουμε την εικόνα.
Δεν υπάρχει χρόνος για τη συμπλήρωση του αρχείου με κυριλλικούς χαρακτήρες παρόμοια με το αρχείο από την πρώτη εξεταζόμενη βιβλιοθήκη. Εάν κάποιος το κάνει αυτό και μου στείλει ένα αρχείο, θα το προσθέσω σε αυτό το άρθρο και τόσο εγώ όσο και οι επισκέπτες του ιστότοπού μου θα σας είμαστε ευγνώμονες.
Αποτέλεσμα. Η βιβλιοθήκη του πίνακα MAX72xx του Mark Rice είναι εύκολη στη χρήση και κατανοητή, αλλά με κακή λειτουργικότητα.
Η βιβλιοθήκη Parola της MajicDesigns είναι πιο περίπλοκη και έχει αρκετές δυνατότητες για σχεδόν κάθε εφαρμογή.
Στα προηγούμενα μαθήματα, μάθαμε με τη βοήθεια ενός καταχωρητή βάρδιας. Αυτό αποδείχθηκε λίγο πιο δύσκολο από ό,τι απευθείας από καρφίτσες γενικής χρήσης. Το πρόβλημα που έπρεπε στη συνέχεια να λύσουμε ήταν ο περιορισμένος αριθμός ελεγχόμενων εξόδων στον ελεγκτή Arduino. Το απόγειο της έρευνάς μας ήταν η χρήση δυναμικής ένδειξης για. Τώρα είναι καιρός να περιπλέκουμε λίγο περισσότερο την εργασία: μαθαίνουμε να εργαζόμαστε με τη μήτρα LED.