- 1. Το Arduino Board δεν αναγνωρίζεται
- 2. Πίνακας που δεν είναι σε συγχρονισμό
- 3. Ο κωδικός δεν ξεκινά με την Επαναφορά Ισχύος
- 4. Μη έγκυρο σφάλμα υπογραφής συσκευής
- 5. Σφάλμα Launch4j
- 6. Η σειριακή θύρα χρησιμοποιείται ήδη
- 7: Σκίτσο μεταφορτώνει με επιτυχία, αλλά τίποτα δεν συμβαίνει
- 8. Σφάλμα μη ικανοποιημένου συνδέσμου
- 9. Σκίτσο πολύ μεγάλο
- 10. java.lang.StackOverflowError
Ξεκινώντας ως αρχάριος με το Arduino, μπορεί να είναι αρκετά προκλητικός για άτομα χωρίς ηλεκτρονικό υπόβαθρο, θα συναντήσετε λάθη, μερικά από τα οποία μπορεί να έχουν απλές λύσεις, αλλά μπορεί να σας απαιτούν μέρες για να λύσετε. Για να κάνω τα πράγματα λίγο πιο εύκολα, έχω δημιουργήσει μια λίστα με τα 10 πιο δημοφιλή σφάλματα Arduino μαζί με πιθανές λύσεις σε αυτά.
1. Το Arduino Board δεν αναγνωρίζεται
Αυτό αναφέρεται σε μια κατάσταση όπου μια πλακέτα Arduino, συνδεδεμένη σε υπολογιστή δεν αναγνωρίζεται από τον υπολογιστή. Όταν συμβαίνει αυτό, ο πίνακας συνήθως δεν αναφέρεται στις λίστες θύρας του Arduino IDE και μερικές φορές φέρει την ένδειξη USB2.0 κάτω από τη διαχείριση συσκευών.
Λύση
Αυτό συμβαίνει όταν χρησιμοποιείτε ορισμένους φθηνούς κλώνους Arduino που χρησιμοποιούν το τσιπ μετατροπέα USB σε σειρά CH340g αντί για το FTDI (FT232RL) και άλλα που χρησιμοποιούνται από τις τυπικές πλακέτες Arduino. Τα προγράμματα οδήγησης για USB σε σειριακά τσιπ που χρησιμοποιούνται από τις τυπικές πλακέτες Arduino είναι πάντα συσκευασμένα μαζί με το αρχείο Arduino IDE Setup, οπότε όταν εγκαθιστάτε το IDE, τα προγράμματα οδήγησης εγκαθίστανται αυτόματα στον υπολογιστή σας. Για να μπορέσετε να χρησιμοποιήσετε αυτήν την πλακέτα Arduino που βασίζεται σε μετατροπέα USB σε σειριακό CH340g, θα πρέπει να κάνετε λήψη και εγκατάσταση του προγράμματος οδήγησης για το τσιπ. Μπορείτε να κατεβάσετε το πρόγραμμα οδήγησης από αυτόν τον σύνδεσμο. Η εγκατάσταση είναι τόσο απλή όσο κάνοντας κλικ στο κουμπί εγκατάστασης στη διεπαφή εγκατάστασης που φαίνεται παρακάτω.
Με αυτήν την ενέργεια, θα πρέπει τώρα να μπορείτε να εντοπίσετε τη θύρα στην οποία είναι συνδεδεμένη η πλακέτα στο Arduino IDE.
2. Πίνακας που δεν είναι σε συγχρονισμό
Συνήθως, όταν συμβεί αυτό, δεν θα μπορείτε να ανεβάσετε κώδικα (Αν και το IDE μερικές φορές θα εμφανίζει «ολοκληρωμένη μεταφόρτωση») στον πίνακα Arduino και το IDE θα εμφανίσει τον κωδικό σφάλματος. " Avrdude: stk500_getsync (): not in sync: resp = 0x00 ".
Λύση
Ο συγχρονισμός: resp = 0x00 είναι μια γενική απόκριση που μεταφράζεται στο " Το τσιπ Atmega δεν λειτουργεί " στο Arduino. Όταν συμβεί αυτό, υπάρχει ένα σωρό πράγματα που θα μπορούσαν να είναι λάθος. Ακολουθούν ορισμένα βήματα που θα μπορούσαν να ληφθούν για την εκκαθάριση αυτού του σφάλματος.
1. Βεβαιωθείτε ότι δεν υπάρχει τίποτα συνδεδεμένο στις ψηφιακές ακίδες 0 και 1 στο Arduino (συμπεριλαμβανομένων των ασπίδων).
2. Βεβαιωθείτε ότι έχετε επιλέξει τη σωστή θύρα και την πλακέτα στο μενού εργαλείων.
3. Πατήστε το κουμπί επαναφοράς στο Arduino μερικές φορές και ανεβάστε ξανά τον κωδικό.
4. Αποσυνδέστε και επανασυνδέστε το Arduino στον υπολογιστή.
5. Επανεκκινήστε το Arduino IDE.
Εάν κανένα από αυτά δεν λειτουργεί, ίσως είναι καιρός να δοκιμάσετε να χρησιμοποιήσετε διαφορετική πλακέτα Arduino με τον υπολογιστή ή να χρησιμοποιήσετε τη «ελαττωματική» πλακέτα Arduino με άλλο υπολογιστή. Αυτό θα σας βοηθήσει να προσδιορίσετε ποια από αυτές είναι η προέλευση του προβλήματος. Εάν ανακαλύψετε ότι το πρόβλημα είναι με τον υπολογιστή, εγκαταστήστε ξανά το Arduino IDE. Ωστόσο, εάν η «ελαττωματική» πλακέτα Arduino είναι η πηγή του προβλήματος, μια τελική λύση θα είναι να αναβοσβήνει η πλακέτα με το υλικολογισμικό Arduino. Εάν κανένα από τα παραπάνω δεν λειτουργεί, ίσως είναι καιρός να αλλάξετε το Arduino Board.
3. Ο κωδικός δεν ξεκινά με την Επαναφορά Ισχύος
Αυτό αναφέρεται σε περιπτώσεις όπου το Arduino δεν εκτελεί το σκίτσο που έχει φορτωθεί σε αυτό όταν είναι ενεργοποιημένο και στις περισσότερες περιπτώσεις, απλώς επανέρχεται στο σκίτσο που αναβοσβήνει που σχετίζεται με το bootloader.
Λύση
Όπως τα άλλα προβλήματα που αντιμετωπίζονται, υπάρχουν πολλά πράγματα που θα μπορούσαν να προκαλέσουν αυτό.
Εάν ο πίνακας κρέμεται και δεν κάνει τίποτα, θα πρέπει να ελέγξετε τον κωδικό σας για να βεβαιωθείτε ότι δεν στέλνετε σειριακά δεδομένα στον πίνακα καθώς έρχεται. Όταν το Arduino είναι ενεργοποιημένο, το bootloader, τα πρώτα δευτερόλεπτα, ακούει τον υπολογιστή να του στείλει ένα νέο σκίτσο για αποστολή στον πίνακα. Εάν δεν ληφθεί νέο σκίτσο, μετά από λίγο, ο bootloader θα τελειώσει και θα εκτελέσει το τελευταίο σκίτσο που ανεβάστηκε στον πίνακα. Εάν ο κωδικός σας αποστέλλει σειριακά δεδομένα κατά τα πρώτα λεπτά, ο bootloader δεν θα λήξει και το τελευταίο σκίτσο που ανεβάσατε στον πίνακα δεν θα ξεκινήσει.
Εάν η αποστολή σειριακών δεδομένων μόλις ξεκινήσει η πλακέτα είναι ένα σημαντικό μέρος του έργου σας, ίσως χρειαστεί να βρείτε έναν τρόπο να του δώσετε κάποια καθυστέρηση για να σταματήσετε την άφιξη των σειριακών δεδομένων αμέσως μετά την έναρξη του Arduino. Εάν η πραγματοποίηση προσαρμογών θα επηρεάσει την εργασία που πρέπει να εκτελέσει το έργο, τότε ίσως χρειαστεί να ανεβάσετε το σκίτσο σας στον πίνακα χρησιμοποιώντας έναν εξωτερικό προγραμματιστή, καθώς ο bootloader μπορεί να παρακαμφθεί από αυτούς.
Εάν ο πίνακας δεν κρέμεται αλλά επιστρέφει στο σκίτσο αναβοσβήνει Arduino (Το Led στον ακροδέκτη 13 αναβοσβήνει κάθε τόσο), μια απλή επιδιόρθωση θα είναι να αναβοσβήνει η πλακέτα με το bootloader Arduino, καθώς αυτό που υπάρχει στον πίνακα μπορεί να έχει καταστραφεί.
4. Μη έγκυρο σφάλμα υπογραφής συσκευής
Αυτό το σφάλμα εμφανίζεται όταν γίνεται προσπάθεια αποστολής κώδικα, σε έναν πίνακα, διαφορετικό από αυτόν που επιλέχθηκε κάτω από τη λίστα εργαλείων> πίνακας στο Arduino IDE. Αυτό το σφάλμα εμφανίζεται συνήθως ως αποτέλεσμα της υπογραφής της συσκευής στην πλακέτα προορισμού να είναι διαφορετική από αυτήν της πλακέτας που έχει επιλεγεί στο IDE.
Λύση
Η λύση σε αυτό το σφάλμα είναι τόσο απλή όσο η διασφάλιση της σωστής πλακέτας στο Arduino IDE. Εάν αυτό δεν λειτουργεί, μπορεί να χρειαστεί να αναβοσβήσετε τον μικροελεγκτή με την πιο πρόσφατη έκδοση του Arduino bootloader.
5. Σφάλμα Launch4j
Το Arduino IDE μερικές φορές διαρκεί λίγο πριν από τη φόρτωση και όταν φορτώνει, εάν κάνετε κλικ σε κάτι, θα εμφανίσει το σφάλμα Launch4J όπως φαίνεται παραπάνω. Το Launch4j είναι ένα εργαλείο που χρησιμοποιείται για την αναδίπλωση εφαρμογών Java (βάζα) σε εγγενή εκτελέσιμα Windows, επιτρέποντάς τους να χρησιμοποιηθούν ως κανονικό πρόγραμμα των Windows.
Το ίδιο το Arduino IDE είναι γραμμένο σε JAVA και αυτό το σφάλμα παρουσιάζεται λόγω ασυμβατότητας της βιβλιοθήκης Java Run Time Environment (JRE) που παρέχεται με το Arduino IDE.
Λύση
Από την εμπειρία, αυτό το σφάλμα μπορεί να επιλυθεί με κάτι τόσο απλό όσο απενεργοποιώντας τη σύνδεση Bluetooth ή WiFi του υπολογιστή σας. Ωστόσο, μια πιο ολοκληρωμένη και μόνιμη λύση είναι να αντικαταστήσετε το JRE στο πακέτο Arduino με μια πρόσφατη έκδοση.
6. Η σειριακή θύρα χρησιμοποιείται ήδη
Αυτό είναι πιθανώς ένα από τα ευκολότερα λάθη να επιλυθούν. Συνήθως εμφανίζεται όταν προσπαθείτε να ανεβάσετε κώδικα σε ένα Arduino κατά το άνοιγμα της σειριακής οθόνης (αυτό δεν αποτελεί πλέον πρόβλημα εάν χρησιμοποιείτε πρόσφατες εκδόσεις IDE) ή όταν προσπαθείτε να ξεκινήσετε τη σειριακή οθόνη όταν το Arduino μιλά σε άλλο λογισμικό ή συσκευή μέσω της σειριακής θύρας. Ουσιαστικά, εμφανίζεται όταν προσπαθείτε να χρησιμοποιήσετε τη σειριακή θύρα Arduino για δύο διαφορετικά πράγματα ταυτόχρονα.
Λύση
Όπως ακριβώς προτείνει το IDE, κλείστε κάθε άλλο λογισμικό / εργαλείο (συμπεριλαμβανομένης της σειριακής οθόνης / σχεδιαστή) που ενδέχεται να χρησιμοποιεί τη θύρα. Εάν δεν είστε σίγουροι για το συγκεκριμένο λογισμικό, αποσυνδέστε το Arduino. Θα πρέπει να είναι έτοιμο να ξεκινήσει τη στιγμή που θα το συνδέσετε ξανά.
7: Σκίτσο μεταφορτώνει με επιτυχία, αλλά τίποτα δεν συμβαίνει
Αυτό το σφάλμα είναι παρόμοιο με μερικά από τα άλλα σφάλματα που έχουν ήδη αντιμετωπιστεί παραπάνω. Για αυτό το σφάλμα, το Arduino IDE θα προτείνει ότι ο κώδικας έχει μεταφορτωθεί με επιτυχία, αλλά ο πίνακας δεν κάνει τίποτα.
Λύση
- Βεβαιωθείτε ότι ο πίνακας που έχει επιλεγεί στο IDE είναι ίδιο με τον πίνακα στόχου.
- Αυτό θα μπορούσε να οφείλεται στο ότι το μέγεθος του σκίτσου είναι μεγαλύτερο από την χωρητικότητα του πίνακα. Ελέγξτε το μέγεθος του σκίτσου και χρησιμοποιήστε μερικές από τις μεθόδους που αναφέρονται παραπάνω για να μειώσετε το μέγεθος.
- Τέλος, αυτό το σφάλμα μπορεί να προκύψει όταν χρησιμοποιείται θορυβώδης τροφοδοσία. Βεβαιωθείτε ότι το τροφοδοτικό είναι αρκετά σταθερό.
8. Σφάλμα μη ικανοποιημένου συνδέσμου
Αυτό είναι ίσως το μόνο σπάνιο σφάλμα που το έκανε σε αυτήν τη λίστα. Αυτό συμβαίνει όταν έχετε μια παλιά έκδοση της βιβλιοθήκης επικοινωνίας που βρίσκεται στον υπολογιστή σας, πιθανότατα από προηγούμενη εγκατάσταση.
Λύση
Για να επιλύσετε αυτό το σφάλμα, αναζητήστε comm.jar ή jcl.jar στο /System/Library/Frameworks/JavaVM.framework/ ή σε καταλόγους στις μεταβλητές περιβάλλοντος CLASSPATH ή PATH του υπολογιστή σας.
9. Σκίτσο πολύ μεγάλο
Αυτό το σφάλμα παρουσιάζεται όταν ο κώδικάς σας είναι μεγαλύτερος από τη μνήμη flash της συγκεκριμένης πλακέτας Arduino. Το μέγεθος της μνήμης flash του Arduino Uno, για παράδειγμα, είναι 32Kb με το 2KB να χρησιμοποιείται ήδη από το bootloader Arduino. Εάν πρέπει να ανεβάσετε έναν κωδικό με μέγεθος μεγαλύτερο από 32 KB, το Arduino θα εμφανίσει αυτήν την προειδοποίηση.
Λύση
Όπως αναφέρθηκε παραπάνω, αυτό συμβαίνει όταν το σκίτσο σας είναι μεγαλύτερο από τη μνήμη flash του συγκεκριμένου πίνακα που χρησιμοποιείτε, επομένως, για να το λύσετε αυτό, πρέπει να βρείτε τρόπους μείωσης του χώρου που καταλαμβάνεται από τον κωδικό σας. Μερικές από τις συμβουλές για την επίτευξη αυτού περιλαμβάνουν:
- Όπου είναι δυνατόν, χρησιμοποιήστε ακέραιους τύπους δεδομένων αντί για float.
- Όπου είναι δυνατόν, χρησιμοποιήστε τον προσδιοριστή "const" όταν δηλώνετε μεταβλητές.
- Συμπεριλάβετε μόνο τις απαραίτητες βιβλιοθήκες. Όπου είναι δυνατόν, χρησιμοποιήστε τις ελαφριές εκδόσεις των πιο σημαντικών βιβλιοθηκών.
- Βελτιώστε τον κώδικα γενικά. Αναπτύξτε αλγόριθμους που θα μπορούσαν να σας βοηθήσουν να κάνετε τον κώδικα πιο σύντομο και γενικά ελαφρύ.
Μια πιο ριζοσπαστική λύση θα είναι να μετακινήσετε το έργο σε έναν άλλο πίνακα, όπως το Arduino Mega, το οποίο έχει μεγαλύτερη μνήμη flash σε σύγκριση με το Uno.
10. java.lang.StackOverflowError
Κατά την επεξεργασία του σκίτσου, το Arduino χρησιμοποιεί μερικές κανονικές εκφράσεις για επεξεργασία και μερικές φορές μπερδεύεται όταν συναντά συγκεκριμένα σφάλματα που σχετίζονται με χορδές όπως λείπουν εισαγωγικά.
Λύση
Αυτό το σφάλμα επιλύεται ρίχνοντας μια δεύτερη ματιά στον κώδικα, ειδικά τα μέρη όπου χρησιμοποιούνται ακολουθίες συμβολοσειρών. Βεβαιωθείτε ότι τα αποσπάσματα είναι πλήρη, οι ορθογραφικές παύλες χρησιμοποιούνται σωστά κ.λπ.
Υπάρχει ένα όριο στον αριθμό σφαλμάτων που μπορεί κανείς να χωρέσει σε ένα μεμονωμένο σεμινάριο και για αυτόν τον λόγο, θα σταματήσουμε εδώ. Ωστόσο, αυτή η λίστα περιέχει μερικά από τα πιο συνηθισμένα σφάλματα που αντιμετωπίζουν οι αρχάριοι όταν χρησιμοποιούν το Arduin o. Αντιμετωπίζετε ένα συγκεκριμένο σφάλμα, μη διστάσετε να αφήσετε ένα σχόλιο, ελπίζουμε ότι μπορούμε να το επεξεργαστούμε μαζί.
Την επόμενη φορά.