火曜日, 10月 15, 2019

micro:bit シリアルテスト

最終的には,Macから制御するハードインターフェースにしたい,という目論見で,シリアルテストをした。

少々手こずったのだが,MacBook Proに直結したら安定した。MacBook + USB-C アダプター経由だと不安定になるみたい。そちらはもう少し検討しよう。

設計仕様:
  • micro:bit がシリアルで[#]を受け取ると,現在時刻(起動してからの時間)を返す。
  • その時に,[A] が押されているかどうかも返す。
  • シリアルはUSB, ボーレートは115200とする。
Mac側の操作 Qiitaのページを参考に(というかがっつり利用)させていただきました。
  •  ls /dev/cu* でデバイスを特定
  • screen /dev/cu.usbmodem「見つかったデバイス番号」 115200
  • screen起動中に#を押す。
  • screenから抜けるには [Ctrl]+[A] [Ctrl]をはなさずに[¥]
  • 通信がおかしいと思ったら,Mac terminalを終了。micro:bitを一度取り外し,再度接続する。
もう少しログ取りっぽいこと。これもhttps://qiita.com/miminashi/items/4028eb2365cc23efa02dから

 受信側

$ sudo stty -f /dev/見つかったデバイス raw 9600    # シリアルポートの設定とのこと
$ cat /dev/見つかったデバイス

送信側

$ echo '#' | sudo tee /dev/見つかったデバイス

Macの話が続いてしまうが,CoolTermも使いやすかった。









serial.onDataReceived(serial.delimiters(Delimiters.Hash), function () {
    basic.showIcon(IconNames.Angry)
    serial.writeLine("Time: " + convertToText((next_time - step_time) / 10))
    if (input.buttonIsPressed(Button.A)) {
        serial.writeLine("[A] is pressed.")
    }
    basic.pause(1000)
    basic.showIcon(IconNames.Diamond)
})
 

let next_time = 0
let step_time = 0
step_time = 1000
next_time = step_time + input.runningTime()
serial.redirect(
SerialPin.USB_TX,
SerialPin.USB_RX,
BaudRate.BaudRate115200
)
basic.forever(function () {
    if (input.runningTime() > next_time) {
        next_time = step_time + input.runningTime()
    }
})

0 件のコメント: