תכנות ה-BBC Micro:bit בשפת פייתון

ה-BBC Micro:bit הוא לוח פיתוח חדש ומסקרן שמיועד לילדים בגילאי 11 והלאה (דוברי אנגלית, כמובן…) וכלי התכנות הרשמיים שלו מותאמים לקהל היעד הזה. בפוסט זה נראה איך מתכנתים את הלוח בשפת Python עם סביבת הפיתוח והספריות שנכתבו במיוחד בשבילו.

למי שטרם ראה, הנה סרטון ההוצאה מהקופסה וההסברים על הלוח, בשיתוף עם אחד הילדים:

האתר הרשמי של ה-BBC Micro:bit מרשים ומושקע, ורואים שיש מאחוריו מחשבה ותקציב. הוא לא מושלם וגם לא שלם לגמרי, אבל אפשר למצוא שם הרבה פרויקטים, רעיונות, מידע והסברים, שוב – בהתאמה לגיל של המשתמש הטיפוסי. באתר מוצעות ארבע דרכים לתכנת את הלוח, כולן באמצעות סביבות פיתוח מקוונות: ל-JavaScript ויזואלית, לשתי שפות של מיקרוסופט (אחת מהן ויזואלית), ול-Python. אני אתמקד בפייתון כי בטווח הארוך, היא כנראה השימושית ביותר ללמידה מבין הארבע.

כאשר פותחים את סביבת הפיתוח לפייתון (בלחיצה על "New Project" שבקוביה עם הכותרת Python בקישור למעלה), מקבלים קוד קצרצר לדוגמה, עם מעט מאד אפשרויות מסביב. תהליך הצריבה פשוט מאד ומוסבר בטקסט מימין: לוחצים על Download כדי לקמפל את הקוד ולהוריד למחשב את הקובץ הסופי (עם הסיומת HEX), מחברים את הלוח למחשב (הוא יופיע ככונן USB), ומעתיקים את הקובץ מתיקיית ההורדות אל הלוח. התהליך הזה מוכר לכל מי שעבד עם סביבת הפיתוח המקוונת Mbed, ולכאורה הוא מסובך קצת יותר מאשר הצריבה הישירה של ארדואינו – אך מספיק להיזכר בכל הבעיות שאנשים נתקלו בהן עם דרייברים לארדואינו כדי להבין למה השיטה של ה-BBC Micro:bit היא הרע במיעוטו.

סביבת הפיתוח בפייתון של ה-BBC Micro:bit
סביבת הפיתוח בפייתון של ה-BBC Micro:bit

כמו בארדואינו, גם כאן הלכו מאד לקראת המתכנתים הלא-מנוסים ויצרו ספריה עם גישה נוחה לכל הפונקציות הבסיסיות והנפוצות של הלוח. כך למשל, כדי להציג את הטקסט "Hello, World" בגלילה משמאל לימין על מטריצת הלדים, צריך רק לכלול את הספריה בתחילת הקוד:

from microbit import *

ואז לכתוב פקודה כזו:

display.scroll('Hello, World')

את המידע על כל הפונקציות השונות האלה אפשר למצוא כאן. והנה מגיע החלק המוזר: כשכותבים קוד שגוי לא מתקבלת שום אינדיקציה לכך לאורך התהליך, עד שהקובץ נצרב על הלוח במלואו (וזה לוקח מספר שניות). רק אז, במקום מה שציפינו לראות, מופיעה הודעת שגיאה של פייתון שרצה על מטריצת הלדים. לקרוא הודעות שגיאה ממסך של 5×5 פיקסלים זה אחד הדברים המתסכלים והמוזרים ביותר שנתקלתי בהם כבר הרבה זמן, ואני מקווה מאד שהאחראים ימצאו פתרון טוב יותר בעתיד הקרוב.

כדי להתנסות בתכנות של הלוח הזה, יצרתי תוכנה קטנה ופרימיטיבית שמריצה מסר בעברית, מימין לשמאל. הפונקציות המובנות לא תומכות בעברית כמובן, אז הקוד שלי עובד ברמה נמוכה קצת יותר.

# Shalom! by Ido Gendel, 2016

from microbit import *

Msg = ['000000900000000000900000000000000',
       '000000909999909900999909090900000',
       '000000900900900900000909090900000',
       '000000000900900900009009090900000',
       '000000900999900900090009999900000']

def toLEDs(sx):
    for x in range(sx, sx+5):
        for y in range(0, 5):
            display.set_pixel(x-sx, y, int(Msg[y][x]))

while True:
    for offs in range(0, len(Msg[0]) - 4):
        toLEDs(len(Msg[0]) - 5 - offs)
        sleep(180)

והנה התוצאה:

אגב, המיקרו-בקר שעל הלוח מסוגל בעיקרון לעבוד עם BLE, אבל התכנות בפייתון לא תומך בכך כי אין מספיק מקום בזיכרון. כמו כן, הגישה לפינים בתחתית הלוח מאד לא נוחה, וכדי לעבוד עם חוטים מגשרים נורמליים כמו שאנחנו רגילים בארדואינו צריך להלחים אותם בזהירות, או להשיג מתאם מיוחד. והיזהרו – כשהלוח מחובר למחשב דרך USB, הוא מתחמם מאד!

לסיכום, למרות ההשקעה הרבה בפיתוח המוצר ומה שמסביבו בהתאם לקהל היעד, עדיין יש מקום רב לשיפור גם ברמה הטכנית וגם בחוויית המשתמש. ילד שלומד לפי תוכנית מסודרת בבית הספר לא יבחין ברוב הבעיות הללו, אבל מייקרים מנוסים יותר שרוצים לעשות עם הלוח דברים מעניינים באמת יצטרכו להתמודד עם הרבה מכשולים בדרך.

המשך יבוא…

להרשמה
הודע לי על
0 תגובות
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות