microbit-dalでAS-289R2サーマルプリンタを使う

これは、Mbed Advent Calendar 2017の21日目の記事です。

/media/uploads/MACRUM/img_2238.jpg

micro:bitでサーマルプリンタを制御してみました。 microbit-dalやサンプルコードの解説は、かんぱぱさんの記事をご覧ください。

用意するモノ

  • micro:bit本体
  • AS-289R2サーマルプリンタシールド

今回は接続にベースボード(非売品?)とエッジコネクタブレークアウトボードを使いましたが、電気的に接続されていれば他の接続ボードを使っても問題ないと思います。

接続

micro:bitのシリアルポート(p16)とベースボードのRxD1を接続します。あと、GNDも接続します。

micro:bitAS-289R2ベースボードAS-289R2シールド
0VCN1-6 (GND)GND
p16CN1-8 (D1)RxD1

プログラム

コードは、こちらにパブリッシュしました。インポートして使ってください。

Import programmicrobit_AS-289R2

AS-289R2 test program for micro:bit

実際のコードは、こんな感じです。

#include "MicroBit.h"
#include "AS289R2.h"

MicroBit uBit;
AS289R2  tp(p16);

void printTemp(MicroBitEvent)
{
    tp.printf("温度: %d\r", uBit.thermometer.getTemperature());
}

void printAcc(MicroBitEvent)
{
    int x = uBit.accelerometer.getX();
    int y = uBit.accelerometer.getY();
    int z = uBit.accelerometer.getZ();
    tp.printf("加速度: %+5d, %+5d, %+5d\r", x, y, z);
}

int main()
{
    // Initialise the micro:bit runtime.
    uBit.init();

    // Register event handlers for button presses (either button fires!)
    uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, printTemp);
    uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, printAcc);

    tp.initialize();
    tp.putLineFeed(2);
    tp.printf("** Thermal Printer Shield **\r\r");

    release_fiber();
}


Mbedのオンラインコンパイラで日本語を入力すると、UTF-8な文字列リテラルになるので、文字コードをそのままAS-289R2に渡すことが出来るのでお手軽です。

動作例

こんな感じで動きました。micro:bitの温度センサーと加速度センサの値を表示します。

以上です。明日は、土井さんです。


Please log in to post comments.