- 必要な材料:
- TFT LCDスクリーンモジュールを理解する:
- タッチスクリーン用のTFTLCDスクリーンのキャリブレーション:
- ArduinoとのTFTLCD接続:
- あなたのArduinoをTFTLCD用にプログラミングする:
- ワーキング:
Arduinoは常にプロジェクトを簡単に構築し、より魅力的に見えるようにするのに役立ちました。タッチスクリーンオプションを使用してLCD画面をプログラミングすることは複雑な作業のように聞こえるかもしれませんが、Arduinoライブラリとシールドによって非常に簡単になりました。このプロジェクトでは、2.4インチのArduino TFT LCDスクリーンを使用して、加算、減算、除算、乗算などのすべての基本的な計算を実行できる独自のArduinoタッチスクリーン計算機を構築します。
必要な材料:
- Arduino Uno
- 2.4インチTFTLCDディスプレイシールド
- 9V電池。
TFT LCDスクリーンモジュールを理解する:
実際にプロジェクトに飛び込む前に、この2.4インチTFT LCDモジュールがどのように機能し、どのタイプが含まれているかを知ることが重要です。この2.4インチTFTLCDスクリーンモジュールのピン配列を見てみましょう。
ご覧のとおり、Arduino Uno / Arduinoメガボードに完全に適合する28本のピンがあります。これらのピンの簡単な分類を次の表に示します。
ご覧のとおり、ピンはLCDコマンドピン、LCDデータピン、SDカードピン、電源ピンの4つの主要な分類に分類できます。これらのピンの詳細な動作については、 Arduinoライブラリ。
上記のモジュールの下部には、bmp画像ファイルをSDカードにロードするために使用できるSDカードスロットもあります。これらの画像は、Arduinoプログラムを使用してTFTLCD画面に表示できます。
注意すべきもう1つの重要なことは、インターフェイスICです。オリジナルのAdafruitTFT LCDモジュールから安価な中国のクローンまで、市場には多くの種類のTFTモジュールがあります。Adafruitシールドで完全に機能するプログラムは、中国のブレイクアウトボードでは同じように機能しない場合があります。したがって、どのタイプのLCDディスプレイを手に持っているかを知ることは非常に重要です。この詳細は、ベンダーから入手する必要があります。私のような安価なクローンをお持ちの場合は、おそらくili9341ドライバーICを使用しています。ArduinoチュートリアルとインターフェースするこのTFTLCDに従って、いくつかの基本的なサンプルプログラムを試して、LCD画面に慣れることができます。Arduinoを使用した他のTFTLCDプロジェクトもここでチェックしてください:
- ArduinoおよびTFTLCDでNeoPixelLEDストリップを使用する方法
- Arduinoを使用したスマートフォン制御のデジタルコードロック
タッチスクリーン用のTFTLCDスクリーンのキャリブレーション:
TFT LCDモジュールのタッチスクリーン機能を使用する場合は、正しく機能するように調整する必要があります。キャリブレーションなしのLCD画面は、機能しない可能性があります。たとえば、ある場所でタッチすると、TFTが別の場所でタッチに応答する場合があります。これらのキャリブレーション結果はすべてのボードで類似しているわけではないため、これを行うのは自分で行う必要があります。
キャリブレーションの最良の方法は、キャリブレーションサンプルプログラム(ライブラリに付属)を使用するか、シリアルモニターを使用してエラーを検出することです。ただし、このプロジェクトでは、ボタンのサイズが大きいため、キャリブレーションは大きな問題にはならないはずです。また、以下のプログラミングセクションで画面をキャリブレーションする方法についても説明します。
ArduinoとのTFTLCD接続:
2.4インチTFTLCDスクリーンは、完璧なArduinoシールドです。Arduino Unoの上にあるLCD画面を直接押すと、ピンと完全に一致し、スライドして挿入されます。ただし、安全上の問題として、端末がTFT LCD画面に接触した場合に備えて、ArduinoUNOのプログラミング端末を小さな絶縁テープで覆ってください。UNOで組み立てられたLCDは以下のようになります。
あなたのArduinoをTFTLCD用にプログラミングする:
このarduino計算機コードを機能させるためにSPFD5408ライブラリを使用して います。これはAdafruitの変更されたライブラリであり、LCDTFTモジュールとシームレスに連携できます。この記事の最後で完全なプログラムを確認できます。
注: エラーなしでコンパイルするには、このライブラリをArduinoIDEまたはこのプログラムにインストールすることが非常に重要です。
このライブラリをインストールするには、上のリンクをクリックするだけでGithubページに移動できます。そこで、クローンまたはダウンロードをクリックして、「ZIPのダウンロード」を選択します。zipファイルがダウンロードされます。
次に、Arduino IDEを開き、[スケッチ]-> [ライブラリを含める]-> [。ZIPライブラリを追加] を選択します 。 ブラウザウィンドウが開き、ZIPファイルに移動して[OK]をクリックします。成功すると、Arduinoの左下隅に「ライブラリがライブラリに追加されました」と表示されます。同じことを行うための詳細なガイドは、インターフェースチュートリアルに記載されています。
これで、Arduino IDEで以下のコードを使用し、それをArduino UNOにアップロードして、タッチスクリーン計算機を機能させることができます。さらに下に、コードを小さなセグメントに分けて説明しました。
このプログラムが機能するには、3つのライブラリが必要です。これら3つのライブラリはすべて、上記のリンクからダウンロードしたZIPファイルで提供されています。以下に示すように、コードにそれらを含めただけです。
#include
前に述べたように、期待どおりに機能するようにLCD画面を調整する必要がありますが、ここに示されている値がほぼ普遍的であることを心配しないでください。変数TS_MINX、TS_MINY、TS_MAXX、およびTS_MAXYは、画面のキャリブレーションを決定します。キャリブレーションが不十分だと感じた場合は、それらの周りをおもちゃにすることができます。
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
TFT LCD画面は多くの色を表示できることがわかっているため、これらの色はすべて16進値で入力する必要があります。人間が読めるようにするために、以下に示すように、これらの値を変数に割り当てます。
#define WHITE 0x0000 //黒->白#defineYELLOW 0x001F //青->黄色#defineCYAN 0xF800 //赤->シアン#definePINK 0x07E0 //緑->ピンク#defineRED 0x07FF //シアン->赤#define GREEN 0xF81F //ピンク->グリーン#defineBLUE 0xFFE0 //イエロー->ブルー#defineBLACK 0xFFFF //ホワイト->ブラック
さて、プログラミングの部分に入ることができます。このプログラムには3つのセクションがあります。1つは、ボタンとディスプレイを備えた電卓のUIを作成することです。次に、ユーザーのタッチに基づいてボタンを検出し、最終的に結果を計算して表示します。それらを一つずつ見ていきましょう。
1.電卓のUIの作成:
これは、電卓のユーザーインターフェイスを設計するためにあなたの創造性の多くを使用できる場所です。16個のボタンと1個のディスプレイユニットを備えた電卓の基本的なレイアウトを作成しただけです。MSペイントに何かを描くのと同じようにデザインを作成する必要があります。追加されたライブラリを使用すると、線、長方形、円、文字、文字列など、任意の色を描画できます。この記事から利用可能な機能を理解することができます。
私は線とボックスの描画機能を使用して、90年代の電卓に非常によく似たUIを設計しました。各ボックスの幅と高さは60ピクセルです。
//結果ボックスを描画しますtft.fillRect(0、0、240、80、CYAN); //最初の列を描画しますtft.fillRect(0,260,60,60、RED); tft.fillRect(0,200,60,60、BLACK); tft.fillRect(0,140,60,60、BLACK); tft.fillRect(0,80,60,60、BLACK); // 3番目の列を描画しますtft.fillRect(120,260,60,60、GREEN); tft.fillRect(120,200,60,60、BLACK); tft.fillRect(120,140,60,60、BLACK); tft.fillRect(120,80,60,60、BLACK); //(int b = 260; b> = 80; b- = 60){tft.fillRect(180、b、60,60、BLUE);の2番目と4番目の列を描画しますtft.fillRect(60、b、60,60、BLACK);} //(int h = 80; h <= 320; h + = 60)の水平線を描画しますtft.drawFastHLine(0、h、240、WHITE); //(int v = 0; v <= 240; v + = 60)の垂直線を描画しますtft.drawFastVLine(v、80、240、WHITE); //キーパッドラベルを表示for(int j = 0; j <4; j ++){for(int i = 0; i <4; i ++){tft.setCursor(22 +(60 * i)、100 +(60 * j)); tft.setTextSize(3); tft。setTextColor(WHITE); tft.println(symbol);
2.ボタンの検出:
もう1つの難しいタスクは、ユーザーのタッチを検出することです。ユーザーがどこかに触れるたびに、ユーザーが触れたピクセルのX位置とY位置を確認できます。この値は、以下に示すように、printlnを使用してシリアルモニターに表示できます。
TSPoint p = waitTouch(); X = py; Y = px; Serial.print(X); Serial.print( '、'); Serial.println(Y); // + "" + Y);
幅と高さがそれぞれ60ピクセルで、4つの行と(0,0)から始まる列のボックスを設計したためです。下の写真のように、各ボックスの位置を予測できます。
しかし実際には、これは結果にはなりません。キャリブレーションの問題により、期待値と実際の値には大きな違いがあります。
したがって、ボックスの正確な位置を予測するには、線をクリックして、シリアルモニターで対応する位置を確認する必要があります。これは最も専門的な方法ではないかもしれませんが、それでも完全に機能します。すべての線の位置を測定し、以下の値を取得しました。
さて、すべてのボックスの位置がわかったので。ユーザーがどこかに触れた場合、以下に示すように、(X、Y)値を各ボックスの値と比較することで、どこに触れたかを予測できます。
if(X <105 && X> 50)//列2のボタンの検出{if(Y> 0 && Y <85){Serial.println( "Button 0"); //ボタン0が押された場合(Number == 0)Number = 0; else Number =(Number * 10)+ 0; // 2回押された} if(Y> 85 && Y <140){Serial.println( "Button 2"); if(Number == 0)Number = 2; else Number =(Number * 10)+ 2; // 2回押した}
3.数値の表示と結果の計算:
最後のステップは、結果を計算し、TFTLCD画面に表示することです。このarduino計算機は2つの数字だけで操作を実行できます。これらの2つの数値は、変数「Num1」および「Num2」と呼ばれます。変数「Number」は、Num1とNum2から値を出したり受け取ったりし、結果も保持します。
用途がボタンを押すと、数字に1桁が加算されます。別のボタンを押すと、前の1桁に10が掛けられ、新しい数字が追加されます。たとえば、8を押し、次に5を押し、次に7を押すと、最初に変数は8を保持し、次に(8 * 10)+ 5 = 85、次に(85 * 10)+7 = 857になります。したがって、最後に変数は次のようになります。値857。
if(Y> 192 && Y <245){Serial.println( "ボタン8"); if(Number == 0)Number = 8; else Number =(Number * 10)+ 8; //もう一度押す}
加算などの操作を行う場合、ユーザーが加算ボタンを押すと、Numberの値が Num1 に転送され、Numberがゼロになり、2番目の数値の入力を受け入れる準備が整います。
Equalを押すと、Numberの値が Num2 に送信され、それぞれの計算(この場合は加算)が行われ、結果が変数「Number」に再度格納されます。
最後に、この値がLCD画面に表示されます。
ワーキング:
このArduinoタッチスクリーン計算機の動作は簡単です。以下のコードをArduinoにアップロードして起動する必要があります。LCD画面に電卓が表示されます。
これで、任意の数値を入力して計算を実行できます。現時点では、2つのオペランドと演算子のみに制限されています。ただし、コードを微調整して、多くのオプションを含めることができます。
計算を実行した後、毎回画面上の値をクリアするには、「C」を押す必要があります。プロジェクトを理解し、似たようなものを作るのを楽しんだことを願っています。ご不明な点がございましたら、フォーラムまたは以下のコメントセクションに投稿してください。次回はそれまでの別の興味深いプロジェクトでお会いしましょう!
以下のデモンストレーションビデオも確認してください。