ネットラジオを聴くことが多くなった。
秋葉原で安く拾ってきたWindowsタブレット(おそらく何かの教育用途の放出品)にLMDEを入れて使っている。冷却ファンがないので埃っぽい自室でも安心して使えるのと、音声出力がそれなりにあるのでもっぱらラジオとして使っている。
問題はOSをLinuxにしたことで(なお、このタブレットを買った時にインストールされていたのはWindows8.1だった)数少ないボタンのうち電源ボタンしか認識しなくなった事。おかげで音量を少し変えるにもスクリーンにタッチしなくてはならず、手抜きでタッチ向けのウィジェットを書かないでデスクトップのそれを流用している事から扱いにくいことこの上ないのですね。自分が悪いんだけどさ。
マルチメディアキーを繋いでやれば何とかなるか、と思っていたのですがいろいろあって手を付けずにいました。
で、ようやく作り始めたのですね。
当初、RaspiPICOを使おうと思っていたのですがやろうとする事の割に高性能すぎてもったいなくなって、手元に余っていたUSBマイコン、LPC11U35(401)を使うことにしました。だいぶ以前に秋月の店頭で買ったものです。mbed readyなボードで、当時は「なんて便利なんだろう」と感動したもんですが、しかし時は流れ、今では後発でより高機能なPICO(RP2040)のほうが少し安く買えるようになってしまいました。
消費電力の点ではまだアドバンテージがあると思いますが、11U35(401)はどうも終売のようです。mbedのサポートも打ち切られているし、早めに使ってしまったほうがいいでしょう。
という事で、開発環境の再整備から始めたのですがこれが思いの外難航しました。なんせこのボードはmbed2までしか対応しておらず、そのmbed2はとっくの昔に廃止になっているのですね。それでも Keil Studio Cloudでは未だ使えるようでした。問題はユーザーが書いたライブラリのインポートで、探しにくくて苦労しました。Keilはよくできていると思いますが、ライブラリの参照やインポートは以前のツールのほうが使いやすいと思います。
一点注意が必要なのがツールチェーンのバージョン(リビジョン?)で、mbed.bldを書き換えないとビルドが通らない場合があるとか。今回は時間がなかったので詳しく検証せずにネットの記事に従いましたが、よく考えると変な話ではあります。mbed自体、一時期(今でも、か)armのお家事情のおかげで怪しい時期がありましたのでその辺も影響しているのかも。
使ったコンパイラはこちら。
https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
コードはこんな感じです。繋いだキー(ボタン)が少ないので安直に割り込みで済ませています。待ちループはsleep()を挟むと動作しなくなったので、残念ながら空回し状態です。
#include "mbed.h"
#include "USBKeyboard.h"
USBKeyboard key;
DigitalOut myled(LED1);
InterruptIn pushsw_1(p16);
InterruptIn pushsw_2(p17);
InterruptIn pushsw_3(p18);
InterruptIn pushsw_4(p20);
void hoge(void)
{
//key.printf("hoge¥r¥n");
key.mediaControl(KEY_VOLUME_UP);
myled = !myled;
}
void fuga(void)
{
//key.printf("fuga¥r¥n");
key.mediaControl(KEY_VOLUME_DOWN);
myled = !myled;
}
void piyo(void)
{
//key.printf("piyo¥r¥n");
key.mediaControl(KEY_NEXT_TRACK);
myled = !myled;
}
void nano(void)
{
//key.printf("nano¥r¥n");
key.mediaControl(KEY_PREVIOUS_TRACK);
myled = !myled;
}
int main(void)
{
pushsw_1.mode(PullUp);
pushsw_2.mode(PullUp);
pushsw_3.mode(PullUp);
pushsw_4.mode(PullUp);pushsw_1.rise(&hoge);
pushsw_2.rise(&fuga);
pushsw_3.rise(&piyo);
pushsw_4.rise(&nano);
myled = 0;
while (1) {
}
}
回路図は省略。試作中の外観はこちら。
早速繋いで使ってみました。音量調整キーはxfce4 のpulseaudioが持っていきましたので当初の目的はあっさりクリアしたのですが、問題はここから。曲や局の変更に使おうとしたNEXT_TRACKとPREVIOUS_TRACKが思うように扱えません。
Audaciousはプラグインで対応できましたが、Lollipopはダメのようです。自作のラジオのほうはgtkのイベント処理を攻略できていません。gtk_flow_boxではカーソルキー及びTABキーで要素の移動ができるので、key-press-eventでTRACKキーをトラップしてTABキーに差し替えてemitしたのですが、移動してくれないんですね。
先は長いな。
- 2024.03.10 Sunday
- mbed
- 22:26
- comments(0)
- -
- by sakaisatoru