maqueen getting started 101

Προγραμμάτισε το Maqueen να εκτελεί βασικές εντολές

Προγραμμάτισε το Maqueen να κινείται διαγράφοντας διάφορες τροχιές και δοκίμασε να ενεργοποιήσεις τα LED του!

Το Maqueen είναι η ιδανική πλατφόρμα εισαγωγής στον κόσμο της ρομποτικής, του προγραμματισμού και των αυτοματισμών!

Γιατί Maqueen;

Τα Maqueen είναι κατάλληλα για αρχάριους αλλά και προχωρημένους χρήστες που επιθυμούν να εξερευνήσουν τον συναρπαστικό κόσμο της ρομποτικής! Είναι κατασκευασμένα από υψηλής ποιότητας υλικά και μπορούν να συνδυαστούν με επιπλέον πακέτα και πρόσθετα, ξεκλειδώνοντας νέες δυνατότητες και προσφέροντας πολλές ώρες δημιουργικότητας, μάθησης και σίγουρα διασκέδασης!

Χρησιμοποιούν για μικροελεγκτή το Microbit (προγραμματίζεται με MakeCode, Python κ.ά.), διαθέτουν πλήθος ενσωματωμένων αισθητήρων και συναρμολογούνται πανεύκολα σε ελάχιστα βήματα.

Στον παρακάτω πίνακα μπορείς να δεις τις διαφορές ανάμεσα στις 2 εκδοχές του Maqueen: το Maqueen Lite και το Maqueen Plus V2.

Τι θα χρειαστείς

Ηλεκτρονικά μέρη

  • Κινητήρες
  • Μπροστινά LED
  • Κουμπιά Microbit

Έννοιες προγραμματισμού

  • Τελεστές σύγκρισης
  • Μεταβλητές
  • Εντολές επιλογής
  • Εντολές επανάληψης

Προγραμματισμός με MakeCode

Για να προγραμματίσεις το Microbit με MakeCode ακολούθησε τις οδηγίες που θα βρεις εδώ:

Ξεκίνα προσθέτοντας τις εντολές που σχετίζονται με τον έλεγχο του Maqueen Plus V2. Πάτησε στο εικονίδιο των ρυθμίσεων και έπειτα κάνε κλικ στις “Επεκτάσεις”.

Συμπλήρωσε στη γραμμή αναζήτησης το link της επέκτασης:

https://github.com/DFRobot/pxt-DFRobot_MaqueenPlus_v20

add an addon on makecode

Κάνε κλικ στην επέκταση και μόλις επιστρέψεις στην κεντρική σελίδα θα βρεις τις νέες εντολές που αφορούν το Maqueen Plus V2.

Κατά την έναρξη ξεκινά η επικοινωνία του Microbit με την πλατφόρμα του Maqueen με το πρωτόκολλο I2C. Στην κατηγορία “Είσοδος” θα βρεις την εντολή “όταν πιεστεί το πλήκτρο button A” και αναφέρεται στο αριστερό κουμπί που είναι ενσωματωμένο στο Microbit. Πρόσθεσε μία αρχική παύση 1s (1000ms), ώστε να προλάβεις να απομακρύνεις το χέρι σου από το Microbit μέχρι να αρχίσει να κινείται το ρομποτάκι.

Ολοκλήρωσε και δοκίμασε ένα αρχικό πρόγραμμα με το οποίο, όταν πατήσεις το κουμπί Α, το ρομποτάκι θα κινηθεί ευθεία για 1,5s με ταχύτητα 100 (με εύρος τιμών ταχύτητας από 0 έως 255) και στη συνέχεια θα στρίψει απότομα για 0,55s προς τα δεξιά αντιστρέφοντας τη φορά περιστροφής του δεξιού κινητήρα. Σκοπός είναι να εκτελέσει το ρομποτάκι στροφή 90ο, συνεπώς προσάρμοσε την χρονική διάρκεια της στροφής (550ms) στα χαρακτηριστικά του δικού σου ρομπότ, καθώς το επίπεδο φόρτισης των μπαταριών ή η κατάσταση του Maqueen θα μπορούσαν να επηρεάσουν τη στροφή του.  

Έπειτα κάνε το Maqueen να διαγράφει τροχιά που σχηματίζει τετράγωνο! Μην βάλεις 4 φορές τις ίδιες εντολές που χρησιμοποίησες προηγουμένως αλλά δοκίμασε έναν ορθότερο τρόπο: Στην κατηγορία “Βρόχοι” θα βρεις την εντολή “επανάληψη 4 φορές”. Μέσα της συμπερίλαβε τις εντολές που πρέπει να επαναλαμβάνονται. Τρέξε το πρόγραμμα και παρατήρησε τη συμπεριφορά του Maqueen!

Κάνε κλικ στην κατηγορία “Μεταβλητές” και έπειτα επίλεξε “Δημιουργία μεταβλητής”. Δώσε στη μεταβλητή το όνομα “speed” και πάτησε “OK”.

Πλέον, στην κατηγορία “Μεταβλητές” εμφανίζονται τα νέα block με τις εντολές που σχετίζονται με τη μεταβλητή.

Προγραμμάτισε το ρομποτάκι να εκτελεί μια διαφορετική κίνηση όταν πατάς το κουμπί Β του Microbit. Όρισε αρχική τιμή 0 για τη μεταβλητή “speed” και από την κατηγορία “Βρόχοι” πάρε την εντολή επανάληψης “ενώ“.

make code
make code

Έπειτα συνδύασε το block του τελεστή σύγκρισης που θα βρεις στην κατηγορία “Λογική” με το block της μεταβλητής “speed” που βρίσκεται στην κατηγορία “Μεταβλητές”.

Σε κάθε επανάληψη, η τιμή της μεταβλητής “speed” αυξάνεται κατά 5 και περνάει στην πράσινη εντολή που ενεργοποιεί τους κινητήρες του ρομπότ. Επίσης, σε κάθε επανάληψη υπάρχει και μια καθυστέρηση 50ms, διαφορετικά το ρομποτάκι θα αποκτούσε τη μέγιστη ταχύτητα σχεδόν ακαριαία.

Με τη βοήθεια της μεταβλητής, εκτός από ομαλή επιτάχυνση, μπορείς να πετύχεις και ομαλή επιβράδυνση. Αυτή τη φορά, στη μεταβλητή “speed” είναι ήδη καταχωρημένη η τιμή 250 από την εκτέλεση της πρώτης δομής επανάληψης, και κατά την εκτέλεση της δεύτερης “ενώ” η τιμή της μειώνεται σταδιακά κατά 5. Τέλος, από την κατηγορία με τις εντολές που σχετίζονται με το Maqueen, πρόσθεσε και εκείνες που σχετίζονται με τον χειρισμό των δύο μπροστινών κόκκινων LED που διαθέτει. Προγραμμάτισέ τα να ανάβουν κατά την επιβράδυνση!

Παρακάτω μπορείς να δεις το προτεινόμενο πρόγραμμα συνολικά. Δοκίμασε να το τροποποιήσεις και μη διστάσεις να πειραματιστείς!

Προγραμματισμός με Python

Για να προγραμματίσεις το Microbit με Python ακολούθησε τις οδηγίες που θα βρεις εδώ:

Επιπλέον, στον παραπάνω οδηγό θα βρεις αναλυτικές οδηγίες για το τρόπο που εισάγεις μία βιβλιοθήκη στον συγκεκριμένο editor. Κατέβασε τη βιβλιοθήκη “GRobotronicsMaqueen” από εδώ: https://github.com/grobotronics/Microbit/tree/main/Maqueen

Στη αρχή του προγράμματος πρόσθεσε τις βιβλιοθήκες “microbit” και “time”. Από τη βιβλιοθήκη “time” εισάγεται η κλάση “sleep” η οποία δέχεται τον χρόνο σε seconds και διαφέρει από την “sleep” της “microbit” που δέχεται τον χρόνο σε milliseconds. Για τον έλεγχο του Maqueen θα χρησιμοποιηθούν και οι κλάσεις “MoveMaqueen” και “LEDController” της βιβλιοθήκης “GRobotronicsMaqueen”.

from microbit import *
from time import sleep
from GRobotronicsMaqueen import MoveMaqueen, LEDController

Έπειτα δημιούργησε το αντικείμενο “robot” της κλάσης “MoveMaqueen” και το αντικείμενο “led” της κλάσης “LEDController”.

robot = MoveMaqueen()

led = LEDController()

Ολοκλήρωσε και δοκίμασε ένα αρχικό πρόγραμμα με το οποίο, μέσα σε μια δομή επανάληψης, ελέγχεται με την εντολή “if” αν πατήθηκε το κουμπί Α που είναι ενσωματωμένο στο Microbit. Αν η συνθήκη ισχύει, και έπειτα από μία αρχική παύση 1s ώστε να προλάβεις να απομακρύνεις το χέρι σου από το ρομποτάκι, το Maqueen θα κινηθεί ευθεία για 1,5s με ταχύτητα 40 και στη συνέχεια θα στρίψει απότομα για 0,5s προς τα δεξιά αντιστρέφοντας τη φορά περιστροφής του δεξιού κινητήρα.

Η εντολή “robot.move(value, value)” δέχεται ως πληροφορία τις ταχύτητες περιστροφής του αριστερού και του δεξιού κινητήρα, με εύρος τιμών από -100 έως 100. Αν η τιμή είναι αρνητικός αριθμός ο κινητήρας περιστρέφεται αντίστροφα. Σκοπός είναι να εκτελέσει το ρομποτάκι στροφή 90ο, συνεπώς προσάρμοσε την χρονική διάρκεια της στροφής (0.5s) στα χαρακτηριστικά του δικού σου ρομπότ, καθώς το επίπεδο φόρτισης των μπαταριών ή κατάσταση του Maqueen θα μπορούσε να επηρεάσει τη στροφή του.

while True:
    if button_a.is_pressed():
        sleep(1)
        robot.move(40, 40)
        sleep(1.5)
        robot.move(40, -40)
        sleep(0.5)
        robot.stop()

Έπειτα κάνε το Maqueen να διαγράφει τροχιά που σχηματίζει τετράγωνο! Μην βάλεις 4 φορές τις ίδιες εντολές που χρησιμοποίησες προηγουμένως αλλά δοκίμασε έναν ορθότερο τρόπο: Χρησιμοποίησε την εντολή “for” και αναδιαμόρφωσε το πρόγραμμά σου ώστε να πραγματοποιούνται 4 επαναλήψεις. Τρέξε το πρόγραμμα και παρατήρησε τη συμπεριφορά του Maqueen!

while True:
    if button_a.is_pressed():
        sleep(1)
        
        for i in range(4):
            robot.move(40, 40)
            sleep(1.5)
            robot.move(40, -40)
            sleep(0.5)
            robot.stop()

Προγραμμάτισε το ρομποτάκι να εκτελεί μια διαφορετική κίνηση όταν πατάς το κουμπί Β του Microbit. Όρισε αρχική τιμή 0 για τη μεταβλητή “speed” και έπειτα χρησιμοποίησε την εντολή “while” και έναν τελεστή σύγκρισης. Σε κάθε επανάληψη της “while“, η τιμή της μεταβλητής “speed” αυξάνεται κατά 1 και περνάει στην εντολή “robot.move(speed, speed)” που ενεργοποιεί τους κινητήρες του ρομπότ. Επίσης, σε κάθε επανάληψη υπάρχει και μια καθυστέρηση 0,015s, διαφορετικά το ρομποτάκι θα αποκτούσε τη μέγιστη ταχύτητα σχεδόν ακαριαία.

while True:
    if button_a.is_pressed():
        sleep(1)
        
        for i in range(4):
            robot.move(40, 40)
            sleep(1.5)
            robot.move(40, -40)
            sleep(0.5)
            robot.stop()

    if button_b.is_pressed():
        sleep(1)
        speed = 0
        
        while speed < 100:
            speed = speed + 1
            robot.move(speed, speed)
            sleep(0.015)

Με τη βοήθεια της μεταβλητής, εκτός από ομαλή επιτάχυνση, μπορείς να πετύχεις και ομαλή επιβράδυνση. Αυτή τη φορά, στη μεταβλητή “speed” είναι ήδη καταχωρημένη η τιμή 100 από την εκτέλεση της πρώτης δομής επανάληψης, και κατά την εκτέλεση της δεύτερης “while” η τιμή της μειώνεται σταδιακά κατά 1.

Τέλος, πρόσθεσε 4 φορές την εντολή “led.control_led(led, value)” που σχετίζεται με τον χειρισμό των δύο μπροστινών κόκκινων LED του Maqueen, περνώντας ως πληροφορία το LED θέλεις να προγραμματίσεις και την κατάστασή του (1 για να το ανάψεις και 0 για να το σβήσεις). Προγραμμάτισέ τα να ανάβουν κατά την επιβράδυνση!

    if button_b.is_pressed():
        sleep(1)
        speed = 0
        
        while speed < 100:
            speed = speed + 1
            robot.move(speed, speed)
            sleep(0.015)
            
        led.control_led("LEFT", 1)
        led.control_led("RIGHT", 1)
        
        while speed > 0:
            speed = speed - 1
            robot.move(speed, speed)
            sleep(0.015)
            
        led.control_led("LEFT", 0)
        led.control_led("RIGHT", 0)

Παρακάτω μπορείς να δεις το προτεινόμενο πρόγραμμα συνολικά. Δοκίμασε να το τροποποιήσεις και μη διστάσεις να πειραματιστείς!

from microbit import *
from time import sleep
from GRobotronicsMaqueen import MoveMaqueen, LEDController

robot = MoveMaqueen()
led = LEDController()

while True:
    if button_a.is_pressed():
        sleep(1)
        
        for i in range(4):
            robot.move(40, 40)
            sleep(1.5)
            robot.move(40, -40)
            sleep(0.5)
            robot.stop()

    if button_b.is_pressed():
        sleep(1)
        speed = 0
        
        while speed < 100:
            speed = speed + 1
            robot.move(speed, speed)
            sleep(0.015)
            
        led.control_led("LEFT", 1)
        led.control_led("RIGHT", 1)
        
        while speed > 0:
            speed = speed - 1
            robot.move(speed, speed)
            sleep(0.015)
            
        led.control_led("LEFT", 0)
        led.control_led("RIGHT", 0)

Προσαρμογή για το Maqueen Lite

Αν διαθέτεις Maqueen Lite και όχι Maqueen Plus V2, για να το προγραμματίσεις με MakeCode πρόσθεσε την επέκταση με αυτό το link: https://github.com/DFRobot/pxt-maqueen

Η δομή και η λογική του προγράμματος παραμένουν ίδιες με την περίπτωση του Maqueen Plus V2 και απλώς αλλάζουν μορφή οι εντολές που σχετίζονται με το Maqueen.  

Παρόμοια με τη MakeCode, κατά τον προγραμματισμό του Maqueen Lite με Python, η δομή και η λογική του προγράμματος παραμένουν ίδιες με την περίπτωση του Maqueen Plus V2, μόνο που τώρα δεν χρησιμοποιείται η κλάση LEDController για τον έλεγχο των μπροστινών LED. Τα δύο LED ελέγχονται με τη βοήθεια της βιβλιοθήκης “microbit” και της εντολής “pin8.write_digital(value)“.

Όταν “κουμπώνεις” το Microbit πάνω στο ρομποτάκι, μέσω των κυκλωμάτων που διαθέτει η πλατφόρμα του Maqueen, το αριστερό LED συνδέεται στον ακροδέκτη 8 του Microbit ενώ το δεξί στον ακροδέκτη 12. Και σε αυτή την περίπτωση, δίνοντας τιμή 1 ανάβεις το LED ενώ με την τιμή 0 σβήνεις το LED.

from microbit import *
from time import sleep
from GRobotronicsMaqueen import MoveMaqueen

robot = MoveMaqueen()

while True:
    if button_a.is_pressed():
        sleep(1)
        
        for i in range(4):
            robot.move(40, 40)
            sleep(1.5)
            robot.move(40, -40)
            sleep(0.4)
            robot.stop()

    if button_b.is_pressed():
        sleep(1)
        speed = 0
        
        while speed < 100:
            speed = speed + 1
            robot.move(speed, speed)
            sleep(0.015)
            
        pin8.write_digital(1)
        pin12.write_digital(1)
        
        while speed > 0:
            speed = speed - 1
            robot.move(speed, speed)
            sleep(0.015)
            
        pin8.write_digital(0)
        pin12.write_digital(0)

Αρχεία

Σύνδεσμοι

Post navigation

Έλεγξε το Μaqueen κινώντας το χέρι σου

Κάνε το Maqueen να αποφεύγει εμπόδια

Μάθε, Παίξε και Εξερεύνησε με την σειρά αισθητήρων BOSON!

Ανακαλύψτε το νέο Arduino Nano ESP32: Η επανάσταση στο IoT!