投稿

SSD1306 トラブルシューティング

イメージ
OLEDの使用 中華パーツで、送料込みで300円以下の入手可能なOLEDは便利な表示装置ですが、思い込みから間違えた使い方をする場合があります。 その代表例が、SH1106をSSD1306と間違えるパターンです。 0.96インチ・128x64から、そのまま1.3インチの似たような見た目のパーツに取り換えた場合、次のような表示になります。 一部の表示エリアは表示されているようですが、大部分がノイズです。 中華製ということもあって、壊れていると誤解しました。 3つ購入して3つ共なのでがっかりしたのですが、ちょっと調べると同じ症状はすぐに見つかりました。 http://luma-oled.readthedocs.io/en/latest/troubleshooting.html Using the SSD1306 driver on a display that has a SH1106 controller can result in the display showing a small section of the expected output with the rest of the display consisting of semi-random pixels (uninitialized memory). これ、SSD1306じゃないんですね。 まったく気にしていませんでした。 それをAdafruitのssd1306サンプルで動かしたので、不完全な動作をしたわけです。 早速、U8g2をインストール後、sh1106のコメントアウトをはずしてテストすると、見事に動作しました。 安心。 ちなみに、今回は二足歩行ロボットをモノアイ化するためで、結局使ったのはSSD1306の方でした。 ちょっと見た目のバランスが悪いので、もう少しデザインは詰めるとして、モノアイ自体は使えそうです。 雑魚っぽさと言う意味では狙った通りです。

Maple Mini PWM出力ピン

イメージ
ネットに出回っているMaple Mini(茶色いボード)のピンアサイン画像を信じて配線を済ませた後、スケッチを書いても一向にPWM出力されないということがありました。 あるいはリマップすれば使えるのかもしれませんが、これを教訓に面倒な手続きなしにArduino環境で使えるPWMのピン配列を図にしてみました。 PWM使用可能ピン ポイント1 D24はUSBとつながっているので、制約がある。 ポイント2 D33はオンボードLEDにつながっている。 ポイント3 D32はオンボードボタンにつながっていて、どうしても足りないときは配線すれば使える。 回路図ではGNDに10kΩ、VCCに1kΩ抵抗が入っているので、PWMとして使用中にボタンを押してもショートが原因で壊れる心配は少なそうです。

Maple Mini 3.3Vで2SK2232を駆動できない件

イメージ
Arduino Nanoは5V動作なので、手元に大量にあるMOS-FETの2SK2232が直接駆動できました。 3.3Vでは駆動できない2SK2232 同じ感覚でMaple Miniから2SK2232をドライブしようとしても、全然動きませんでした。 一部のネット情報では3.3Vでも動作するような書き込みがあったのですが、Aliexpressの格安ルートで購入した製品は、東芝製とは違うのかもしれません。 結論として、3.3Vで2SK2232は使えません。 そんな理由で、扱える出力はずっと小さくなりますが、2SK4017(Q)を使うようになりました。 3.3Vで駆動できる2SK4017 値段も秋月で@30円ぐらいなので、安全領域の12Vで1A程度までは使いやすいです。 (より低電圧なら5Aまで)  恐らく同じ経験をお持ちの方がいると思いますが、 鉄道模型のエレクトロニクス工作 (ホビーテクニック (49)) この本を読まれて実際にトランジスタコントローラーを作ったことのある場合、 2SD560というトランジスタがスタートになります。 鉄道模型で好まれた2SD560 手元にも30個ほど余っていますが、このまま使わないかもしれません。 時代に合わせてトランジスタも変わる MOS-FET化で2SK2232に、OPアンプによるPWM化で発熱がなくなり、コンピュータ化でPWMの特性も簡単に制御まで可能になると歴史が続いた後、3.3V化で、またトランジスタ選びの岐路に立っている感じがします。

Maple Mini 互換機

イメージ
2017年、ja.aliexpress.com で Maple Mini 互換機が400円弱の頃、Arduino-idk環境でstm32を使って忘れたくないことをメモする目的で、ブログを開設します。

Maple Mini ウォッチドッグタイマー

Maple-mini でウォッチドッグタイマーを使う際のメモ #include<libmaple/iwdg.h> void  iwdg_init ( iwdg_prescaler  prescaler, uint16 reload) void  iwdg_feed (void) Arduino環境でavrとは異なるので、調べるのに手間取りました。 日本語の資料が少なかったので、メモ。 ウオッチドッグタイマーは勿論存在して、動きました。 iwdt 独立型ウォッチタイマーとなっていますが、私のようなホビー用途では、単にウォッチドッグタイマーと言えばこれのことです。 基本的にはMaple IDEと同じなので、 http://docs.leaflabs.com/static.leaflabs.com/pub/leaflabs/maple-docs/0.0.12/libmaple/api/iwdg.html 使い方はこれのままです。 以上が本題です。 そしてこれを使うことになった理由ですが、MAX7219とSerial2系統を同時に使っていると、コンフリクトしてメインループが止まってしまう事があったためです。 (でもタイマー割り込みの呼び出しルーチンは生きていました。) 根本的な解決にはならないのですが、リセットで急場はしのげるのでウォッチドッグタイマーへ逃げることにしました。