Ανάπτυξη προγράμματος

Το γραφικό περιβάλλον προγραμματισμού 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. Μέρος του γραφικού προγράμματος για την κίνηση σερβοκινητήρων