0.96インチ TFTディスプレイ

T-Watchの画像のずれ方とかメーターの画像を見て、これってだいぶ前に買った0.96インチ(160x80)のちっちゃいディスプレイならきれいに表示されそうだなと思った。
というか、たぶんそれ用のサンプル画像じゃないかな。

 

ST7735を使ってるTFTディスプレイで、フルカラーでOLEDとそう変わらない値段で売っている。

AliExpressだったらどこのお店でも2ドル前後。

AliExpress.com Product - GREATZT TFT Display 0.96 / 1.3 inch IPS 7P SPI HD 65K Full Color LCD Module ST7735 Drive IC 80*160 (Not OLED) For Arduino

なので使い道は考えてなかったけど、つい購入していた。
(自分の購入の動機ってこんなんばっかだな)

しかしAdafruit版はSDカードが挿せるので、便利な分値段が高い。

自分が持っているのは当然AliExpressから買ったやつなので、ディスプレイのみ。

 

Adafruit関連のスケッチをよくいじってるなら、Arduino IDEにはST7735のLCD用のサンプルスケッチがすでにあるはず。

スケッチ例→Adafruit ST7735 and ST7789 Libraryの「graphictest」。

メーカーによって違うようだけど、自分が持っているやつとArduino UNOへの接続は以下。

 

  • SCL D13 
  • SDA D11 
  • DC(RSだったりA0だったりする) D8 
  • RESET D9 
  • CS D10 
  • GND GND 
  • VCC 3.3V 

※BLKという端子もあるけど、これは接続しない

 

スケッチはサイズによってコメントアウトするのを忘れずに。

  // OR use this initializer (uncomment) if using a 0.96" 160x80 TFT:
   tft.initR(INITR_MINI160x80);  // Init ST7735S mini display

これで一応表示される。

 

一応0.98インチ用に直したけど、Helloの文字がはみ出たりとか完全には対応していないっぽい。
表示するパターンの種類によっては、ちゃんとディスプレイに収まってるけど。

そもそもこの手のディスプレイって調べても1.8インチが標準らしくて、そっちのスケッチばっかり見つかる。
これも課題になりそうだな…。

 

余談だけど、以下のAdafruitの取説(?)がすごく参考になる。

 https://www.marutsu.co.jp/contents/shop/marutsu/ds/adafruit-mini-tft-0-dot-96-inch-180x60-breakout.pdf

マルツ電波に置いてあったマニュアルだから日本語かなと期待したら、残念ながら英語。

この中から「Adafruit-ST7735-Library-master」をダウンロードしてインクルードしてもgraphictest.inoはほとんど同じ。

SDカードのスロットがあると画像を入れておけるので便利だし(大きいサイズのならそういうの持ってるし)、こっちもいずれ手に入れたいな。

Sponsered Link

UbuntuにArduino IDE(1.8.10)インストール(と、M5Stackの話)

久々にM5Stackをいじろうとしたら、結局Arduino IDEのバージョンアップをすることになったのでやったこととかメモ。

 

増殖したM5Stackが最近はその名の通り積み状態になっているので、そろそろやりたかったことを片付けていくかと思っている。
そこで久々にArduino IDEでM5Stackを使うためgithubからコードをダウンロードしようと見に行ったら、むちゃくちゃ充実して読みやすくなっていた。

サンプルというか、実際にM5Stackを使った事例にリンクされていてとても助かる。

 https://github.com/m5stack/M5Stack/blob/master/docs/getting_started_ja.md

しかしやりたいことが増えて困る。
ただ、githubでもドキュメントのところはリンクが切れてるところもあったりするので、マニュアルは公式のホームページを見たほうが良い。


ダウンロードしたスケッチを使うのにArduino IDEを起動しようとしたところ、いつの間にかバージョンアップされているのに気付いた。
 https://www.arduino.cc/en/Main/Software
現時点で1.8.10。
前のは今のMac OSに合ってないと警告が出たけど(でも使えた)、これで問題なくなった。

問題はUbuntuへのインストール。
毎回なにかしら問題が起きるのでちょっと怖いが、いつも通り行ったコマンドは以下の通り。。
 $ tar Jxfv arduino-1.8.10-linux64.tar.xz
 $ cd arduino-1.8.10
 $ ./install.sh

すると、

 

 Adding desktop shortcut, menu item and file associations for Arduino IDE...

 rm: '/usr/local/bin/arduino' を削除できません: 許可がありません

 Removing symlink failed. Hope that's OK. If not then rerun as root with sudo.

 

 rm: '/usr/local/bin/arduino' を削除できません: 許可がありません

 Removing symlink failed. Hope that's OK. If not then rerun as root with sudo.

 

 ln: シンボリックリンク '/usr/local/bin/arduino' の作成に失敗しました: ファイルが存在します

 Adding symlink failed. Hope that's OK. If not then rerun as root with sudo.

  done!

 

…やっぱりか。

というわけで、また

 $ sudo ./install.sh

でインストール。今度は、

 

 Adding desktop shortcut, menu item and file associations for Arduino IDE...

  done!

 

エラーもなく完了。

前のバージョンは怪しいエラーが出たまま使ってたから、今回はすっきりした。

動作に問題がないならせっせとバージョンアップする必要もないけど、M5StackというかESP32関連は設定がこっそり変わってることがあるので、やっぱり新しいバージョンの方が安心だと思います。

Sponsered Link

Ardino/NUCLEO用シールド(Accessory ShieldのOLED)

先日のAccessory Shieldで、もうちょっと何とかならないかなと調べた続き。

別のモジュールが必要なBluetooth以外は、動作確認がほぼできている状態。
あいかわらずOLEDのみ表示されない。ひょっとして壊れてるのかと不安になる。


よく使うOLEDと違い4つの端子が出ているわけではなく、OLED本体のリボンケーブルが基板に直付けされている状態なので、これだけ外して確認するのも難しい。

しかし回路図を見ると特に複雑なことをしているわけではないので、これだったら標準のサンプルスケッチで試せるなと思った。
というわけで、Adafruit_SSD1306のサンプルスケッチ「ssd1306_128x64_i2c.ino」を開く。
修正はresetの番号。
 #define OLED_RESET     7 
あとはいつものI2Cのアドレス。今回も0x3Cにする。
 if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64 Serial.println(F("SSD1306 allocation failed")); 
(回路図見ても0x3C/0x7Dと両方書いてあって当てにならなかった。ので、実は両方やってみた結果)

これでコンパイルして転送。
でも
 display.cp437(true);         // Use full 256 char 'Code Page 437' font 
と、エラーが出た。
該当するフォント(キャラクターコード?)がないのか、そんな感じのエラーなのでもうちょい調べる必要がありそう。
しかしめんどくさいので、今回は手っ取り早くこの行だけコメントアウトしてしまった。
これでコンパイル成功。

 

すると無事にOLEDに文字や図形が表示された。
壊れてなかったんだな…。

しかも例の黄色と青のやつだったか…。
こっちのほうが安いからしかたない。画像表示させるには色の境界を考慮してデザインしないと。

 

一応、これでOLED自体は問題ないことがわかった。
他に考えられる原因は、Adafruit関連のライブラリが最近更新されているので、何かしらバージョンに合ってないことをやってる可能性もある。
なので今度はAdafruit_GFXライブラリを一度削除、最新版をインストールし直してみた。

(昨日はAdafruit_SSD1306ライブラリを入れ直したので)

そしてもう一度、Accessory Shieldのoledをコンパイルしてみたところ、無事表示された。

え、それだけ??という感じ。なんだ自分の環境が悪かっただけか…。

 

その後、他にAccessory Shieldを見つけたので、これをダウンロードして温度計とか表示させてみた。

 https://libstock.mikroe.com/projects/view/1502/waveshare-arduino-accessory-shield-demo

これも、そのままではOLEDは表示されなかったので、ちょっと修正した。

編集した12行目あたりを抜粋。

//Definitions for SSD1306 128x64 OLED Display
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET                            7
#define OLED_SA0                              8
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

それと下の方、アドレスを0x3Cにする。

void setup() 
{
unsigned char i = 0;
Serial.begin(9600);
Serial.flush();
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
oled.clearDisplay();

こんなもんだったかな。

日付と時間はずれてるけど、温度はちゃんと測定できてる。

とにかく古いスケッチとライブラリは、一度見直した方がいいという話でした。

Sponsered Link

Ardino/NUCLEO用シールド(Accessory Shield)

またAliExpressからの買い物メモ。

Ardino/NUCLEO用というか、NUCLEOボードで遊べないかと思ってシールドを購入した。

検索して目についた、waveshareのAccessory Shieldと、E-Paper_Shieldの二枚。

AliExpress.com Product - Accessory Shield Integrates XBee Interface 0.96inch OLED And Other Common Components Compatible with UNO Leonardo NUCLEO XNUCLEO

 

AliExpress.com Product - Universal e-Paper Driver Shield for NUCLEO/Ardino supports various Waveshare SPI e-Paper raw panels

しかしケーブル長くないか、これ。

E-Paper_Shieldは本体のみでE-Paperは付いてこなかったので、別のところから購入。

AliExpress.com Product - Waveshare 2.13 Inch Flexible E-Ink Screen Display Module e-Paper Panel Black White SPI Interface 212*104 DIY for Raspberry Pi

 

マニュアルやデータは公式サイトからダウンロードできる。

https://www.waveshare.com/wiki/E-Paper_Shield

https://www.waveshare.com/wiki/Accessory_Shield

 

とりあえず今回はAccessory Shieldを使ってみる。動作確認はArduinoで行った。

XNUCLEO用で使いたいんだけど、自分が持ってるボードはSTM8Sのみなので、ダウンロードしたデモのデータには対応していない。

なので久々に、普通のArduino(の、パチもん)を引っ張り出した。

 

まずはデモ用のスケッチのうち「oled.ino」をArduinoに書き込んで、エラーもなくOLEDに表示…されませんでした。

まあなんとなく、そんな気はしてた。うん。

それ以外のブザー、RGB LEDやLM75Bによる気温の測定も無事動いた。

なんでOLEDだけダメなんだろう。

 

気を取り直して、ちょっとだけoled.inoについて確認する。

ESP WemosのミニOELDのライブラリも引っ張ってきちゃってたので、普通のAdafruit_SSD1306を入れ直し。

今度は

#error ("Height incorrect, please fix Adafruit_SSD1306.h!");

で引っかかったのでファイルの内容を確認。

Adafruit_SSD1306.hを編集。

以下のコメントアウトを外す。

#define SSD1306_128_64 ///< DEPRECTAED: old way to specify 128x64 screen

他の「#define SSD1306…」の行はコメントアウト。

で、再コンパイルして書き込みし直したけど、今のところやっぱりダメだった。

 

他にエラーが何も出ないから、逆に困る。マニュアルにも詳しいことが載ってないし。

これも保留にしておきます。Arduinoで動かないんじゃXNUCLEOボードではもっと不安。

それでもって、E-Paper Shieldのほうはまた別途確認することにします。

Sponsered Link

UbuntuにArduino IDE(1.8.9)インストール

UbuntuにインストールしていたArduino IDEが、しばらくバージョンアップさせてなかったことに今さら気付いた。

現在のArduino IDEバージョンは1.8.9。

(Ubuntu側は安定の18.04)

またちょびっと引っかかるところがあったので、改めてインストールのおさらい。

 

自分の環境に合ったLinux 64bit版をダウンロード。

 https://www.arduino.cc/en/Main/Software

フォルダはダウンロードでもどこでも良いはずなんだけど、自分はユーザーのホームにそのまま置いた。

 

いつもはアイコンで解凍してたけど、今回はターミナルからコマンドで解凍。

なんでもいいけど、普段慣れてるtarで解凍した。

 $ tar Jxfv arduino-1.8.9-linux64.tar.xz

解凍したフォルダに移動。

 $ cd arduino-1.8.9

そしてインストール。

 $ ./install.sh

…ここでなんかエラーが出た。

一応最後に「done!」とは出てるので、インストールされてるような気もする。

なので、念のためsudoをつけてもう一度インストールしてみた。

 $ sudo ./install.sh

すると一番下のエラーが消えたけど、rmのエラー2つは出たままだった。

 

調べてみたらフォーラムにも記載があって、どうやら問題のないエラーメッセージらしい。

 https://forum.arduino.cc/index.php?topic=618505.0

確かに、Arduino IDEの起動は問題なく確認できた。

なのでこのまま使うことにします。

 

Linux用のインストーラはバージョンアップするたび、何かしら引っかかってしまうところがあるのが不思議。

あまり深く考えずにインストールしても問題なさそうだけど、やっぱり気になるところは避けて通りづらい。

このメモも、同じように引っかかった人の手助けになればと思います。

(解決策にはなってないが)

Sponsered Link