2016年8月17日水曜日

ベースマシンのUI POT(AverageAnalogInクラスを利用)


POTを並べたコントロール・パネルもつなげてみた。入力にはAnalogInの読み取り値を移動平均する自作のAverageInクラス(「mbedのAnalogInでPotentiometerの読み取り値のふらつきを抑える。」)を使った。

配線図

BaseMachine_Sequencer(mbed):
https://developer.mbed.org/users/ryood/code/BaseMachine_Sequencer_Test/

Github:
https://github.com/ryood/BaseMachine_Sequencer

これでつなぐ予定のユーザー・インターフェイス用のデバイスは全部つなげた(^q^/

メモ:

順番に機能を追加して行ったら、実行時に
mbed assertation failed: _ptr == (T *)&_data, file: C:/Jenkins/workspace/mbed-2-build-library/.build/mbed/SingletonPtr.h, line 84
というエラーが出るようになってしまった。

プロジェクト内でいろいろやったが、RTOSを使いつつAnalogInとst7567を同時使用するとこのエラーが出る。シンプルな状態にしてもこのエラーが出る。(プロジェクト内から不要なライブラリも削除)

#include "mbed.h"
#include "rtos.h"
#include "st7565LCD.h"

//ST7565(PinName mosi, PinName sclk, PinName cs, PinName rst, PinName a0);
ST7565 gLCD(PB_15, PB_13, PB_12, PB_2, PB_1);

AnalogIn Ain(A4);

int main()
{
    printf("\r\n*** st7567 & AnalogIn Test ***\r\n");
    gLCD.begin(0x10);    
    
    while (true) {
        char buff[32];
        sprintf(buff, "Ain: %6u", Ain.read_u16()); 
        gLCD.drawstring(0, 0, buff);
        gLCD.display();
        wait(0.1);
    }
}

プロジェクトを一から作りなおしたら動作した(@@;