//セットアップで全角を一旦表示させることが重要。半角だとなぜかSPIFFSファイル読み込みエラーになってしまうため。//インクリメントよりデクリメントの方が処理が速いらしい。//全角スペースを半角スペースにする。//半角スペース×2を1つにする。Chipライブラリです。私の自作ライブラリで、UTF-8コードの文字列をShift_JISコードに変換するライブラリです。これには予めアップロードしてある変換テーブルファイルが必要です。●18行目:これも自作ライブラリです。1ピクセルずつスクロールする関数を修正しました。●19行目:フリーの日本語漢字、東雲(しののめ)フォントを使うためのライブラリです。●21-24行:ライブラリのクラス名を指定します。GPIOピン設定です。●32-33行:ここのxxxxのところをご自分のルーター、およびアクセスポイントのSSIDとパスワードに書き換えます。●35-37行:ここでSPIFFSアップロードしたファイル名を指定します。スラッシュは必要です。●40行:セキュアーなSSL通信を行うためのポートは443ということです。普通のhttp通信ならば80ですね。●41行:ここでTwitter検索する文字列を入力します。日本語でも英語でもOKです。スケッチの文字コードがUTF-8の場合です。スケッチはUTF-8になっていると思います。日本語文字列の場合は、後のStrPerEncord関数でパーセントエンコードします。Shift_JISコード文字列の最大バイト数を指定しています。ツイッター投稿は最大140文字ですから、全て日本語だとするとShift_JISコードに変換すれば、倍の280バイト必要です。余裕をみて300としました。これ以上にするとなぜか動作が不安定になるのでお勧めできませんのでご注意。ディスプレイで一度に表示できる最大列ですので8です。●68行:自作のOLED_SSD1351ライブラリで、SSD1351を初期化する関数です。GPIOピンを指定します。●74行:初期画面で表示する文字列、UTF-8コード全角8文字をShift_JISコードに変換する自作ライブラリです。●75行:Shift_JISコード文字列を16×16ドットのフリーの日本語漢字、東雲フォントに変換する自作ライブラリです。文字列を一気にフォントのバイト列に変換します。これに関してはこちらのページも参照してみてください。SSD1351のディスプレイ1行分を一括表示するための関数です。ピクセル表示始め位置は、水平位置(column)がゼロ、つまり左端で、垂直位置(row)もゼロ、つまり上端としています。ディスプレイの一番上の列に文字列が表示されます。色はGreenだけが最大値が63となります。これはSSD1351のデータシートにそのように指定してあります。今回のライブラリでは65k色指定となります。●79-85行:ここでOLEDに表示させるバイト列を初期化でゼロ、つまり黒色にしておかないとゴチャゴチャに表示されてしまいますので必ず必要です。●88行:今回作った202行~にある関数です。setup内で初回にTwitterへGETリクエストして、文字列を取得します。ついでにUTF-8文字列をShift_JISコードに変換しています。これの詳細は後述します。●91-98行:取得したShift_JIS文字列をシリアルモニターに表示させ、東雲フォントに変換して、各ツイートの全角8文字分で8列を青色で一気に表示します。最速で、動画を見ていただけると分かると思いますが、もっと早くしたいくらいです。速くする方法が分かる方は教えていただきたいです。●125-143行:ここで、1行スクロールを終えたら、次の行の東雲フォントを抽出します。フォントデータを移して、そのデータがスクロールで1ピクセルずつ書き換えられています。●145行:これが今回新たに登場したライブラリ関数です。この関数をループ内で一回実行すると半角8×16ドットのフォントデータが1ピクセル左に移動します。これが8回繰り返されると、半角1文字分左へスクロールします。データが書き換えられています。●147-160行:1画面すべてスクロールし終えると、文字の色を変えていきます。●161行:ここでディスプレイ1列分のデータをSSD1351に一括出力します。●166-200行:3分毎にTwitterへGETリクエストを送ってツイートを取得し、ディスプレイに表示させてます。ここで十分注意していただきたいのは、リクエストする間隔が短すぎると相手サーバーに負担がかかり、他の方々に迷惑をかけてしまう可能性がありますので気を付けてください。このプログラムの実行に関してはみなさんの自己責任ですのでご了承ください。●203-330行:TwitterへGETリクエストして、検索対象のツイートを取得する自作関数です。いう文字列に205-207行の文字列をブラウザのURL入力欄に入力すると、ツイッター検索のツイートを見ることが出来ます。検索文字列はUTF-8コードでパーセントエンコードする必要があります。その関数は後述します。211-240行まではサンプルスケッチそのまま使わせていただきました。256-261行が注目です。ツイッターのページのソースコードを見ていただくと分かるのですが、途中に物凄いバイト数の1行の文字列があると思います。改行コードが出るまでに多量のバイト数がある1行です。これが厄介で、HTMLタグをマイコンで解析するのに壁になるところです。そこで、私は70バイトずつ読み込んでBegin_tagを見つけるという方法にしてみました。その中で改行コード’\n’が見つかればループを抜けるという方法です。この原因が全く分かりません。したら、ここで電圧が落ちてしまうときがあるのかと思ったのですが、しばらく放っておくと、その次の行からまたスタートするんですね。この原因が分かりません。解る方がいたらぜひ教えてください!!263行から実際の欲しいツイートを抽出していきます。いまのところこの方法で抽出できています。275-277行でAsciiコードの不要な制御コードなどを削除してます。278-285行で文字化けするものを変換したりしてます。293-297行で8ツイートまでを文字列変換します。後はツイッターホストからレスポンスで返ってきたデータをFinal_tagまで余さず受け取ることが大事です。ここで1バイトでも受け忘れると何かと不具合が起きるかもしれません。●332-355行:UTF-8日本語文字列をパーセントエンコードする関数です。いう文字をいれるだけです。半角文字はそのまま出力します。4.コンパイル書き込み実行するでは、このスケッチをコンパイル書き込み実行してみてください。うまくツイートをゲットできるとシリアルモニターでは下図の様に表示されます。ここでは検索キーワードをbabymetalにしています。表示されたあとに、次のように日本語表示されると思います。Shift_JISコードをシリアルモニターへ出力すると日本語表示されます。これはWindowsの場合です。このプログラムはまだフリーズすることがあるので、上手く動かない場合はリセットスイッチを押してみてください。いつか原因を掴んで改善していこうと思っていますので、現段階ではご容赦ください。半年前はツイートを趣味レベルで表示できるなんて夢のまた夢でしたが、今回は未完成ながらも何とか達成できました。今後はもっと精度を上げていければなぁと思ってます。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。Privacy-Policy。