0
Δεν υπάρχει ούτε 0.000001% πιθανότητα να χρειάζεται για να μπει κάτι κάπου.
Ο μΕ λειτουργεί σειριακά, δηλαδή 1 εντολή την φορά, απ' την στιγμή που η itoa έκανε return τότε όλα είναι στην θέση τους.
Απ την στιγμή που η Lcdstring έκανε return όλα έχουν μεταφερθεί.
Μου έχει τύχει ο compiler του arduino να τα κάνει σκατά και μια μικρή αλλαγή στον κώδικα να τον ξεμπλοκάρει, πχ μια delay, η ακόμα και η προσθήκη μιας βιβλιοθήκης που δεν χρησιμοποιείτε πουθενά.
Αυτό που λες δεν στέκει, ίσως υπάρχει πρόβλημα στην μεταφορά δεδομένων, δηλαδή ο controller της οθόνης να χρειάζεται κάποιο χρόνο μεταξύ δεδομένων, ίσως δεν ολοκληρώνεις σωστά την μεταφορά.
Αυτο σημαινει οτι θα εκτελεσει τα παρακατω...οταν η ταση στο εκαστοτε AnalogPin είναι ~19mVolt..Κώδικας:if(LscinSignal == 3 || LscinSignal == 4 ) { . . . }
Ελπιζω με το 3 και 4 να μης εννοεις Volt...
Τελευταία επεξεργασία από το χρήστη SProg : 08-03-17 στις 21:11
Δεν είναι απαραίτητο να κάνεις αλλαγή στον κώδικα για να ξεμπλοκάρει ο compiler. Μου έχει τύχει να περάσω με επιτυχία τον κώδικα σε έναν ATMEGA2560 (τουλάχιστον έτσι έβγαλε το τελικό μήνυμα ότι ο κώδικας ανέβηκε επιτυχώς), να φάω μπόλικες ώρες στο να βρώ γιατί κολλάει ο κώδικας στο ξεκίνημα αφού όλα είναι σωστά και τελικά αφού είχα απελπιστεί και δεν είχα να κάνω κάτι άλλο, ξαναπέρασα τον ίδιο κώδικα και συνέβη το μη αναμενόμενο. Να δουλεύουν όλα σωστά!
Αυτό το συμβάν μου έχει τύχει δύο φορές. Την δεύτερη, σ'έναν ATMEGA328.
Η μεγιστη ταση που μπορει να δωσεις σε μια αναλογικη είσοδο του Arduino είναι 5V.
Εαν δινεις τασεις απο 0V έως 5V (με ταση αναφορας 5V, ετσι ερχονται οι Arduino με λιγα λογια) και διαβαζεις τον ΑDC, τότε ο ADC μετατρέπει αυτη την ταση 0-1023.
- Για 0V θα παρεις τιμη 0
- Για 2.5V θα παρεις τιμη 511
Για να παρεις τιμη 4 θα πρεπει να 'βλεπει' τάση
Ταση_Εισόδου = 4 * (5 / 1023 ) = 19.5 MilliVolt
Έχεις περιορίσει το πρόβλημα στο ότι η εμφάνιση έχει θέμα.
Αντιθέτως έχουμε ένα παλμό αγνώστων στοιχείων, δεν υπάρχει κυμματομορφή εισόδου για να δούμε τι καταλήγει στον μΕ και έχεις delay εξαρτώμενα από αναλογική είσοδο τα οποία σου κάνουν την περίοδο δειγματοληψίας αχταρμά.
Έχεις ένα L και W το οποίο εκτυπώνεις συνέχεια χωρίς λόγο.
Και έχεις και μια if που αν είναι 3 ή 4 μετατρέπει το 3 ή 4 σε χαρακτήρα και το εμφανίζει.
Άρα στην θέση 9,3 αν το L είναι 3 ή 4 θα γράψει "3" ή "4"
και μετά στην θέση 9,3 αν το W είναι 3 ή 4 θα γράψει "3" ή "4"
Άρα στην θέση 9,3 θα βλέπεις "3" ή "4" που θα είναι και του L και του W.
Λογικό είναι αν δεν έχεις delay του L που τυπώνετε πρώτο να μην το βλέπεις ποτέ και να βλέπεις μόνο του W γιατί ακολουθεί το 10ms delay του buzzer.
Σε τι μπορεί να σε ωφελήσει αυτό δεν ξέρω. Φαντάζομαι λάθος είναι από copy paste.
Εγώ θα έβαζα έναν Timer με interrupt σε σταθερή δειγματοληψία τουλάχιστον χ2 της συχνότητας του σήματος, χ10 καλύτερα (Shannon-Nyquist) (σε κανονική εφαρμογή μόνο την εκκίνηση του ADC και το finish σε interrupt αλλά ψηλά γράμματα). Έλεγχο αν η τιμή είναι 3 ή 4, αν ναι τότε ανέβασμα μιας σημαίας
Και στην loop αν η σημαία έχει σηκωθεί θα ενημερώνω την οθόνη ΜΟΝΟ εάν χρειάζεται ενημέρωση και θα κατέβαζα την σημαία.
Αυτό μας δίνει το αποτέλεσμα να έχεις 2 θέσεις στην οθόνη που θα γράφουν 3 ή 4, σύμφωνα και με τον κώδικά σου.
Τελευταία επεξεργασία από το χρήστη nio-4- : 08-03-17 στις 22:40