初めて知った名前ですが、生まれは一世代ぐらい早いですがMozartとほぼ同世代人と言って良いと思う。つまり宮廷音楽の華やかなりし時代は共通しています。
曲風はBenda様式というそうで、もちろんMozartの景色とは違いますが、パトロンである諸侯の趣向を反映するだろうから香りは似ているのはやはり時代の必然というべきでしょう。
admin

la vie libre
デフォルトでは小容量のLi-ion電池が内蔵されていますが、残量を知る方法が必要な時があります。完全放電してしまうと電池は再生不能になるし。
https://m5stack-build.hatenablog.com/entry/2019/10/05/233914
で電池残量表示していたので、該当部分だけのコードを引き出して、既存のプロジェクト、
https://isehara-3lv.sakura.ne.jp/blog/2022/02/04/1095/
に埋め込みました。
コア部分だけ抜き出すと以下の通り。setup_batt()が初期化、read_batt()が残量読み取りです。
void setup_batt()
{
M5.begin();
M5.Power.begin();
}
int read_batt()
{
int l_battery = M5.Power.getBatteryLevel();
return l_battery;
}ソースコードは、
https://github.com/chateight/servo_
になります。ファイル追加のついでに、汚かった構造(ヘッダーファイルにソースコード混在など)を書き直してます。
おそらく、どのプロジェクトでも電池残量表示はデフォルトで必要だろうと思う。
今は満充電のようですが、表示はおそらくそれほどの精度はなくて目安だろうと思う。
P.S.
2日ぐらい経過してみてみたら75%表示になっているから機能はしている。ただし分解能は25%らしい。
admin
micro:bitはシングルタスク処理しかできないと思っていましたが、callback処理あるいはバックグランド処理でイベント待ち(ソフトウェア割り込みと言って良いと思う)ができるんですね。バックグランド処理が出来る時点でマルチタスクと言っていいですが。今まで気づいていませんでした、というかmicro:bitにあまり触っていなかったということなのでしょう。
イベントの種類はボタンが押されたとか限定的のようですが、ともかくも割り込み処理が出来るというのは出来ることの範囲が広がります。
で、『ひらけゴマ』の5秒間オープンをスイッチAを押すことで終了させるようにしてみました。イベントの種類には制限があるようで、タスク間通信のような機能もなさそうです。
https://isehara-3lv.sakura.ne.jp/blog/2022/06/03/形のあるものにしたmicrobit-サーボモーター/
イベントの処理部分だけを抜き出すと以下の画像になります。
アップデートした全体コードはこちらに、
https://github.com/chateight/servo_motor
admin
それらしい機能にしてみました。
音/照度/タッチのいずれかの条件で開く例えばゴミ箱のようなもの。
コード、3Dプリンタ用のSTLファイルは以下のリンクにあります。ステッピングモーターへのねじ止めはネジの係が悪くて、ドリルでザグったのであと2mmぐらいは取り付け部の厚さは薄くて良いと思います。
https://github.com/chateight/servo_motor
動作している動画は以下の通り、一度開くと5秒間状態保持するようにしています。
admin
ライセンス切れまであと26日と出てきたので、更新処理をしました。
参考は以下のサイトです。
ギリギリ期限切れでなくとも更新処理はできるようで、手順は以下の通り。
① AutoDeskのサイトにログオンする
② 再度ユーザ登録する(以前の情報も見えるはず)
③ インストールする、最新版がインストールされててもインストール処理は必要らしい
④ アプリを再度立ち上げると、ライセンス切れ表示は消えているはず
およそ一年で、残しているだけでも15個の『作品』がありました。編集できるのは同時10個までが無償版の制限の一つですが、個人利用ならば何の問題もない。
admin
たまたま気づいただけですが、Macbook pro 16(2019)のキーボードのバックライト照明が効かない。変えようとすると、照度変更禁止のようなマークが出ます。
Macbook proだけかと思ってacbook air(2018)見ても同じだから、いずれかのOSアップデートでそうなった可能性。
実用上は問題ないから、そのうち治るのを待つ。
P.S.
夕方になったら、Macboo pro/airとも可変できるようになってた、何だったんだろう?
admin
変換基板届いたので、早速動かしてみた。一番の懸念はアナログ方式ならば、概ねどのサーボモーターでも扱えるのかということ。
変換ボードはこんな形、緑色の樹脂は端を捲れば除去できます。
micro:bitはおそらくどちらの面でも挿入できるでしょうが、スイッチサイエンスの写真を参考に以下のように、タッチセンサーが見える面を以下のように挿入しました。端子の並び考えれば、自ずとそうなりますが、おそらく逆向きでも壊れることのないような端子配列にはなっているでしょう、やっては見ませんが。
https://isehara-3lv.sakura.ne.jp/blog/2022/01/28/サーボモーターの動作確認m5stack-gray/
ここで使ったサーボモーターに制御信号だけつないで動かしてみた。
ブロックコードは以下のリンクになります。タッチセンサー、環境音センスもしくは照度センサーのオア条件でモーターを起動しています。
https://github.com/chateight/servo_motor
動作している動画は、
このように、非常にあっけなく動かすことができます。
admin
micro:bitもGPIOがあるから、サーボモーターも駆動できるんだろうと思っていたけれども、ブロックコマンド使って簡単に動かせるんですね。
ただ、あまりに簡単すぎてどんなサーボモーターでも扱えるのかは不明だから、ちょっと動作確認してみようと思う。クリップで止める(接続する)のは面倒だから、スイッチサイエンスで変換ボード購入してmicro:bit本体にははんだ付けしないようなやり方で動作確認します。
https://www.switch-science.com/catalog/3181/
admin
UnitV2 AIカメラからは認識結果が垂れ流しで出力されてくるようなので、それをM5stackで受け取ってみます。
M5stackのgroveは標準ではI2Cなので、シリアルで使うためにSoftwareSerialライブラリを使います。
参考は、
https://qiita.com/ma2shita/items/37d403fb7a79814d4d4c
ですが、SoftwareSerialの設定(インスタンス作成)では上のリンクのソースと21 <=> 22を入れ替え必要でした。
groveコネクタというのは物理的な形状や接続しか定義していないので、中を通る信号線は自由に定義できるから。
以下の画像から、
ピン21 — SDA — Tx(左端)
ピン22 — SCL — Rx(左端から2番目)
となるので、シリアルのツイスト対抗ピン設定すると”Grove(22, 21); // define rx/tx”となります。
#include <M5Stack.h>
#include <ArduinoJson.h>
#include <SoftwareSerial.h>
SoftwareSerial Grove(22, 21); // define rx/tx connecting to the UnitV2 camera
// SoftwareSerial(rxPin, txPin, inverse_logic)
int x;
int y;
long k;
char data[50];
void setup() {
M5.begin();
M5.Lcd.setCursor(20, 40);
M5.Lcd.setTextSize(2);
Serial.begin(115200);
Grove.begin(115200);
M5.Lcd.print("--initialized--"); // display M5 Lcd message
Serial.print("---initialized---"); // output serial line
}
void loop_(){
if(Grove.available()) {
String recvStr = Grove.readStringUntil('\n');
if(recvStr[0] == '{'){
Serial.print(recvStr);
}
}
}
void readJSON(void){
String recvStr = Grove.readStringUntil('\n');
StaticJsonDocument<128> doc;
DeserializationError error = deserializeJson(doc, recvStr);
if (error) {
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
return;
}
x = doc["x"];
y = doc["y"];
k = doc["k"];
const char* running = doc["running"]; // "Lane Line Tracker"
}
void loop(){
if(Grove.available()) {
readJSON();
sprintf(data,"x = %d , y = %d , k = %ld",x,y,k);
Serial.println(data);
}
}
AIカメラの電源はgrove経由でM5stackから供給されるので、一度ブラウザでAIカメラの動作モードを指定してやれば、あとはAIカメラのUSBケーブルは抜いても引き続き動作します。
AIカメラから送信されるデータはjson形式なので、生のデータはこんな感じ。
これを、ArduinoJsont使って、解析します。
サンプルの事例ではLaneLineTrackerだったので同じコードを流用してますが、いかようにも変えられるでしょう。
生データ出力と解析データ表示は、ソース中ではloop()とloop_()関数で埋め込んで切り替えています。
また結果はUSBシリアルへの出力ですが、M5stackに表示させるだけで十分ならば画面表示させれば良いし、さらにパソコンやラズパイなどに無線で飛ばしても良いでしょう。
時々deserializeがエラーしているので、これはシリアルの転送速度を落としてやらないとダメかもしれません。
admin
TFカードと呼んでますが、実態はmacroSDとほぼ同じだろう。本体にスロットがあり、取り出し簡単ではなかったけれども抜いてみたら、SunDiskの16GBのカードが入っていて中はカラっぽ。
すでにsshコマンドで確認済みですが。
https://isehara-3lv.sakura.ne.jp/blog/2022/03/07/unit-v2カメラにsshログオン/
A.Iカメラの基本機能でそれなりのことはできるけれども、何かやろうとするとA.Iカメラ側にコード書かなければいけないけれども、関連情報はこれからサーチ。まあ、Pythonも3.0系が入っているし、c/c++も使えばやりたいことはできるでしょう。
Groveインターフェース介して、電源供給とシリアル通信使うのが現実的なアプリケーションになると思う。
admin