So-net無料ブログ作成
検索選択
前の10件 | -

Adafruit FT232H を使って python スクリプトで MCP27017 を使う

1. ここに書いた要領で anaconda に 32bit python2.7 を入れる
2. 販売元の解説通りドライバと Adafruit Python GPIO Library をインストール
3. ここにある接続で MCP23013 にLED、抵抗、電源等を接続
4. 販売元のi2cの解説を参考にしつつ、以下のように MCP23017 とつなぐ
- FT232H の D1 と D2 を接続し、 MCP23017 の SDA に接続
- さらに SDA に 4.7k ohm をつけて 5V につなぐ
- D0 を MCP23017 の SCL に接続
- 同じように D0 に 4.7k ohm をつけて 5V につなぐ
5. 次の python スクリプトで LED をつけてみる



Adafruit FT232H を anaconda で使う準備

Adafruit FT232H を見てやってみても import ftdi1 でエラーが出てしまった。
32bit 版の python 2.7 が必要だった(普通にインストールすると 64bit 版の python3.0 になっている)。

以下のコマンドで 32bit 版の 2.7 環境を作成


ついでに 64bit 版の 2.7 も作っておく



次回からは anaconda プロンプトを起動してから

で 32 bit の python 2.7 に切り替えられる

戻す時は



mac でシリアル接続

Windows では teraterm でシリアル接続をしていますが、
Mac ではどうするのか。調べると screen というターミナルの
アプリでやるみたい。

1. FTDI なんちゃらをUSBで接続
2. ls /dev/tty.usb* でデバイス列挙
私の場合は /dev/tty.usbserial-AL01O27E が見つかった
3. コマンドプロンプトで screen を起動
screen /dev/tty.usbserial-AL01O27E 115200

ここを参考にしました。

GR-KURUMIによる一緒に歌うチューニングメーター

16bitマイコンボードのGR-KURUMIで、自分の吹いた音を midi over ble で鳴らす電子工作です。自分の音ピッチがズレていても、midiの音は安定しているので、それに合わせて耳でチューニングするという物です。midiなので平均律ですが、そこは許して。

動画



回路図

ソースコード

FFTの練習 [C++]

FFT についてわかりやすいサイトA DFT and FFT TUTORIAL


FFT のバタフライダイアグラムのコードをみても、いまいち何をやって
いるのかわからない。なので、自分で書いてみました。
自分のコードとほかの人のコードはだいたい同じになったので、ここまで
やってやっと人のが読めそうな気がしてきました。手を動かすのは大事。

前述のサイトのバタフライダイアグラム をみながらコードにしてみました。
演算の中身はないです。画面に "回転因子はこれ" で "xとyをバタフライ"
というメッセージを出すだけ。

N=8 でのバタフライ演算(中身なし)のコード


output
0
twiddle(0, 2)
butterfly(0, 1)
2
twiddle(0, 2)
butterfly(2, 3)
4
twiddle(0, 2)
butterfly(4, 5)
6
twiddle(0, 2)
butterfly(6, 7)
0
twiddle(0, 4)
butterfly(0, 2)
twiddle(1, 4)
butterfly(1, 3)
4
twiddle(0, 4)
butterfly(4, 6)
twiddle(1, 4)
butterfly(5, 7)
0
twiddle(0, 8)
butterfly(0, 4)
twiddle(1, 8)
butterfly(1, 5)
twiddle(2, 8)
butterfly(2, 6)
twiddle(3, 8)
butterfly(3, 7)


VisualStudio2015 で glew-1.13.0 をビルド [C++]

1. glew のサイトからソースコード( glew-1.13.0.zip )をダウンロード
2. build\vc12\glew.sln を VisualStudio Community 2015 で開く
3. VC12 のソリューションなので変換
4. "VC++ コンパイラとライブラリをアップグレードします"ダイアログでOK
5. ビルド->バッチビルドを開いてすべてチェック
6. ビルド

であっさり完了。

bin, include, lib を置きたい場所にコピーすればOK

Hello wxWidgets

wxWidgets を VS2015 でビルドしましたが、ビルドできたか確認
するため、かつ1からお勉強するために、サンプルをビルドしました。

大量に Sample があって素晴らしいですが、 minimal という最小コード
っぽいのが入っていたのでこれを使いました。

1. VS2015 で minimal_vc9.vcxproj を開く
2. ビルド
3. 実行
4. ウインドウが出た!

hellowxwidgets.png

デフォルトでは構成が "Debug" になっていて、ビルドの設定は以下のように
なっていました。

Debug 構成

インクルードディレクトリ
.\..\..\lib\vc_lib\mswud;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)

プリプロセッサ
WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;
_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;_WINDOWS;NOPCH;
%(PreprocessorDefinitions)


コード生成
マルチスレッドデバッグ DLL(/MDd)

ライブラリディレクトリ
.\..\..\lib\vc_lib;%(AdditionalLibraryDirectories)

追加の依存ファイル
wxmsw31ud_core.lib;wxbase31ud.lib;wxtiffd.lib;wxjpegd.lib;wxpngd.lib;
wxzlibd.lib;wxregexud.lib;wxexpatd.lib;kernel32.lib;user32.lib;
gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib;
comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;
version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)


Release 構成

インクルードディレクトリ
.\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)

プリプロセッサ
WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;
_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;_WINDOWS;NOPCH;
%(PreprocessorDefinitions)


コード生成
マルチスレッド DLL(/MD)

ライブラリディレクトリ
Debug 構成と同じ

追加の依存ファイル
wxmsw31u_core.lib;wxbase31u.lib;wxtiff.lib;wxjpeg.lib;wxpng.lib;
wxzlib.lib;wxregexu.lib;wxexpat.lib;kernel32.lib;user32.lib;
gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib;
comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;
version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)


DLL Debug 構成

インクルードディレクトリ
.\..\..\lib\vc_dll\mswud;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)

プリプロセッサ
WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;
_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH;
%(PreprocessorDefinitions)


コード生成
マルチスレッドデバッグ DLL (/MDd)

ライブラリディレクトリ
.\..\..\lib\vc_dll;%(AdditionalLibraryDirectories)

追加の依存ファイル
wxmsw31ud_core.lib;wxbase31ud.lib;wxtiffd.lib;wxjpegd.lib;wxpngd.lib;
wxzlibd.lib;wxregexud.lib;wxexpatd.lib;kernel32.lib;user32.lib;
gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib;
comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;
version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)


DLL Release 構成

インクルードディレクトリ
.\..\..\lib\vc_dll\mswu;.\..\..\include;.;.\..\..\samples;%(AdditionalIncludeDirectories)

プリプロセッサ
WIN32;_CRT_SECURE_NO_DEPRECATE=1;_CRT_NON_CONFORMING_SWPRINTFS=1;
_SCL_SECURE_NO_WARNINGS=1;__WXMSW__;NDEBUG;_UNICODE;WXUSINGDLL;_WINDOWS;NOPCH;
%(PreprocessorDefinitions)


コード生成
マルチスレッドDLL(/MD)

ライブラリディレクトリ
.\..\..\lib\vc_dll;%(AdditionalLibraryDirectories)

追加の依存ファイル
wxmsw31u_core.lib;wxbase31u.lib;wxtiff.lib;wxjpeg.lib;wxpng.lib;
wxzlib.lib;wxregexu.lib;wxexpat.lib;kernel32.lib;user32.lib;
gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib;
comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;
version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)


その他

DLL Debug でビルドした場合は、実行前に samples\minimal\vc_mswuddll に 上記 lib\vc_dll
ディレクトリから wxbase310ud_vc_custom.dll と wxmsw310ud_core_vc_custom.dl
を探してきてコピーする必要がありました。

インクルードディレクトリの samples は外してもビルド通りました。
ほかのサンプルでは使っているかもしれませんが、 miniumal では不要です。

追加の依存ファイルが大量なのと、プリプロセッサの設定が必要なのは
ハマりどころかもしれません。普通はインクルードとライブラリくらいしか設定しないので。

まとめ

自分でプロジェクトを作るときは次のように設定すればよい。

dll を使うとき

インクルード
- lib\vc_dll\mswud
- include
プリプロセッサ
__WXMSW__;_UNICODE;WXUSINGDLL
ライブラリパス
- lib\vc_dll
追加の依存ファイル
- デバッグ
wxmsw31ud_core.lib;wxbase31ud.lib;wxtiffd.lib;wxjpegd.lib;wxpngd.lib;
wxzlibd.lib;wxregexud.lib;wxexpatd.lib;kernel32.lib;user32.lib;
gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib;
comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;
version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)

- リリース
wxmsw31u_core.lib;wxbase31u.lib;wxtiff.lib;wxjpeg.lib;wxpng.lib;
wxzlib.lib;wxregexu.lib;wxexpat.lib;kernel32.lib;user32.lib;
gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;shlwapi.lib;
comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;
version.lib;wsock32.lib;wininet.lib;%(AdditionalDependencies)


static link するとき

インクルード
- lib\vc_lib\mswud
- include
プリプロセッサ
__WXMSW__;_UNICODE;
ライブラリパス
- lib\vc_lib
追加の依存ファイル
- 前述 dll を使うときと同じ


wxWidget を VS2015 でビルド [C++]

wxWidget を使ってみようと思いダウンロードすると VS2015 用の
プレビルドがなかったのでビルドしてみました。

まだ使っていないので、あっているかどうかわからないけど、ビルドは
通ったのでとりあえずメモ。 nmake のオプションは build\msw\config.vc
に説明が書いてあるのを参考にしました。

1. ソースコードダウンロード
git clone https://github.com/wxWidgets/wxWidgets.git

2. ビルドの設定が反映されるヘッダー?を作成
include/wx/msw/setup0.h を include/wx/msw/setup.h にリネーム

3. x86 版をビルド
VS2015 x86 Native Tools コマンドプロンプトで以下を実行



4. x64 版をビルド
VS2015 x64 Native Tools コマンドプロンプトで以下を実行


boost::property_tree の使い方メモ [C++]

Sony Camera Remote API の getEvent で取れる json のパースに
boost::property_tree を使うときに、いまいちよくわかってなかったので
メモ。

この api で返ってくる json は {{result:[{...},"null","",[...]}}
みたいなので、null になったり 空文字になったり状態によって変化する曲者。
なのでちゃんと処理しないと例外が出る。例外はデバッグのときに紛らわしい
ので、なるべく出さないようにしたいので、事前に判定したい。

ノードがあるかわからないときは optional で取得すれば例外を出さずに
判定できる。

ただの文字列("null" or "") か何か値が入っている ("{x:y}" or "[...]") かどうか
は child.size() をみればOK(たぶん)

code


output
e.first.data()=
e.second.data()=
child.get_optional("")=
child.size()=2
----
e.first.data()=
e.second.data()=null
child.get_optional("")= null
child.size()=0
----
e.first.data()=
e.second.data()=
child.get_optional("")=
child.size()=0
----
e.first.data()=
e.second.data()=
child.get_optional("")=
child.size()=1
----


const array メンバの初期化 [C++]

メンバ関数のポインタを、配列でメンバ変数に持ちたい。
その配列は固定長なので const にしておきたい。
たまにしか使わないので、毎回つまづくからメモ。




前の10件 | -