re:[37]と[36]の補足
GitHUBのTinyI2CScannerのmain.cppのコード見ました。
fill|= 0b10000000; などとやっていて対策されてますね。
あと、私のOLEDが全く動かなかった問題ですが、I2Cバスのレベル不足が原因だったような気がします。
以下のような記事を書いてるのにすっかり忘れてました。
http://radiopench.blog96.fc2.com/blog-entry-902.html
〃 /blog-entry-911.html
fill|= 0b10000000; などとやっていて対策されてますね。
あと、私のOLEDが全く動かなかった問題ですが、I2Cバスのレベル不足が原因だったような気がします。
以下のような記事を書いてるのにすっかり忘れてました。
http://radiopench.blog96.fc2.com/blog-entry-902.html
〃 /blog-entry-911.html
TinyI2CScanner
ATtiny85用に変更したi2cscannerがGitHUBにありました。
このtinyFontブランチでは塗りつぶしバグが修正されていました。
縦横は元のままです。
ここから始めた方が楽だったな。
このtinyFontブランチでは塗りつぶしバグが修正されていました。
縦横は元のままです。
ここから始めた方が楽だったな。
re;34
i2cscanner3.inoを使って動作確認しました。何も表示されなかった当方のOLEDにちゃんと表示され、テスト側に接続したデバイスのアドレスも正しく検出されていることを確認しました。ありがとうございました。
以前のバージョンでOLEDの画面に表示が出なかった状態の波形をオシロで見ると、I2Cバスのハイレベルが不足しているようでした。そこで、10kΩでプルアップすると動くようになりました。
ソフトウエアI2Cを使う場合は、ライブラリの内部でプルアップを有効にしていること、およびバスの速度が実測で60kHz程度に抑えられていることでマージンが増えているのだと感じました。
以前のバージョンでOLEDの画面に表示が出なかった状態の波形をオシロで見ると、I2Cバスのハイレベルが不足しているようでした。そこで、10kΩでプルアップすると動くようになりました。
ソフトウエアI2Cを使う場合は、ライブラリの内部でプルアップを有効にしていること、およびバスの速度が実測で60kHz程度に抑えられていることでマージンが増えているのだと感じました。
Re:Re:[33]
SoftwareWire を使った i2cscanner3.ino の確認をしました。
動作に問題はありませんでしたので X でラジオペンチさんに「新版出た」と連絡を入れておきました。
(最初に、これを実現したかったのですが、無理だったものが現実になって感激です!)
動作に問題はありませんでしたので X でラジオペンチさんに「新版出た」と連絡を入れておきました。
(最初に、これを実現したかったのですが、無理だったものが現実になって感激です!)
Re:[33]
SoftwareWireを使ってセカンドI2Cを使えるようにしました。
i2cscanner3.ino
です。Arduino版はこれだけで良いのではないかと思います。
i2cscanner3.ino
です。Arduino版はこれだけで良いのではないかと思います。
Re:[27]
思い当たる対策を施してi2cscanner.zipはクローズします。
OLEDの初期化をi2cscanner2と同じにしたのと、OLEDの初期化の前に正常にコマンドを送れるようになるまで待つことです。
i2cscanner2の方はSoftware Wireを使ってセカンドI2Cを使えるようにしてもいいかなと思っています。
OLEDの初期化をi2cscanner2と同じにしたのと、OLEDの初期化の前に正常にコマンドを送れるようになるまで待つことです。
i2cscanner2の方はSoftware Wireを使ってセカンドI2Cを使えるようにしてもいいかなと思っています。
Re: I2Cスキャナの動作確認2
すみません。
i2c.cpp の
#include "arduino.h" は応急処置であって、削除して.cppを.inoに変えた方がArduino流でした。Windowsはファイル名の大文字小文字を区別しないので他のOSと違いが出てしまいます。
SH1106は似て非なるもののようでちょっと変更すれば動くという噂もあります。
i2c.cpp の
#include "arduino.h" は応急処置であって、削除して.cppを.inoに変えた方がArduino流でした。Windowsはファイル名の大文字小文字を区別しないので他のOSと違いが出てしまいます。
SH1106は似て非なるもののようでちょっと変更すれば動くという噂もあります。
I2Cスキャナの動作確認2
再度ファイルをダウンロードしましたが、やはり、Linux 版の Arduino IDE では
i2c.cpp の
#include "arduino.h"
と
delayMicroseconds(5);
でエラーとなりますが、これは当方の環境が悪いので問題ないと思います。
あれ?Google 先生に聞いてみたら
#include "Arduino.h"と頭文字を大文字にしたら治りました。
ところで、色々な OLED を試してみました。
白色や青色、形状の少し異なるものなど部品箱の中の全てを試しましたが正常表示でした。
その後に 0.96 インチの SSD1306 ではなく 1.3 インチの SH1106 をつないだら画面が真っ黒でした。
ご参考まで
i2c.cpp の
#include "arduino.h"
と
delayMicroseconds(5);
でエラーとなりますが、これは当方の環境が悪いので問題ないと思います。
あれ?Google 先生に聞いてみたら
#include "Arduino.h"と頭文字を大文字にしたら治りました。
ところで、色々な OLED を試してみました。
白色や青色、形状の少し異なるものなど部品箱の中の全てを試しましたが正常表示でした。
その後に 0.96 インチの SSD1306 ではなく 1.3 インチの SH1106 をつないだら画面が真っ黒でした。
ご参考まで
Re: I2Cスキャナの動作確認2
ラジオペンチさん、パオさんさん、ありがとうございます。
画面が出ない環境では全くダメで、出る環境ではあまり問題ないということで、少し安心しました。何か初期化に足りないものがあるのでしょう。
何も接続してない場合に全部塗りつぶしになるのはこちらでも確認しています。エラーの検出方法が不十分なようです。自分で作ったものではないのでこれ以上深入りするのはやめます。
動作にクセがあることを分かって使う分にはあまり問題がないと思います。
画面が出ない環境では全くダメで、出る環境ではあまり問題ないということで、少し安心しました。何か初期化に足りないものがあるのでしょう。
何も接続してない場合に全部塗りつぶしになるのはこちらでも確認しています。エラーの検出方法が不十分なようです。自分で作ったものではないのでこれ以上深入りするのはやめます。
動作にクセがあることを分かって使う分にはあまり問題がないと思います。
I2Cスキャナの動作確認2
Windows11 で動作確認しましたが、その前に Linux でコンパイルした物は、電源抜き差しで正常表示になりました。
画面表示の不具合は無いと訂正いたします。
初回の起動時のみ何か不具合があったようで、その後は正常動作しています。
Windows11 + Arduino IDE 2.32 で
i2cscanner.zip
i2cscanner2.ino
どちらも正常動作しています。
スケッチに何も手を加えずに正常動作しています。
Linux 上で確認した
i2cscanner.zip
の内容が異なるようなので再度確認します。
追加情報です。
i2cscanner.zip
はセカンドI2Cが正常に認識していますが、活線状態で SDA を抜くと全てが塗りつぶし状態になります。
SCL だけを抜くか、全てを抜けば問題ないので接続途中だけの一時的な表示不良ですね。
画面表示の不具合は無いと訂正いたします。
初回の起動時のみ何か不具合があったようで、その後は正常動作しています。
Windows11 + Arduino IDE 2.32 で
i2cscanner.zip
i2cscanner2.ino
どちらも正常動作しています。
スケッチに何も手を加えずに正常動作しています。
Linux 上で確認した
i2cscanner.zip
の内容が異なるようなので再度確認します。
追加情報です。
i2cscanner.zip
はセカンドI2Cが正常に認識していますが、活線状態で SDA を抜くと全てが塗りつぶし状態になります。
SCL だけを抜くか、全てを抜けば問題ないので接続途中だけの一時的な表示不良ですね。