奇幻
摸彩箱
Charlie
結構設計
廣播(Radio)
摸彩箱:
動作偵測
摸彩箱:
狀態指示燈
連線
電腦主程式:Python
有線連結:pySerial
使用者介面:PyQt
程式:
Blocks
或 Python
程式設計:
Blocks
摸彩箱
摸彩箱:
動作偵測
摸彩箱:
狀態指示燈
程式設計:
Blocks
訊息及控制
連線
電腦主程式:Python
有線連結:pySerial
使用者介面:PyQt
程式:
Blocks
或 Python
Micro:bit序列傳輸
將資料轉成一長串0與1的訊號來傳輸
兩端的“傳輸率”必須設定成相同的速度
例如:115200,代表 每秒傳送 115200 的 0/1 訊號。
右邊的例子為,
送一行字串(包括換行)到電腦,速度為 115200 每秒
電腦端安裝 Python 及 pyserial
安裝 pyserial
pip install pyserial
電腦端範例
連接到 Micro:bit 的管道為
參考“裝置管理員”,“連接埠“
COM5, 速度為 115200
按下 Ctrl-C, 離開程式
import serial
COM_PORT = 'COM5'
BAUD_RATES = 115200
ser = serial.Serial(COM_PORT, BAUD_RATES)
try:
while True:
while ser.in_waiting:
data_raw = ser.readline()
data = data_raw.decode()
print('received raw data:', data_raw)
print('received data:', data)
except KeyboardInterrupt:
ser.close()
print('Quit.')
電腦介面
Micro:bit 為例
按下 A 由 Micro:bit 傳送資料
當讀取到 carriage return 字元,就將所有的讀取到的資料都顯示出來
QSerialPort
必須導入 QtCore 及 QtSerialPort
from PyQt5 import QtCore, QtSerialPort
QSerialPort
portName 為序列埠(Serial Port)名字
速率(例子為 115200)
當收到資料時,呼叫的函式名稱(例子為 self.receive )
self.serial = QtSerialPort.QSerialPort(
portName,
baudRate=QtSerialPort.QSerialPort.Baud115200,
readyRead=self.receive
)
QSerialPort
開啟通訊
通訊為:可讀可寫
回傳 True 為成功
flag = self.serial.open(QtCore.QIODevice.ReadWrite)
QSerialPort
canReadLine() 判斷是不是有資料進來
readLine().data() 讀取資料,decode() 解開成字串
將資料加入到本文編輯元件上
def receive(self):
while self.serial.canReadLine():
text = self.serial.readLine().data().decode()
text = text.rstrip('\r\n')
self.ui.textEdit.append(text)
QSerialPort
將傳送的字串再加上一個 carriage return 字元
利用bytes 函式將字串轉成 bytes 型態,以 utf-8 編碼
用 write 將資料寫出
def writeData_Click(self):
data4Write = self.ui.Data4Write.text()
data4Write += '\r'
writeBytes = bytes( data4Write, 'utf-8')
self.serial.write(writeBytes)
QSerialPort
摸彩箱支撐架
選擇適當的接腳
選擇附屬功能少的接腳
P0, P1, P8, P2, P16
超音波模組
掀開開口
利用舵機驅動開關門
接腳
紅線接 Vcc
棕線接地
橙線接 P1
先將舵機轉向 0 角度
掀開板軸心與舵機的軸心不同
將迴紋針伸直
將迴紋針一邊,摺兩個1cm的轉角
套入擺動臂接孔,並折彎固定迴紋針
延長5~6公分,其餘摺成直角
貼上雙面黏貼泡棉膠帶
轉軸對齊中間,貼到折板下方
將搆線插到固定針下方
全開蓋後,將擺動軸接上舵機
將另一支伸直的迴紋針上、下都貼上膠布
將開口掀開,固定舵機,接上擺動臂
開口角度為0,蓋起來角度為90