読者です 読者をやめる 読者になる 読者になる

ゆる〜く電子工作

電子工作の備忘録メインで ゆる〜くいきます

Arduino:2.4インチTFT液晶シールドを動かしてみる

Arduino用の2.4インチ(240x320)TFTグラフィクス液晶シールドを入手しました。

今日はこのTFTモジュールの動かし方をまとめてみます。

f:id:milelife:20170413173241j:plain

 

ここでは、全体的に3.5インチ液晶シールドの記事を参考にしています。

milelife.hatenadiary.com

 

ここでも、前記事のようにAdafruitのライブラリーを使います。

・Adafruit-GFX-Library

・Adafruit-TFTLCD-Library

 

2つのライブラリのインストールが終わったら、サンプルスケッチ(graphicstest)を開いてみます。

<ファイル>→<スケッチ例>→<TFTLCD-Library_master>→graphicstest 

さっそくコンパイルしてボードに書き込みます・・・が、やはり画面が真っ白のままです。シリアルモニターを開くとこんな感じです。

f:id:milelife:20170413174402j:plain

”Unknown LCD driver chip: 6767" とエラーメッセージが出ています。

いろいろ模索した結果、変数 identifier を強制的に0x7575となるよう書き換えれば動くことがわかりました。このあたりは個体によって変ってくるだろうと思います。

<修正前>

f:id:milelife:20170406123039j:plain

 <修正後>

f:id:milelife:20170413174916j:plain

 

意外と簡単に動きました!

f:id:milelife:20170417034325j:plain

 

 あとは、graphicstest デモスケッチ内の関数を使えば、いろいろ表示していけそうです。

tft.fillScreen, tft.drawRect,  tft.drawCircle, tft.drawTriangle,  tft.drawLine,  tft.println

 

それでは、また。

 

Arduino:I2C経由で1602LCDを動かしてみる

今回とりあげる、I2C通信式のLCDパネルは、こんな感じです↓

f:id:milelife:20170411145420j:plain

 
液晶パネルは通常の16桁×2行の1602パネル(緑色モジュール)が元になります。
これ自体は 4bit/ 8bit パラレル通信式モジュールなのですが、外部(Arduinoなど)との接続ラインが電源含め8本以上必要と、とても多くなってしまいます。
そこで「パラレル⇔I2C変換モジュール(黒色)」により、接続ラインを電源含め4本に削減することができます。
以下、Arduinoにて、I2C_LCDモジュールを制御するための方法を示していきます。
 
 Step 1  必要なライブラリーのダウンロード
このモジュール用に作られた LCD Library を、下記からダウンロードします。
 
zipファイルはとりあえずダウンロードフォルダなどに保存しておいてください。
 次に、保存した新ライブラリーを、Arduino IDEにインストールします。
zipファイルの取得、およびインストールの手順は、以下のページをご参照ください。

milelife.hatenadiary.com

 

 Step 2  ArduinoUNOとLCDモジュールとの配線
ジャンパー線(メス⇔オス)で次のように配線します。
LCD> <Arduino UNO>
 GND ----- GND
 VCC ----- 5V
 SDA ----- A4 or SDA(UNO r3の場合、AREFの隣り)
 SCL ----- A5 or SCL (UNO r3の場合、SDAの隣り)
I2C信号線(SDA, SCL)の外部抵抗によるプルアップは特に必要ありません
 
 Step 3  LCDのコントラスト調整
配線をすませ、Arduino側のUSBケーブルを接続(電源ON)しますと、LCDのバックライトが明るくなります。
LCD文字のコントラストは「パラレル⇔I2C変換モジュール」上にある半固定抵抗にて調整します。
大体半分程度に合わせておいて、あとで微調整します。
 
Step 4  LCDモジュールの I2Cアドレスを見つけ出す
 一般的に、各I2Cデバイスには固有のI2Cアドレスが指定されており、このアドレスを使って(Arduinoなどの)I2Cマスター側は、特定のI2Cスレーブ・デバイスとの通信を確立します。I2C_LCDモジュールはI2Cスレーブ・デバイスとなります。
 LCDモジュールのI2Cアドレスは、多くの場合、デフォルトで0x27, 0x3F などが割り振られています。またモジュールのジャンパ・パターンの設定によってI2Cアドレスをある程度変更できるようになっています。これらはパラレル⇔I2C変換モジュール」を構成する主要ICの仕様です。
 ここでは、LCDモジュールのI2Cアドレスがわからない場合でも、そのアドレスを探し出せる方法をご紹介します。以下のI2C_scanというコードがよく知られています。
 
I2C_scan
/* this program is to detect IC2 device connected to Arduino
*/
#include <Wire.h>

void setup()
{
Wire.begin();

Serial.begin(9600);
Serial.println("\nI2C Scanner");
}


void loop()
{
byte error, address;
int nDevices;

Serial.println("Scanning...");

nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");

nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(5000); // wait 5 seconds for next scan
}

今回取り上げたLCDモジュールのI2Cアドレスは 0x3Fでした。

f:id:milelife:20170412055443p:plain

 
Step 5  Hello World サンプルスケッチを実行
それでは準備が整いましたので、いよいよ"Hello World!" の実行です。
Arduino-LiquidCrystal-I2C-library-masterのサンプル HelloWorldを開きます。

f:id:milelife:20170412055852j:plain

 

ここで、I2Cアドレスを修正します。Step 4で取得した 0x3Fを代入します。

 

<変更前>

f:id:milelife:20170412060543j:plain

 <変更後>

f:id:milelife:20170412062138j:plain

 できました!

f:id:milelife:20170412061627j:plain

 

補足

上記ライブラリーで使える関数の一部を挙げておきます

lcd.clear :画面クリア
lcd.setCursor( , ) :指定位置にカーソルをセット
lcd.noBacklight :バックライトをOFF
lcd.backlight :バックライトをON
lcd.createChar :カスタムキャラクター(絵文字)の作成
lcd.print :数値、文字列の表示

 

適宜更新します。

Arduino UNOで3.5インチTFT液晶シールドを動かす

Arduino用の3.5インチTFTグラフィクス液晶シールドを入手しました。

今日はこのTFTモジュールの動かし方をまとめてみます。

f:id:milelife:20170406112337j:plain

 

説明書も何もない状態だったので、ネット上のそれらしい情報を集めて試行錯誤しながら、何とか動くようになりました。

 

基本的には、Adafruit のTFTライブラリを用います。まず下記の2つのライブラリをインストールします。

・Adafruit-GFX-Library

・Adafruit-TFTLCD-Library

 

<ライブラリのインストール方法>

対象ページからZipファイルをダウンロード。適当なところに保存。

f:id:milelife:20170406114445j:plain

 

保存したZipファイルを、Arduino IDEのライブラリにインストールします

Arduino IDEのメニューバー<スケッチ>→<ライブラリをインクルード>→<.ZIP形式のライブラリをインストール> より ( filename ).zip を選択

f:id:milelife:20170406115119j:plain

 

2つのライブラリのインストールが終わったら、サンプルスケッチ(graphicstest)を開いてみます。

<ファイル>→<スケッチ例>→<TFTLCD-Library_master>→graphicstest 

f:id:milelife:20170406121641j:plain

 

さっそくコンパイルしてボードに書き込みます・・・が、たぶん画面が真っ白のままです。シリアルモニターを開くとこんな感じになります。

1)TFTサイズが 240×320 となっています。 

2)unknown LCD driver chip:0となっています

f:id:milelife:20170406122043j:plain

 LCDドライバチップを正しく認識してないようですので、スケッチを少し変更します。

<変更前>

f:id:milelife:20170406123039j:plain

<変更後>

f:id:milelife:20170406123115j:plain

 

変数 identifierを無理やり 0x9341 にしています。こうすることで何とか動き始めます。でもまだまだ・・

 どうやら色が反転しているようですので、色の定義部分を変更します。色コードの前に notを意味する ~ をつけます

<変更前>

f:id:milelife:20170406123804j:plain

<変更後>

f:id:milelife:20170406123818j:plain

これで色は正しくなったようです。

いったんスケッチの修正は終わるのですが、このスケッチファイル graphcstest は書込み禁止ですので、別名でスケッチを保存しておく必要があります。(適当に保存しといてください)

 

さてもう少し・・画素数240×320のままのようですので、Adafruit_TFTLCD.cpp の中身を一部変更します。

Adafruit_TFTLCD.cpp ファイルは、マイドキュメント\Arduino libraries\TFTLCD-Library-masterフォルダの中にあります。Windowsの方はワードパッドで開くといいかも。

 Adafruit_TFTLCD.cpp の中の、画素数を定義しているところを変更します。

<変更前>

//#define TFTWIDTH 320
//#define TFTHEIGHT 480

#define TFTWIDTH 240
#define TFTHEIGHT 320

 

<変更後>

#define TFTWIDTH 320
#define TFTHEIGHT 480

//#define TFTWIDTH 240

//#define TFTHEIGHT 320

 

これで上書き保存します。(不安な方は元ファイルを別の場所にバックアップしてください) これでソコソコうまく動くかと思います。

f:id:milelife:20170406125937j:plain

 

まだ完全ではない気がしますが・・・ボチボチ更新していければと思います。

それでは。

 

Arduino開発用ソフト Arduino IDEをインストール

こんにちは。

Arduinoを利用するには、Arduino開発環境 Arduino IDEのインストールが必要です。

Arduino IDE (Integrated Development Environment:統合開発環境)には、以下の3機能がパッケージになっています。

・プログラム(Arduinoではスケッチと言う)を作成・編集するためのエディタ

・スケッチをマシン語に変換(=コンパイル)するためのコンパイラ

・いわゆるバグ取りを支援するためのデバッガ

 

まあ理屈はともかく、実際にインストールしていきましょう。Arduino公式ページよりDownload できます。

https://www.arduino.cc/en/main/software

 

現在(記事執筆時)の最新バージョンは、Arduino IDE 1.8.2 のようですね。

それぞれのOSに合ったインストーラー をダウンロードしてください。

ご家庭でWindowsPCをお使いの方は、こちら→「」 (すぐダウンロードが始まります)

そのままインストーラーがダウンロードされますので、後ほどこれを実行して、Arduino IDEをインストールしてください。

 

 

随時追記します

 

 

Arduinoをはじめてみる

実は私自身もArduinoを始めてまだ1年経っていません。

なので、まずはArduinoをどうやって始めていくのか? から始めてみます。

 

まず、Arduino本体の入手です。

秋月電子などで純正品を買うのが王道でしょうね。

Arduinoと一口に言っても、

Arduino UNO, MEGA, nano, Leonardo, M0, Due, ・・・いっぱいあります

ここでは一番基本のArduino UNO に一本化して話を進めます。

 

さてArduino UNO ですが、純正品は実はけっこう高価です。秋月では2940円です。

 

ところがArduinoは、ハードウェア設計データが公開されている(いわゆるオープンソース・ハードウェア)ですので、サードパーティーによって合法的にクローン品が作製・販売されています。

もし純正品にこだわらなければ、このサードパーティー品(UNO互換機)を利用するのが価格的に賢明です。ヤフオクでだいたい1500円以下で入手できますからね。

auctions.search.yahoo.co.jp


さて、サードパーティー品を探すときに注目したい点が2つあります。

1)マイコンが、(表面実装品/DIP品)どちらを使っているか?

2)USB⇔シリアル変換チップが、(CH340系/AT16U2)どちらか?

 

Arduino純正品は、1)DIP品、2)AT16U2 を使っています。

サードパーティーのボードはコストを抑えるため、マイコンに表面実装品を用いたり、USB⇔シリアル変換チップにCH340系を用いたりしています。

いわゆる格安ボードは、1)表面実装、2)CH340系を使っています。

 

1)については、いろいろな意見がありますが、ここのブログでは、できればDIP品のご使用をオススメしています。 なぜか? 

実はArduinoマイコンは、Arduinoボード上にないと動かない訳ではなく、あとでマイコンのみを取り外して、別の適切なボードに刺しても同じように動きます。これを生かして、将来的に自由度の高い運用ができるようになります。

 一方、表面実装品はこのようなことができないため、運用の自由度は限られます。

 

(下の赤く囲んだ部分がマイコンです)

f:id:milelife:20170403151921j:plain

 

2)USB⇔シリアル変換チップ について

 PCとArduinoは、USBケーブルを介して信号のやり取りを行います。ここでUSB信号と、Arduinoマイコンが使うシリアル信号(UART)とは少しだけ規格が違っていますので、信号変換チップが必要となります。

 純正品はAT16U2というチップを使っていますので、サードパーティーボードでも、AT16U2チップを使っている物なら特に支障はありません。

 CH340系は、ちょっとだけ手間をかけてやる必要があります。

 Windows 8.1以上の方なら特に問題ないとのことですが、Windows7以下の方、MacOSXの方は、CH340系のデバイスドライバーを別途インストールする必要があります。なんだそーなのかと、ググッて次に進める方ならどうでも良いことです。

が、ここではArduino初心者の方を対象にしています。著者の体験(Windows7)から申し上げますと以下の状況が発生します。(何の前知識もない状態です。)

格安Arduinoボードを手に入れた! 開発環境もなんとかインストールした! 

早速PCとつないでみた! それっ・・

アレ?? 不明なUSBデバイス? Arduinoがつながってない? いや物理的にはつながっているはず・・ Arduino動かない? Arduino壊れてる? きっと格安ボードだったから壊れてたんだ! ああ安物買いするんじゃなかった、もうやらない。

ちょっと大げさかも知れませんね。でも、お持ちのPC環境にもよりますが、格安ボードをちゃんと使えるようにするには、ある程度苦労させられるようです。

このようなリスクを回避したい方は、純正品か、それに近いAT16U2チップを使っているボードを使いましょう。

 あと MacOS Xの方は、CH340のドライバとの相性が良くない、Macが落ちるという情報を散見します。(解決策はあるようです)

 

 ヤフオクなどでは「Arduino UNO 16U2」と検索するとそれらしきものがでてきますからね。(ちょっと相場観はつかめていません・・)

auctions.search.yahoo.co.jp

 

 

それでは・・・・

 

(随時、追記していきます)