工作と競馬2

電子工作、プログラミング、木工といった工作の記録記事、競馬に関する考察記事を掲載するブログ

技術メモ#C/C++

M5UnitV2用の物体検出モデルを作成する

概要 M5UnitV2用の物体検出モデルをEdge Impulseにて作成し動作させた。 概要 背景と目的 詳細 0. 実施環境 1. クロスビルド環境の用意 2. アプリケーションソースコードの準備 2.1 アプリケーションのひな型ソースコード 2.2 OpenCV関連のビルド 3. Edge Im…

C言語JSONライブラリparsonの使い方 自分用覚書

背景と目的 Arduinoで、JSONを扱いたかったため、parsonというC言語ライブラリを使用した。使い方を自分用にメモする。 ランキング参加中DIY 使いそうなものを列挙 空の状態"{}"に、データを追加していき、シリアライズするまで、おおむね使いそうなものを列…

windowsでlibusbを使う

概要 Windows PC上で、libusbを使ったC言語プログラムをビルドして、動かした。 ランキング参加中DIY 背景と目的 Windows PC上で、libusbを使いたいので、方法をメモる。 詳細 参考 https://www.javadrive.jp/cstart/install/index6.html https://sites.goog…

ArduinoでRAMの残りを求める関数を高速化する

Arudinoで、RAMの残りを求める関数として、以下のサイトにavailableMemoryというものが紹介されている。 https://playground.arduino.cc/Code/AvailableMemory/ これは、mallocの戻り値がNULLでなくなる=確保できるまで1バイトずつサイズを小さくして試すと…

ESP32用micropythonで、numpy, scipyライクなパッケージmicropython-ulabを組み込み、FFTしてみる【ulab v0.36.0版】

概要 ESP32用micropythonで、micropython-ulabを組み込んだファームウェアを作成し、無事FFTを実行することができた。また、動作速度も、前回の自前実装FFTより数倍高速化できた。 背景と目的 前回、FFTを実行するためC実装の自作モジュールを組み込んだファ…

Makefileを自分で書いてmakeする場合のメモ

変数 定義、代入 変数名 = 〇〇〇 参照 $(変数名) 環境変数を使う Makefile内のマクロと同じ書き方でよい。ただし、Makefile内の同名変数が優先されるらしい。 表示 $(info $(変数名)) sudoつける/つけないの違いでハマらないように注意 sudoをつけると参照…

ESP32向けmicropythonで、FFTをする自作モジュールを作る

概要 ESP32用のMicroPythonで、FFTをする自作モジュールを作る。 背景と目的 前回、ESP32用のMicroPythonで、C実装の自作モジュールを作る環境が整った。今回は、この環境を使ってFFTをする自作モジュールを作る。なお、PythonでそのままFFTの計算をコーディ…

ESP32向けのmicropythonで、Cで実装した自作モジュールをESP32上で動かす【修正版】

概要 ESP32向けのmicropythonで、Cで実装した自作モジュールを作成した。 背景と目的 かつて、micropythonをESP32で動かして遊んでみたのだが、それ以来ほとんど触っていなかった。しかし、最近とある事情でESP32向けのmicropythonで、Cで実装した自作モジュ…

./configureの実行時にエラーが出るとき

まずやるべきこと config.logを見る(configureと同じディレクトリに出力されている) たいていは、何が起きているか理解はできると思われる。 解決方法 ライブラリの参照がうまくいっていない場合 /usr/bin/ld: cannot find -lxxx という感じのエラーがかかれ…

pigpioのCライブラリを使ったC/C++プログラムをPythonから利用する

概要 pigpioのCライブラリを使ったC/C++プログラムをPythonから利用する方法をまとめた。 背景と目的 Raspberry Pi用のGPIO制御ライブラリであるpigpioは、C言語用とPython用のライブラリが用意されているが、都合によりC言語用のpigpioライブラリを使って作…

nanosleepの精度を上げる努力をしてみる

概要 C/C++のsleep系の関数のひとつnanosleepで、時間精度を上げる方法を検討し、改善できた。(だいたい10マイクロ秒以下) 背景と目的 Raspberry Piで、10マイクロ秒オーダーのsleepをしたかったのだが、C/C++のsleep系の関数のひとつnanosleepを使用したと…

タイムアウトが設定できないブロッキング処理に、タイムアウトを追加

概要 C/C++で、タイムアウトが設定できないブロッキング処理に、タイムアウトを追加した。 背景と目的 C/C++のあるライブラリで、タイムアウトが設定できないブロッキング処理があり、処理をキャンセルできずに困ったので、後付けでタイムアウトを実装する方…