Ανάπτυξη προγράμματος
Το γραφικό περιβάλλον προγραμματισμού Tinker CAD (GPE) περιορίζεται μόνο στην ανάπτυξη της συνάρτησης loop(), ενώ η setup() αναπτύσσεται ως προεπιλογή. Αυτός ο μικρός περιορισμός μπορεί να ξεπεραστεί συνεχίζοντας την περαιτέρω ανάπτυξη μόνο σε C (χωρίς CodeBlocks), κάτι που μπορεί να είναι αποδεκτό για μεγαλύτερες πρακτικές εφαρμογές. Το GPE περιέχει 6 είδη λειτουργιών “CodeBlocks”, κωδικοποιημένες με διαφορετικά χρώματα (Εικ. 41α): μεταβλητές, έλεγχος, έξοδος, είσοδος, μαθηματικά (περιλαμβάνει τον υπολογισμό ικανοποίησης μιας συνθήκης, τις λεγόμενες Boolean πράξεις, που χρησιμοποιούνται σε εντολές ελέγχου), σημειώσεις (σχόλια). Οι εντολές διαφορετικών ειδών συνδυάζονται μεταξύ τους ανάλογα με το σχήμα τους.
|
Το πρόγραμμα που κινεί τους σερβοκινητήρες (“δάχτυλα”) αποτελείται από ένα μικρό και δύο κύρια μέρη (Εικ. 41β), τα οποία διαχωρίζονται με σχόλια σε γκρι χρώμα:
-
Ορισμός της ταχύτητας περιστροφής (μεταβλητή rotationStep, ροζ) – κατά τη μεταφορά του προγράμματος σε πραγματικό UNO, αυτή η εντολή μπορεί να μεταφερθεί στη διαδικασία setup().
-
Δίνονται εντολές σε κάθε σερβοκινητήρα να περιστραφεί σε συγκεκριμένη θέση – 5 έξοδοι (μπλε), όπου πρέπει να δοθεί προσοχή στον σωστό ορισμό του ακροδέκτη εξόδου (στην πλακέτα UNO) και της θέσης (διαφορετικές μεταβλητές, ροζ). Καθώς αυτές οι μεταβλητές ορίζονται εξ ορισμού στο 0 κατά τη setup(), δεν συμβαίνει τίποτα μετά την ενεργοποίηση, μέχρι να πατηθεί κάποιο κουμπί.
-
Έλεγχος των ζευγών κουμπιών και επαναϋπολογισμός της θέσης των σερβοκινητήρων. Αυτό το μέρος επαναλαμβάνεται (φαίνεται μόνο ένα στην Εικ. 41β) 5 φορές για κάθε σετ 2 κουμπιών και έναν σερβοκινητήρα.
-
Η κατάσταση (τάση) του κουμπιού “Up” διαβάζεται από μια αναλογική είσοδο. Το πιθανό εύρος ανάγνωσης είναι από 0 έως 1023 μονάδες, που αντιστοιχούν σε 0 και 5 Volt αντίστοιχα. Πρέπει να δοθεί προσοχή στον σωστό ορισμό του ακροδέκτη εισόδου στην πλακέτα UNO.
-
Αν η τιμή που διαβάστηκε είναι μεγαλύτερη από 256 (1,25V), τότε η θέση του συγκεκριμένου σερβοκινητήρα πρέπει να επαναϋπολογιστεί, αυξάνοντάς την κατά την τιμή του rotationStep.
-
Η υπολογισμένη θέση δεν πρέπει να υπερβαίνει τις 180°. Αν συμβεί αυτό, ορίζεται σε αυτή την οριακή τιμή.
-
Αν το κουμπί “Up” δεν πατήθηκε, εκτελείται ο κλάδος else.
-
Η κατάσταση του κουμπιού “Down” διαβάζεται από μια ψηφιακή είσοδο (0 = Όχι, ή 1 = Ναι). Πρέπει να δοθεί προσοχή στον σωστό ορισμό του ακροδέκτη εισόδου στην πλακέτα UNO.
-
Αν η τιμή που διαβάστηκε είναι μεγαλύτερη ή ίση με 1, τότε η θέση του συγκεκριμένου σερβοκινητήρα πρέπει να επαναϋπολογιστεί, μειώνοντάς την κατά την τιμή του rotationStep. Απαιτήθηκε επιπλέον αριθμητική (μαθηματική, πράσινη κατηγορία) πράξη για να προκύψει αρνητική τιμή του rotationStep.
-
Η υπολογισμένη θέση δεν πρέπει να πέσει κάτω από τις 0°. Αν συμβεί αυτό, ορίζεται σε αυτή την οριακή τιμή.
|

Εικόνα 41. Μέρος του γραφικού προγράμματος για την κίνηση σερβοκινητήρων
|