ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

Space Invaders(1)

マイコンに興味を持ったのはスペースインベーダーがキッカケなんだけど作ったことはなかった。 多分こんな作りだろうというのはある程度予想はつくのだが、なんで自爆するのかとかシェルターの壊れ方とか完全に再現できないだろうと思うのもあって、手を出し…

M5Stamp pico で Serial2

IoT

LoRa通信をM5Stamp picoで試してみようとした。 シリアルとしてSerial2を使用するが最初うまくいかなかった。 以下の組み合わせでいい様だ。 Rx Tx 1 G21 G22 2 G36 G26 最初G21、G22逆でやってたのが悪かったみたい。 2番目の組み合わせはロジアナのプロー…

Tiny Basic by Ruby作ってる

Tiny basic をRubyで実装していてやっとprint文が実行できる様になった。 github.com 残りもゆっくり実装していく。 Let文ができた。(6/14)

3軸トゥールビヨンの置き時計【3Dプリント用STLデータ】購入した(10)

またまた放置していたが、3Dプリンターの印刷待ちの間に21:26まで進んだ。 5/30 26:48 まで進んだ。ゼンマイの所あってるか不安。 www.youtube.com

川本喜八郎人形美術館

川本喜八郎人形美術館 以前飯田に出張した時にチラシを見てあることを知っていた。 松本からは30分くらいかなと思うこともあって今回のRubyKaigiでは絶好の機会だった。 二日目に行ったのだが、30分とは甘い見積もりで、高速使って1時間弱かかる距離だった。…

RubyKaigi 2023へ

RubyKaigiに参加するのは仙台以来。 まつもとにまつもとさんが 来る貴重な回に参加できてよかった。 2020年だったら参加できそうになかったし、今回もちょっと迷っていたのだが、勢いで来てしまった感があるが、これも巡り合わせだろう。 行き帰り交代で運転…

SwiftUIでModal ViewがBackgroundになった時に通知させる

scenePhaseを使うとバックグラウンドになった時に通知されるのだが、Modal Viewが表示されているときは呼び出されなかった。 struct MessageView: View { @Environment(\.scenePhase) private var scenePhase @Binding var isPresented: Bool var body: some…

ITMS-90792: Invalid font

ITMS-90792: Invalid font - There was an error validating the font at '...........woff'. Font not supported by platform. 単なる選択ミスでwoff形式のファイルがプロジェクトに追加されていたためだった。 参考 stackoverflow.com

RubyでExcelの扱い

RubyでExcelの扱いは何度かしているがその都度忘れてしまう。 こちらが参考になる。 qiita.com いつもならcsv書き出しは手作業ですることが多いが、gemを使ってやってみる。 rooは読み込みだけらしいが、今回の目的には十分なので試してみる。たぶん初めて使…

Font Picker

iOSアプリでできるだけシステムフォントを使う様にしていたが、自動でサイズ調整させようとした時に、スムーズに拡大縮小されないのでシステムではないフォントを使わざるを得ないかな。 ということで探してこちらを試してみた。 zenn.dev 以前の7セグフォン…

LoRaモジュール評価ボードテスト(3)

IoT

前回2Kmくらいまでの距離で通信できるのを確認できた。 伝送レートを変えてどこまで通信できるか試す準備。 受信機の方のソフトを変えて、これで設定変更できる。 params[0] = BAUDRATE_9600 | BW_125 | SF_5; write_register(2, params, 1); こちらが参考に…

appのnamespace

iOSアプリで複数のバージョンを作成する場合Xcodeのターゲットを複製して変更していく。 例えば Foo アプリがあってLite版で Foo Lite を作成するとする。 するとアプリの名称はFoo Liteとなる。 しかし、NamespaceもFoo Liteとなってしまう。 クラスに属さ…

Keyboard shortcut

SwiftUI の Keyboard shortcut は簡単だ。 View に keyboardShortcut で指定するだけ。 Button() { debutPrint("Copy Action") } label: { Text("Copy") } .keyboardShortcut("c") iPadだとToolbar button に割り当てればいいだろう。 Keyboardをペアリング…

LoRaモジュール評価ボードテスト(2)

IoT

GPS追加 GPSセンサーを追加し移動しながらどこまで届くか試す。 使ったGPSセンサーはこちら akizukidenshi.com 受信したらGoogle spreadsheetにhttp postで送信する。 Google spreadsheetへpostするのは探せば色々あるがairpocketさんのが参考になるだろう。…

Gesture: System gesture gate timed out.

DragGestureを使っていてDragせずに長い間押しているとtimed outが表示される。 何も影響はない様だが煩わしい。 DragGestureはボタンを押した時と離した時のイベントを取りたいので使っていて、Dragするる必要はない。 1 pixel でも動かせば出ない様だが、…

LoRaモジュール評価ボードテスト(1)

IoT

秋月電子からLoRaモジュール評価ボードを購入した。 akizukidenshi.com シリアルで通信するのだが、ボーレートは9600がデフォルトというのは分かっているが、他の条件が分からない。 こちらにあるコンフィグモード(mode 3)の条件baudrate=9600, parity=8…

Xcodeでビルドが進まなくなった

Xcodeでコンパイルしているとある時点で進まなくなってしまった。 ネットで探して試してみるも改善せず。 思い出してみるとXcode cloudのボタンが出てて、押して使ってみるかと思ったけけど、アプリ名などまだ迷ってて登録してないので、後にしようと思って…

M5でmruby/c (5)

クラスは作れたんだけどメソッド呼び出しがうまくいかない。 https://github.com/mrubyc/mrubyc/blob/master/src/class.c#L131-L155 メソッドの定義はこちらで処理されている。 void mrbc_define_method(struct VM *vm, mrbc_class *cls, const char *name, …

3軸トゥールビヨンの置き時計【3Dプリント用STLデータ】購入した(9)

17:38まで進んだ。 本体ケースネジのメクラが直ぐ外れるので完成したら接着しよう。 文字盤の目盛りが一つ無くなってたので後で印刷する。 文字盤が動くところまでできた。 youtu.be

M5でmruby/c (4)

いつもmrubyとかmruby/c動いたで終わってしまうのでもうちょっと突っ込んでみる。 Peripheralをmrubyで動かしてこそmrubyを使った感があると思う。 M5StackのLCD用に mruby-lcd-m5stack がある。 github.com mrubyだと build_config.rb で組込む様だがPlatfo…

Combine (3)

次はこちら developer.apple.com Combine framework Combine frameworkはEventを宣言的なアプローチ(a declarative approach)で提供できる。 Delegateを使った複数のCallbackやHandlerを使用したClosure処理よりも、イベントを一つの処理chainとして作ること…

Combine (2)

ここを読んでいる。 developer.apple.com Publisher Publisherはprotocolである。 upstream publisherから値を受け取る。 それを発行する Publisherはchainすることができて、間に入ったPublisherはデータを加工したりするのに使える。 最終のPublisherからS…

Combine (1)

SwiftUI で Timer を使用した時に Publisher というのがあって、TimerはPublisherという機能と関係があるんだ程度の認識だった。 なんとなく使えてるからいいかなとは思っていたが、理解できてないのはなんとなく気持ち悪い。 developer.apple.com やっぱり…

M5でmruby/c (3)

今までやったのを整理してQiitaにまとめた。 libディレクトリーに入れるやり方をしていたが、lib_depsで直接githubから読み込む様に変更している。 不要なファイルを除外するやり方が手作業なのが残念だ。 qiita.com github.com

Background処理ではDispatchQueue.mainに気をつけろ

iOSアプリでバックグラウンドに移った時に区切りのいいところまで実行させたい時にバッググラウントでの処理を要求する必要がある。 こんな感じ private var taskIdentifier: UIBackgroundTaskIdentifier! func becomeBackground() { taskIdentifier = UIApp…

倒立振子に挑戦 (3)

IoT

倒立振子はToioを走らせてやろうとしていたが、通信で50〜110msくらいかかっている。 平均して10Hz位でしか指令を出せない事が分かった。 PID係数を調整してみるも倒立を保てそうにない。 手に持って竿燈の様にしても上手く保てないので、そもそも機構が悪い…

同時並行処理(Concurrency) 難しい

ThreadとかDispatchQueueとかは経験あるけど非同期関数やらタスクは馴染みがない。 swift-programming-language-jp.gitbook.io Actor Actorはタスク間で情報を共有したいときに安全に情報を共有できる。 Actorの変更は1つのTaskからのみのため。 Sendable 型…

倒立振子に挑戦 (2)

IoT

制御はPIDを使う。 普段組み込まれたPIDは作った事はあるが、プログラムした事はない。 こちらを参考にお手軽版でクラスを起こした。 controlabo.com (追記: ちょっと修正) class Pid { private: // aim float r; // input float kp; float ki; float kd; fl…

倒立振子に挑戦 (1)

IoT

前回書いた様に倒立振子に挑戦してみる。 まず振子の姿勢を知るためにIMUを使用するので、M5AtomS3を制御に使用する。 姿勢を知るにはroll、pitch、yawを計算すれば良い。 M5AtomライブラリーではM5. MPU6886.getAhrsData()で得られるが、M5AtomS3ライブラリ…

M5StackToio

IoT

Atom Mate for Toio で倒立振子を作ろうとしている。 倒立振子はLego Mindstormsを使った講座を受けた事はあるが、教材の指示に従っていっただけで、仕組みなど全く理解していない。 のでちゃんと動作するのはずっと先の事だろう。 Atom Mate for ToioはUIFl…