ひとしれずひっそり

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

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

microbitでバックグラウンド処理

制御の「バックグラウンドで実行する」を使うことでできる。 自分でループ処理を入れないといけない。 複数使うとハングアップする様なので、1つにした方が良さそう。

NavigationLink で遷移してから戻る場合

developer.apple.com presentationMode.wrappedValue.dismiss() で戻れる struct SomeView: View { @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode> var body: some View { Button { presentationMode.wrappedValue.dismiss() } label: { T</presentationmode>…

RubyMotion

久しぶりにRubyMotionの環境構築 既存のプロジェクトでbundleしたら TypeError: superclass mismatch for class StringIO がでる。 こちらを参照し、gem install後、StringIOを全て削除。 stackoverflow.com provisioningファイルがないと云われるのでダウン…

Label

developer.apple.com Image使わなくてもアイコン表示できる。 Label("Lightning", systemImage: "bolt.fill") labelStyleでアイコン指定してても非表示にできる。 Label("Lightning", systemImage: "bolt.fill") .labelStyle(.titleOnly) 自分でStyleを作る…

ViewでOptionalの扱い

ずっとOptionalの扱いで悩んでいて、モデルにラッパーとなるオプショナルがない変数を追加して対処していた。 Viewのメンバ変数で一旦受けて処理すればいいのか。 今まで気づかないとかアホすぎた。 zenn.dev

editMode

developer.apple.com EnvironmentValuesとして扱っている。 ドキュメントより @Environment(\.editMode) private var editMode @State private var name = "Maria Ruiz" var body: some View { Form { if editMode?.wrappedValue.isEditing == true { TextFi…

NavigationLink

NavigationViewのリンク NavigationViewはdeprecatedになって NavigationStack か NavigationSplitView を使うという事らしい。(iOS 16から) developer.apple.com 最初のブロックはリンク先となるViewを指定する。 labelのブロックではcellの中身を指定する…

SwiftUIでモーダル表示

モダンな表示をする場合 .sheet()を使用 capibara1969.com フル画面で表示する場合 . fullScreenCover()を使用 capibara1969.com

M5StickCでM5UnifiedでIMU(7)

IoT

データを取ってみて、微分で同じ符号が8回続いたら山と谷の切り替えを判断することにした。 これで実際の歩数に近い感じになったのでこれで完成としよう。 後は雪が降って除雪のログ取りをするだけ。 図は微分と2階微分のデータで、正の数を緑で、負の数を赤…

SwiftUIでFlipアニメーション

betterprogramming.pub これで回転させられる。 SomeView.rotation3DEffect(Angle(degrees: 10), axis: (x: 0, y: 1, z: 0))

7セグフォント

DSEG7 フォント、これいい qiita.com ダウンロードしたttfファイルをXcodeにドラッグしinfo.plistにフォント名を登録で使えるようになる。 info.plistへの記述 Text("00:00") .font(.custom("DSEG7Classic-BoldItalic", size: 200))

arduplot試してみる(2)

IoT

plotcfg.json にグラフの設定を記述していると良いらしい。 { "label": [ "acc", "diff", "diff2" ], "title": "Accel", "width": 100 } M5StickCからはデータをカンマで区切って送る。 Serial.print(velocity[0]); Serial.print(","); Serial.print(diff[0]…

M1 Mac で PlatformIO のシリアルモニターが文字化けする

IoT

最初M1 Mac で PlatformIO のシリアルモニターが文字化けしていた。 ここでドライバーダウンロード時にM1 Sillicon用があってリンク先でダウンロードしてインストールしていた。 docs.m5stack.com この状態で文字化けしていた。 正確には文字化けとはちがっ…

arduplot試してみる(1)

歩数カウントが怪しいので信号のグラフ表示をしてみたい。 arduplotというのがある様なので試してみよう。 github.com インストール pyenvでローカルバージョンを最新に固定してインストールしてみる PlatformIOのターミナル立ち上げないとダメだった。(>ア…

M5StickCでM5UnifiedでIMU(6)

IoT

Ambientに送信して完成。 10分動いてなかったらPower offする機能も追加。 static void transfer_task(void*) { Ambient ambient; unsigned long sent_at = millis(); WiFiMulti wifiMulti; WiFiClient client; int power_off_count = 0; int power_off_min …

M5StickCでM5UnifiedでIMU(5)

IoT

前回ので歩くと脈動する感じだったので2階微分で判断すれば良さそう。 正側の閾値を超えたらでいい気がするが、試すとイマイチでどこか間違ってるかもしれない。 負側でも閾値を超えたらとして、更に信号がバウンドしている様なので250ms以内のトリガーは無…

M5StickCでM5UnifiedでIMU(4)

IoT

ベクトル長のグラフ表示をしてみる。 static void display() { int bar_height = 20; int h = M5.Lcd.height(); int w = M5.Lcd.width(); int y = h - bar_height; int value = 0; value = map((int)(velocity * 10000), 0, 10000, 0, w); Serial.println(va…

M5StickCでM5UnifiedでIMU(3)

IoT

移動平均を取ってみる static void imu_task(void*) { int tap_size = 9; int b_ptr = 0; float z_buf[tap_size] = {0}; float val[3]; float vel = 0; float sum = 0; while(true) { M5.Imu.getAccel(&val[0], &val[1], &val[2]); val[2] -= 1.0f; vel = sq…

M5StickCでM5UnifiedでIMU(2)

IoT

IMUの値を取得してみる。 _cfg.internal_imu で初期化しているので、検索するとここで初期化されている。 M5Atom Matrixは軸が異なってる様だ。 if (_cfg.internal_imu && In_I2C.isEnabled()) { if (M5.Imu.begin()) { if (M5.getBoard() == m5::board_t::b…

M5StickCでM5UnifiedでIMU(1)

IoT

M5UnifiedでIMUの動作確認。 ```#include <Arduino.h>#include <M5Unified.h> void setup() { auto cfg = M5.config(); cfg.clear_display = true; // default=true. clear the screen when begin. cfg.output_power = false; // default=true. use external port 5V output. cfg.int</m5unified.h></arduino.h>…