フォト
2019年8月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
無料ブログはココログ

2019年8月18日 (日)

食いしん坊たま吉さん(猫)の図

おやつに物足りなさを感じてごみ箱をあさり、袋を未練がましく舐める、食いしん坊たま吉さん(猫)の図。
先月、食欲不振で病院に連れて行き、非常に心配していたのですが、完全に回復しました。

Dscn2123

Dscn2125

ゴミ箱をあさるので一時、ふた付き(ふたが回転するタイプ)ゴミ箱に変更したのですが、
そのふたが首にはまった状態で、徘徊していたため危険と判断し、戻しました。

2019年8月14日 (水)

たまちゃんを保護して10年になりました

本日でたまちゃんを保護して10年となりました。

今日のたまちゃんの様子

   たま: 『おやつくれ~』

   おやつのおねだりは、この位置に来てふて寝&目力で「じー」とにらんでアピールします。
   ここにいるときに、おやつを何回かあげたのを学習したようです。
  Dscn2122

  たま: 『ね、はやく、おやつちょうだいよー』
  Dscn2103


10年前の保護時の様子


   保護時(段ボールで廃棄されていた)は、体重は200グラム後半、目は開いていたので
   生後10~14日くらいだと思います。とにかく小さい。

   生後間もないため、3~4時間おきにミルク授乳、おしっこ、うんちの介助が必要で大変でしたが、
   元気に育ってくれました。
   幸運なことに、非常に丈夫で元気なねこちゃんです。

  20090815114604

  20090815161412   

  20090817173432  

今後も健康で末永く時間を一緒に過ごしていきたいです。

2019年8月12日 (月)

豊四季タイニーBASICにSLEEPコマンドを追加する試作

豊四季タイニーBASIC for Arduino機能拡張版(+ VFD MW25616L対応)に
SLEEPコマンド(スリープ機能)を追加しているのですが、意味不明の挙動でハマってしまい、
10日間も停滞して悩んでいました。
本日やっと、解決しました。

Arduino・パソコン間のシリアル通信を確立したまま、スリープ状態に入り、再度起き上がると
シリアル通信が不安定になり、コンソール画面での対話が利用不能になっていました。

対策として、スリープに入る前にシリアル通信を終了し、起き上がるときに再接続をするようにしました。
    Serial.end();
      [スリープ処理]
    Serial.begin(SERIALBAUD);

これで、スリープから起き上がった後に問題無く、通信が出来るようになりました。
試作段階ですが、次のリストは外部割込み処理を行うBASIC言語での記述例です。

サンプルプログラム

1 '外部割込みによるスリープ抜け
10 Gpio 2,Input_PU
20 D=0
30 On Pin 2,Rising GoSub "ext"
40 Pin 2,On
50 ?"スリープ"
60 Sleep
70 ?"スリープ抜け"
80 Input "継続? ",C
90 D=!D
100 LED D
110 Wait 500
120 GoTo 40
130 "ext"
140 Return

サンプルプログラムでは、60行のSleepコマンドでスリープ状態(パワーセーブ)となります。
ピン番号2にボタンを付け、外部割込みを発生させます(30行で定義、40行で有効化)。

02_20190812204601

実行した画面

01_20190812204601

プログラムを実行すると60行でスリープ状態となり停止します。
その状態でボタンを押すと、130行の割り込み処理(実際は何もしていない)を実行後、
70行からプログラム実行を再開します。

前回実装したタイマー割り込み機能でもスリープから抜けて欲しいところですが、
利用したTimer1ではスリープから抜けることは出来ません。
Timer2なら可能なので、変更して対応したいと思います。


2019/08/14 追記

タイマー割り込みの実装をTimer1からTimer2に変更するため、
ArduinoではメジャーなMsTimer2ライブラリを利用に修正しました。

確かにTimer2では、SLEEPから抜けることが出来るのですが
1ミリ秒でSLEEPから抜けてしまいました。

原因を調べるためMsTimer2ライブラリのソースを見てみると、
内部的には1ミリ秒毎に割り込みを行い、カウントして
指定した時間(ミリ秒)毎に登録した関数を呼び出すようになっていました。
MsTimer2は使えないことが判明しました。

タイマー割り込みで、SLEEP抜けをするのは諦め、
ウオッチドックタイマを使った、SLEEP抜けを検討します。

2019年8月 5日 (月)

Maker Fare Tokyo 2019に行ってきました

今年も東京ビッグサイトで開催されたMaker Fare Tokyo 2019に行ってきました。
01_20190805084801 02_20190805084801

今年は本家の運営団体が営業停止等、心配なところがありましたが、
会場は大盛況で、色々なアイデアと元気を分けてもらいました。楽しい時間を過ごせました。

とりあえず、会場の雰囲気の記録(メモ)として、写真を列挙します(自分用)。
Dscn1985 Dscn1984

Dscn1990 Dscn2025 Dscn2022 Dscn2021 Dscn2019 Dscn2017 Dscn2009 Dscn2005 Dscn1997 Dscn2055 Dscn2056 Dscn2060 Dscn2063Dscn2066
Dscn2070 Dscn2073 Dscn2076 Dscn2077 Dscn2078 Dscn2080Dscn2051 Dscn2046 Dscn2043 Dscn2031 Dscn2035 Dscn2021

2019年8月 2日 (金)

SSD1322搭載3.12インチ OLEDの動作確認

AliexpressでコントローラSSD1322搭載 3.12インチ OLEDディスプレイを入手しました。

入手サイト
TZT Real OLED Display 3.12" 256*64 Dots Graphic LCD Module Display Screen LCM Screen SSD1322 Controller Support SPI
01_20190802090601

$20.70と少々お高いですが、以前に比べるとお手頃な価格になってきました。

実際の製品

届いた製品です。0.96インチ(上)と比較するとやはり大きいです。
Dscn1942

マニュアル類の付属がないため、製品販売ページの情報をもとに使い方は調べる必要があります。
購入先の業者に問い合わせても良いと思います。


製品仕様について

てっきりモノクロ(単色)だと思っていたのですが、
SSD1322の仕様を調べると、1ドット当たり4ビットの16階調表示でした。
256x64ドット、1ドットあたり4ビットのためバッファを使う方式でのプログラム実装では
バッファサイズは8kバイト必要となります。

2x16のピンヘッダでの接続となります。
インタフェースとしては、SPIの他にパラレル接続も可能です。
Photo_20190802094501
デフォルトではパラレル接続モードになっています。
裏のシルク印刷の設定をみてSPI(4SPI)接続に変更しました(R6の抵抗を取ってR5につける)。
Dscn1976

SPI(4SPI)で利用する場合、モジュールのピンヘッダのうち、下記のピンを利用します。
(Reset、CS、DCはArduinoの任意のピンでOK)
02_20190802094201
Arduinoでの動作確認

利用ライブラリ

ググって探して、次のライブラリを試してみました。
1) U8glib V2 library for Arduino
    https://github.com/olikraus/U8g2_Arduino
2) Arduino library for 256x64 OLED ER-OLED032-1 (SSD1322 driver)
    https://github.com/cvonk/arduino-SSD1322

接続はこんな感じです。
Dscn1977
結論を先に述べると、1)のU8glibの利用がお勧めです。
16階調表示には対応していないですが、フレームバッファ使わない方式にも対応しています。
下記の画像はU8glibを使った動作です。

Dscn1961
Dscn1965
Dscn1966
表示がとても綺麗です。文字の表示にも、もちょうど良いサイズです。

U8glibのサンプルスケッチをコンパイルする使う場合、コメントアウトされている下記を有効にします。
   U8G2_SSD1322_NHD_256X64_F_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8); // Enable U8G2_16BIT in u8g2.h

U8glibでも、フルサイズのバッファを使う場合、バッファサイズとして2kバイトが必要です。
Arduino Unoでは利用出来ません。Arduino MEGA2560で利用出来ました。

SPI接続では、OLEDモジュールからの表示内容の読み出しが出来ないため
表示している内容に追記するような場合は、Arduino側でバッファが必要となります。
バッファを使いない場合、グラフィック描画時に制約が発生します。

2)のライブラリはAdafruit_SSD1306がベースのライブラリなのですが、
古いAdafruit_GFXを使っているためか、Adafruit_GFXのメンバ変数参照でコンパイルエラーが
発生し、ライブラリソースの修正が必要でした(このあたりの対応は省略します)。

さらにバッファとして最低2kバイト(単色利用時)が必要です。Arduino Unoでは利用出来ません。
Arduino MEGA2560ではとりあえず動きました。

Dscn1970

16階調での利用は、バッファサイズ8kバイトが必要なため、Arduino MEGA2560でも利用出来ませんでした。


まとめ

このSSD1322搭載の本製品、ドットサイズが256x64、16階調、表示が綺麗で見やすいのです。
文字を表示にも適したサイズです。
ただし、16階調(1ドット4ビット)は、メモリ消費が多くなり、ちょっと使いにくいです。

16階調の表示の評価として、何か写真っぽいのを表示を試して見たいと思います。

«SCART・HDMIコンバータを追加購入しました