ひとしれずひっそり

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

2023-01-01から1年間の記事一覧

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…

M5でmruby/c (2)

前回できたlibmrubyc.aをlibディレクトリーに置いてみるるが全く無視されている様だ。 それではとダウンロードしたmrubycディレクトリーを丸ごとlibディレクトリーに置いてみる。 エラーは出ているがmrubycのMakefileを読み込んでうまい具合にやろうとしてい…

onChange に気をつけろ(onChangeだけじゃないけどな)

SwiftUIで onChange を使ったらハングアップしてしばらくしてからクラッシュする現象が出た。 なんかViewが再帰的に呼び出されている様でクラッシュに至る様だ。 ストップボタンもしばらく受け付けてくれない様な状況で、クラッシュするのを待つだけしか手が…

M5でmruby/c (1)

M5やmicrobitでmrubyやmruby/cが動かせるが platformio で構築できないかトライしてみる。 通常Arduinoフレームワークを選択するが、Espressif IoT Development Framework を使うとなんかできないか試してみる。 まずはmruby/cから Githubからダウンロード g…

M5Unifiedで機種(ボード)判定

IoT

M5Unifiedを使用すると同じバイナリーで様々なM5の機種に対応ができるとTwitterとかで見たことがある。 内部で判定している場所があるはずなので探ってみる。 M5Unified.hpp内で _board が定義されていてここにデバイスに合わせて設定されるっぽい。 M5Unifi…

M5AtomS3 の IR (2)

IoT

前回IRの受信でソニーテレビの信号を確認したので、送信してみる。 IRGCSendDemoで簡単にできることが分かったので、 github.com M5AtomS3ではG4がIRに繋がっていて、例の通りで動作できる。 必要な箇所のみにしたらこんなに簡単になった。 NECの場合をコメ…

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

10:50まで進んだ。 電池を繋いで動作確認する箇所があったが、動かない。 前回動かない気がしたが、ゼンマイ部が機能すると動くんじゃないかという期待はしていたが、全然ダメだった。 バラして確認して行ったらピンの長さや押し込みが足りずギヤ同士が干渉…

Mermaid

Markdownでフローチャートやステート図、シーケンス図など記述できるmermaid書式についていつも検索してしまうので、リンクを記載しておく。 mermaid.js.org

M5AtomS3 の IR (1)

IoT

M5AtomS3にIRが付いている。 M5StickCにも付いていたが、試したことがなかった。 この記事を頼りに進める。 lang-ship.com 送信するにもコードがわからないことには始まらない。 手元にセンサーキットがあったのでそれを利用する。 osoyoo.com 使ったことが…