« 2024年4月 | トップページ | 2024年10月 »
以前、豊四季Tiny BASICやArduinoで漢字の表示、日本語文字を扱えるようにしていたのですが、
日本語の入力にはホストコンピュータが必要でした。
組込み系単体で「日本語入力をやってみたい」と思い、
とりあえず、ちびちびと調査・実装を行い、
MicroPython版のSKK日本語変換ライブラリを実装してみました。
お試し実装版は今年の6月に公開したのですが、処理速度的に問題ないようです。
メモリーの消費を抑えるため当然、辞書ファイルはフラッシュメモリ上の配置しています。
(本家Pythonの辞書型使えばらくちんなのですが、MicroPythonではメモリーが、メモリーが..
MicroPythonで辞書型のイメージで、メモリー消費を気にせず、
実体はフラッシュメモリ利用のデータ操作が出来るモジュールは思案中)
辞書の検索に本当はハッシュ探索を使いたかったのですが、色々とマンドクサそうなので
実装が簡単な二分探索としました。
まあ、辞書が6万件でも最悪16回の比較処理で済むので良しとしましょう。
これをArduino環境(C・C++)に移植作業を進める予定です。
・Raspberry Pi Pico MicroPython用 SKK日本語変換ライブラリpyskk
https://github.com/Tamakichi/pico_MicroPython_skk
今年も Maker Faire Tokyo 2024 に行ってきました(*´ω`*)
今までは10月開催のパターンでしたが、今回は9月に開催。まだまだ残暑が厳しく、来訪者の大半は半袖・Tシャツですね~
思いもつかない発想の作品や、斜め上いくものが多く楽しい時間を過ごせました。
ベランダから庭に集まっている外猫を覗いていたら、眼鏡が庭に落下..
回収するが当然、....(;_:)
とりあえず、古い眼鏡で代用したが、度数等ちょっと厳しい...
ぐぐって、一番近い眼鏡屋さんを調べると近所に「眼鏡市場」があるでわないか.. いつの間にか開店していたっぽい..
さっそく、行ってみると、客が0人でちょっと不安でしたが、
接客対応が素晴らしい.. まったく ストレスを感じないプロ的対応ですね..
とりあえず、色々とオプション増々で新調しました(*´ω`*)
「眼鏡市場」、以前久喜市か大宮市のどこかか忘れたが、人を馬鹿にする対応で敬遠していたのですが、
店それぞれって感じですかね
(訂正)
人を馬鹿に..「眼鏡市場」ではなく「JINS」でした.. あの軽いカジュアルな店員はどう考えても「眼鏡市場」ではないと思い、
調べると「JINS」ですね。久喜の「JINS」ですね。思い出した..
不確定なので、取り消し線を引きました 「JINS」も現時点ではチャラい店員はいない感じなので..
自宅周辺の地域猫の保護活動関連の記事は、個人の特定につながるため過去記事は削除しました。
ご理解願います<(_ _)>
といいつつ、足跡として下記の記事は残しました
・庭に遊びに来る野良猫
「NeoPixel(WS2812B)の制御 その4」に関して質問がありました。
流通しているNeoPixelマトリックの配列には様々なタイプがあるようです。
そこで、前回のスケッチをもう少し見直して、 XYtoNo()関数の修正でレイアウトの差異を吸収できるよう、修正しました。
スクロール処理を行うNeoScroll()関数を、処理速度を少々犠牲にしてXYtoNo()を使って処理を行うようにしました。
試した感じでは、処理速度的には問題ないようです。
修正版
■ 修正の補足
NeoScroll()関数は、縦x横のドットデータを左に1ドットずらす処理を行っています。
従来版は速度重視のためmemmove()、memset()を使っていたのですが縦並びのLEDに対応出来ません。
そこで XYtoNo()を使てのデータ操作に修正しました。
これにより、XYtoNo()関数にてパネルのレイアウトに対応するだけで差異を吸収できます。
文字の縦の表示開始位置は、次の定数を変更することで調整出来ます。
#define Y_OFFSET 0 // フォントの縦先頭位置
ここで、「NeoPixel(WS2812B)の制御 その4」でZuhiさんがご質問されました、
横32ドットx縦8ドットで「パネルの左上起点に下上になっている」パネルについて対応してみましょう。
256個のLEDが数珠つなぎ(0~255)になっているのですが、並びは次の感じだと思われます。
左上が起点で↓向きでスタート、8個目で↑向きに折り返しで256個がつながっています。
上記において、任意の(x,y)の位置のLEDを操作するためには、そのLEDの先頭からの番号が必要となります。
計算式としては、次のようになります。
xが偶数の場合:
no = x * 8 + y
xが偶数の場合:
no = x * 8 -y + 8 -1
定数を踏まえると..
xが偶数の場合:
no = x * PXCEL_H + y
xが偶数の場合:
no = x * PXCEL_H -y + PXCEL_H - 1
となります。
修正版のスケッチをZuhiさんのパネルに対応する場合、以下の修正でいけると思います。
①定数の変更
#define PXCEL_W 32 // 横ピクセル数
#define PXCEL_H 8 // 縦ピクセル数
②XYtoNo()の変更
noを参考にして修正すると、関数内のreturn文を下記のように修正します
return x&1 ? x*PXCEL_H-y+PXCEL_H-1: x*PXCEL_H+y; // 左上起点下上方向並び
(※修正版にコメント化して記述しています)
横32ドットx縦8ドットパネルは所有していないので、動作確認出来ないのですが、たぶん大丈夫でしょう(;^_^
(うまくいかない場合、連絡ください)
今年の夏でタマちゃんが15歳になりました(*´ω`*)
茶トラ猫は、歳をとると肌色の皮膚にそばかす(黒い斑点)が現れてのですが、
うちのタマちゃんも、まぶた、鼻、唇あたりに黒いそばかすが増えてきました。
15歳の割には食欲旺盛ですが、若干寝ている時間が長くなった感じがします。
初代のタマちゃん(茶トラ♀)は17歳で虹の橋を渡ったのですが、長生きして欲しいです。
最近のコメント