background image

 

 

 

- 110 -

 

 

Nokia5110::write():  η  συνάρτηση  αυτή  εκτυπώνει  στην  οθόνη  ακατέργαστα 

δεδομένα σε μορφή δύο δεκαεξαδικών ψηφίων που δέχεται ως παραμέτρους. 

4.4.3 Χρονοπρογραμματισμός συσκευής 

Ένας  βασικός  περιορισμός  του  Arduino  Uno  είναι  ότι  δεν  παρέχει  υποστήριξη  για 

παράλληλη εκτέλεση δύο νημάτων λόγω περιορισμού της αρχιτεκτονικής  του. Αυτό αποτελεί 
βασικό πρόβλημα σε αυτήν τη διπλωματική εργασία μιας και είναι αναγκαίος ένας μηχανισμός 
χρονομετρητή, ο οποίος θα καθορίζει κάθε πότε το Arduino Uno θα πρέπει να επικοινωνεί με 
τον  εξυπηρετητή  και  πότε  θα  εκτελεί  όλες  τις    κρίσιμες  ρουτίνες  του  αρτοπαρασκευαστή 
περιοδικά. 

Ένας τέτοιος μηχανισμός είναι ο χρονομετρητής TIMER1 που προσφέρεται εγγενώς στο 

ολοκληρωμένο κύκλωμα του Arduino Uno. Στη συνάρτηση initialize_Timer1() εκτελούνται όλες 
οι απαραίτητες ρουτίνες για την αρχικοποίηση του χρονομετρητή και τη ρύθμισή του να εκτελεί 
τη  συνάρτηση  ISR(TIMER1_COMPA_vect)  ανά  δευτερόλεπτο.  Αυτό  προσφέρει  στον 
προγραμματιστή  ένα  εργαλείο  ψευδοπαραλληλοποίησης  μιας  και  δίνει  ένα  χρονικό  μέσο 
αναφοράς.  Βάσει  της  συνάρτησης  ISR(TIMER1_COMPA_vect)  μπορούμε  να  εκτελούμε  το 
σύνολο των κρίσιμων ρουτινών του αρτοπαρασκευαστή κατά τη λειτουργία του, ώστε αυτή να 
μην  επηρεάζεται  από  άλλες  καταστάσεις  και  ταυτόχρονα  να  μετράμε  σταθερά  χρονικά 
διαστήματα  ενός  δευτερολέπτου  μέχρι  το  σύνολο  των  5,  όπου  επιτρέπεται  η  σύνδεση  του 
Arduino Uno με τον εξυπηρετητή για ενημέρωση. Αυτό έχει ως αποτέλεσμα την απρόσκοπτη 
λειτουργία  του  αρτοπαρασκευαστή,  ενώ  ταυτόχρονα  κάθε  5  δευτερόλεπτα  το  Arduino  Uno 
συνδέεται, ενημερώνει τον εξυπηρετητή, λαμβάνει εντολές και κλείνει επιτυχώς τη σύνδεση με 
αυτόν. 

4.4.4 Η επικοινωνία Arduino Uno – εξυπηρετητή 

Όπως προαναφέρθηκε, η επικοινωνία με τον εξυπηρετητή γίνεται κάθε 5 δευτερόλεπτα 

με σκοπό να ελαχιστοποιήσουμε το χρονικό διάστημα απόκρισης της συσκευής στις εντολές του 
εξυπηρετητή και ανανέωσης των τιμών σε αυτόν. 

Κάθε φορά που το Arduino Uno επικοινωνεί με τον εξυπηρετητή συνδέεται σε μια σελίδα 

PHP  η  οποία  αναλαμβάνει  τη  διαχείριση  των  δεδομένων  επικοινωνίας.  Εκεί  αποστέλλει  ως