0
Γεία σας κύριοι , ο κώδικας που σας δείχνω είναι ένα μέρος από ένα αρκετά μεγαλύτερο πρόγραμμα αλλά το πρόβλημα μου είναι εδώ. Μετάφρασα το πρόγραμμα από code vision που δούλευα σε arduino γιατί δυστυχώς μου κάηκε ο stk500 που είχα οπότε πήγα και πήρα ένα γνήσιο arduino για να συνεχίσω τη κατασκευή μου. Υποτίθεται λοιπόν ότι γίνεται έλεγχος στο πιν Α13 και όταν γίνει 0 το πρόγραμμα φεύγει από το while. Αλλιώς μένει ,αλλάζει την έξοδο 9 και μετα από 5 δεύτερα αλλάζει και τη μεταβλητή thesi. Το πρόβλημα είναι ότι έτσι όπως είναι το πρόγραμμα δε δουλεύει.. η έξοδος 9 δεν αλλάζει αν όμως ανοίξω ένα από τα serial.print (τα έβαλα να δω μεχρι που μπαίνει το πρόγραμμα δε τα θελω) χωρίς ακόμα να χρειαστεί να ανοίξω το serial.begin τότε το Λεντ που έχω βάλει στο 9 αναβοσβήνει κανονικά.. δουλεύει δηλαδή, τώρα έχω κάτι λάθος η φταίει ο 328; Που για να βρώ καινούριο θέλω να περιμένω μια βδομάδα. Επίσης τη millis() δε θέλω να τη βάλω γιατί η κατασκευή θέλω να δουλεύει συνέχεια. Να πώ επίσης οτι το δοκίμασα σε δύο διαφορετικούς υπολογιστές και τα ίδια...
Κώδικας:#include <MsTimer2.h> int secs=1,lsecs=0; boolean thesi=true; void setup() { //Serial.begin(9600); pinMode(9, OUTPUT); pinMode(A5, OUTPUT); pinMode(8, OUTPUT); MsTimer2::set(1000, flash); MsTimer2::start(); } void flash() { secs++; if (secs>61) secs=1; } void loop() { lsecs=5+secs; if (lsecs>60) lsecs=5; while (digitalRead(A3) == HIGH) { //Serial.print(lsecs); digitalWrite(A5, HIGH); if (thesi==true) digitalWrite(9, HIGH); else if (thesi==false) digitalWrite(9, LOW); if (lsecs<secs) { //Serial.print("\n"); thesi=!thesi; lsecs=5+secs; if (lsecs>60) lsecs=5; } } }