Nanobit with microPython ตอนที่ 2

การส่งคำสั่งผ่าน Command Line ด้วย Python Editor

Nanobit รองรับการเขียนโค้ดได้หลากหลายรูปแบบ

ไม่ว่าจะเป็น Microsoft makecode สำหรับผู้เริ่มต้น

microPython สำหรับผู้ใช้งานระดับกลาง

และ C/C++ ผ่านซอฟต์แวร์ Arduino สำหรับระดับกลางถึงระดับสูง

ลองมาทำความรู้จักซอฟต์แวร์เหล่านี้กันก่อน ก่อนที่จะเข้าเรื่อง microPython ดังที่ตั้งใจไว้ครับ

Microsoft Makecode

https://makecode.microbit.org/

เป็นตัวเลือกแรกสำหรับเขียนโค้ด ยิ่งนานวันการพัฒนาก็ยิ่งมีมากขึ้น สำหรับผู้เริ่มต้นแนะนำให้เขียนโค้ดผ่าน makecode ได้เลย โดยนอกจากใช้วิธีการลากบล็อกเพื่อสร้างโค้ดแล้ว ยังสามารถเขียนด้วย JavaScript หรือ microPython ก็ได้

ตัวอย่างที่ 1 ไฟกะพริบที่ขา 15

ตัวอย่างนี้เพื่อให้เห็นว่า Makecode มีวิธีการเขียนโค้ดอย่างไร และสามารถแปลงโค้ดเป็น Javascript หรือ Python กลับไปกลับมาได้

Python Editor V2.0 แบบ online

Python Editor for micro:bit (microbit.org)

เนื่องจากเป็นเวอร์ชั่น online จึงมีการปรับปรุงอย่างสม่ำเสมอ ทำให้ Python Editor โดยถ้าใช้ windows 10 ขึ้นไปและใช้ Microsoft Edge หรือ Google Chrome สามารถดาวน์โหลดโค้ดไปยัง Nanobit ได้โดยตรงผ่าน WebUSB และสามารถสื่อสารอนุกรม และเขียนโค้ดผ่านการพิมพ์คำสั่งแบบทันทีทันใดที่เรียกว่า REPL ได้เลย

หน้าที่ต่างๆ ของเมนู

ทำหน้าที่ดาวน์โหลดโค้ดมายังคอมพิวเตอร์ โดยเมนูนี้จะเปลี่ยนจาก Download เป็น Flash เมื่อทำการเชื่อมต่อ (Connect) กับ Nanobit เรียบร้อย

เป็นเมนูที่อยู่ตำแหน่งเดียวกับ Download โดยเมนู Flash จะปรากฏขึ้นมาแทนที่ดาวน์โหลดเมื่อการเชื่อมต่อกับ Nanobit ทำได้สมบูรณ์

คำสั่งสำหรับเชื่อมต่อ Nanobit เข้ากับ Python Editor ผ่าน WebUSB ซึ่ง Browser จะต้องเป็น Google Chrome หรือ Microsoft Edge ทำงานบน Windows 10 เท่านั้น (ขณะเขียนบทความ) ซึ่งเมื่อเชื่อมต่อการดาวน์โหลดและสื่อสารข้อมูลข้อมูลไปยัง Nanobit สามารถทำได้โดยตรง

WebUSB

เป็นวิธีการที่เปิดทางให้ Browser สามารถติดต่อฮาร์ดแวร์ผ่านพอร์ต USB ได้ พัฒนาโดย Google ดังนั้นเพื่อให้สามารถใช้ความสามารถนี้ได้ Browser ที่ใช้จะต้องเป็น Google Chrome หรือ Microsoft Edge และระบบปฏิบัติการที่ใช้จะต้องเป็น Windows 10 เท่านั้น เมื่อเชื่อมต่อผ่าน WebUSB ได้แล้วที่ Tabด้านบนของ Browser จะมี ICON USB เล็กๆ ปรากฏขึ้น (Microsoft Edge ไม่มีสัญลักษณ์ปรากฏ)

ปุ่มสำหรับเปิดหน้าต่างจัดการไฟล์ขึ้นมา โดยมีคำสั่งสำคัญประกอบด้วย

Load สำหรับเปิดไฟล์ที่เคยสร้างไว้ก่อนหน้าที่ โดยเปิดได้ทั้ง .py ที่เป็นซอร์สโค้ดและ .hex โดยจะใช้การ Browse ไปยังไฟล์ที่ต้องการเปิดหรือลากไฟล์ที่ต้องการเปิดมาในพื้นที่ก็ได้

Save ใช้สำหรับบันทึกไฟล์ โดยบันทึกได้ 2 รูปแบบคือเป็นซอร์สโค้ดปกติ (.py) อ่านเข้าใจ กับไฟล์ภาษาเครื่อง .hex ที่ใช้โหลดไปยัง Nanobit

หน้าต่าง Load/Save

Project Files
เป็นหน้าต่างสำหรับการจัดการไฟล์และโมดูลที่ใช้กับ Nanobit โดยปกติภายใน microPython จะมีโมดูลพื้นฐานที่ฝังอยู่ภายในเรียบร้อยแล้วเช่น โมดูล microbit หรือโมดูล radio แต่บางครั้งเราต้องการติดต่อกับอุปกรณ์ภายนอกอื่นๆ ต้องโหลดโมดูลตัวอื่นเข้ามาเพิ่ม โดยสามารถใช้ปุ่ม Add file เพื่อเลือกไฟล์ (.py) ที่ต้องการมาไว้ยังตัว Nanobit ของเราได้

    ภายในหน้าต่างจัดการไฟล์จะแสดงไฟล์ที่มี,ขนาดของไฟล์ และมีแถบแสดงพื้นที่หน่วยความจำที่ใช้ไป โดยแยกสีระหว่าง module และโปรแกรมหลัก (main.py) ไฟล์เหล่านี้ไม่สามารถมองเห็น ในส่วนไดรฟ์ Nanobit ได้ โดยจะเก็บแยกส่วนไว้ต่างหาก

สำหรับ main.py คือส่วนโปรแกรมหลักที่เราเขียนขึ้น จะพบว่าไฟล์นี้ไม่สามารถลบได้ แต่เราสามารถนำไฟล์ main.py ตัวอื่นมาเขียนทับมันได้ ซึ่งจะทำให้โปรแกรมหลักของเราหายไป ดังนั้นจึงควรระวังในส่วนนี้

โดยเมนูนี้สำคัญมากที่ต้องรองรับ WebUSB กรณีที่เชื่อมต่อเป็นที่เรียบร้อย จะปรากฏหน้าต่างสำหรับการพิมพ์คำสั่งแบบ Command Line (REPL) ซึ่งสามารถทดสอบคำสั่งภาษา Python แบบทันทีทันใดได้เลย โดยจะมีสัญลักษณ์ >>> คอยรอรับคำสั่ง

หมายเหตุ
ในบางกรณีถ้าตรวจพบว่า หน้าต่าง REPL ไม่ปรากฏขึ้นมาเป็นไปได้ว่า Nanobit ก่อนหน้านี้อาจจะผ่านการเขียนโค้ดด้วยภาษาอื่นๆ เช่น MakeCode ให้ทำการ Flash โค้ดตัวอย่างลงไปก่อนแล้วค่อยเปิดหน้าต่าง Open Serial อีกครั้ง

สำหรับการทำงานของโค้ดถ้ามีการวนลูปค้างอยู่ จะไม่สามารถออกมาสู่หน้าต่าง REPL ได้ จะต้องกดปุ่ม Ctrl+C เพื่อหยุดการทำงานหรือกดที่ข้อความ Send CTRL+C for REPL สีฟ้าด้านบนของหน้าต่างก็ได้

สำหรับแถบด้านบนจะมีข้อความ Send CTRL+D to reset เพื่อสั่ง Soft reboot ให้กับตัว Nanobit ได้ ใช้วิธีกดที่ข้อความหรือกดคีย์ลัด CTRL+D ก็ได้

REPL คืออะไร

REPL ย่อมาจาก Read-Eval-Print Loop

เป็นสภาพแวดล้อมในการเขียนโปรแกรมแบบ Interactive ที่สามารถแสดงผลลัพธ์ได้ทันทีโดยไม่ต้องมีการคอมไพล์ ใช้กับซอฟต์แวร์ที่เป็นลักษณะ Interpreter แบบภาษา Python ได้เลย โดยผู้ใช้งานสามารถทดสอบพิมพ์คำสั่งเพื่อทดสอบการทำงานได้ เช่นคำสั่ง

    >>> print (5+6)

    11

โดย

    Read = การอ่านข้อมูลอินพุตจากผู้ใช้

    Eval = มาจาก Evaluate คือการแปลและประมวลผลข้อมูลอินพุตอันนั้น

    Print = การแสดงผลที่ประมวลได้

    Loop = วนกลับไปรอรับข้อมูลอินพุตใหม่

ความแตกต่างระหว่าง Compiler และ interpreter

ตัวอย่างที่ 2 ทดสอบพิมพ์โค้ดแบบ Command Line ด้วย Python Editor

1. เชื่อมต่อบอร์ด AX-Nanobit เข้ากับคอมพิวเตอร์

2. เปิด Browser (Google Chrome,Microsoft Edge) เข้าไปที่ Python Editor for micro:bit (microbit.org)

3. กดปุ่ม Connect เพื่อเชื่อมต่อบอร์ด Nanobit โดยจะมีหน้าต่างแสดงชื่อบอร์ดขึ้นมาให้คลิกเลือก Connect ที่หน้าต่าง ปุ่ม Connect จะกลายเป็น Disconnect แทน

4. กดปุ่ม Open Serial เพื่อเปิดหน้าต่าง REPL

5. กดปุ่ม Send CTRL+C for REPL หรือกดคีย์ลัด Ctrl+C เพื่อหยุดการทำงานของ Nanobit และเข้าสู่โหมด REPL

6. จะพบเคอร์เซอร์ >>> รอให้พิมพ์คำสั่งทดสอบ และกด Enter ผลลัพธ์ที่ได้จะเป็นดังรูป

ตัวอย่างที่ 3 การตรวจสอบชนิดของตัวแปรด้วยคำสั่ง Type

microPython ใช้วิธีการง่ายๆ ในการสร้างตัวแปร เช่น

>>> X = 400         ### X จะเป็นตัวแปรแบบ Integer :int หรือจำนวนเต็ม

>>> Y = 4.5         ### Y จะเป็นตัวแปรแบบ Float :float หรือตัวเลขทศนิยม

>>> Z = True          ### Z จะเป็นตัวแปรแบบ Boolean : bool ให้ผลจริงกับเท็จ

>>> S = ‘inex’     ### S จะเป็นตัวแปรแบบ String :str หรือข้อความ

สำหรับการตรวจสอบชนิดของตัวแปรที่เราสร้างขึ้นไว้แล้วว่าเป็นชนิดไหน ให้พิมพ์

type (var) โดย var คือชื่อตัวแปรที่ต้องการตรวจสอบ

เครื่องหมาย = ใช้สำหรับกำหนดค่าตัวแปร
เช่น

>>> x = 100

>>> y = 20

>>> x+y

120

ตัวแปร List

microPython ไม่ใช้ตัวแปรแบบ Array แต่จะใช้ตัวแปรแบบ list แทน ซึ่งความสามารถเพิ่มเติมจากตัวแปร Array คือสามารถเก็บชนิดข้อมูลหลายๆ ชนิดอยู่ภายในตัวแปร List ชุดเดียวกันได้

>>> i = [1, 2, 3, 4, ‘inex’, 5, ‘nanobit’]

>>> print (i[4])

inex

>>> print (i[2:6])

[3,4,’inex’,5]

สำหรับตอนที่ 2 สำหรับเรื่องการพิมพ์คำสั่งผ่าน Command Line ยังไม่จบครับ ตอนหน้ามาว่ากันต่อด้วยเรื่องการพิมพ์คำสั่งเพื่อทดสอบฮาร์ดแวร์ เช่น สวิตช์ LED หรือขาพอร์ตต่างๆ ตอนนี้ขอจบไว้เท่านี้ครับ

Facebook Comments Box