プログラミングは常に楽しいものであり、組み込みプログラミングを始めたばかりの場合、Arduinoは素晴らしいプラットフォームです。このチュートリアルでは、Arduinoを使用して独自の計算機を作成します。値はキーパッド(4×4キーパッド)を介して送信でき、結果はLCD画面(16×2ドットマトリックス)で表示できます。この計算機は、加算、減算、乗算、除算などの単純な演算を整数で実行できます。しかし、概念を理解すれば、Arduinoの組み込み関数を使用して科学関数も実装できます。
このプロジェクトの最後に、Arduinoで16x2 LCDとキーパッドを使用する方法と、すぐに利用できるライブラリを使用してそれらをプログラムするのがいかに簡単であるかがわかります。また、特定のタスクを実行するためにArduinoをプログラムする方法も理解できます。
必要な材料:
- Arduino Uno(どのバージョンでも動作します)
- 16×2LCDディスプレイ
- 4×4キーパッド
- 9V電池
- ブレッドボードと接続線
回路図:
このArduino電卓プロジェクトの完全な回路図は 上に示されています。回路図に示されている+ 5Vとアース接続は、Arduinoの5Vとアースピンから取得できます。Arduino自体は、ラップトップから、または12Vアダプターまたは9Vバッテリーを使用してDCジャックを介して電力を供給できます。
私たちはArduinoで4ビットモードでLCDを操作しているので、LCDの最後の4データビットだけがArduinoに接続されます。キーボードには8つの出力ピンがあり、上記のようにピン0からピン7に接続する必要があります。次の接続表を使用して、Arduinoとの接続を確認できます。また、Arduinoとインターフェイスする4x4キーパッドを確認することもできます。
Arduinoピン名: |
に接続されています: |
D0 |
キーボードの1番目のピン |
D1 |
キーボードの2番目のピン |
D2 |
キーボードの3番目のピン |
D3 |
キーボードの4番目のピン |
D4 |
キーボードの5番目のピン |
D5 |
キーボードの6番目のピン |
D6 |
キーボードの7番目のピン |
D7 |
キーボードの8番目のピン |
D8 |
LCDの選択ピン(ピン4)を登録します |
D9 |
LCDのイネーブルピン(ピン6) |
D10 |
データピン4(ピン11) |
D11 |
データピン4(ピン11) |
D12 |
データピン4(ピン11) |
D13 |
データピン4(ピン11) |
+ 5V |
LCDのVddピン(ピン2)に接続 |
接地 |
LCDのVss、Vee、RWピン(ピン1、3、5)に接続 |
一部のArduinoボードでは、ピン0とピン1に接続されているものがあると、プログラムのアップロード中にエラーが表示される場合があります。そのため、プログラムのアップロード中にキーパッドを取り外すだけです。
接続が完了すると、ハードウェアは次のようになります。
Arduino電卓プログラム:
このプロジェクトの完全なArduinoプログラムは、このプロジェクトの最後にあります。コードは意味のある小さなチャンクに分割され、以下で説明されています。
前に述べたように、ライブラリを使用してLCDとキーパッドをArduinoとインターフェイスさせます。それでは、最初にそれらをArduinoIDEに追加しましょう。 LCD用のライブラリはデフォルトでArduinoにすでに含まれているので、心配する必要はありません。キーパッドライブラリについては、リンクをクリックしてGithubからダウンロードしてください。 ZIPファイルを取得し、Sketch-> Include Library-> Add.ZIP fileでこのライブラリをArduinoに追加し、ダウンロードしたファイルの場所を指定します。完了すると、プログラミングの準備が整います。
キーパッドを使用するためにライブラリを使用しましたが、Arduinoのキーパッドに関するいくつかの詳細(以下に表示)について言及する必要があります。変数ROWSおよびCOLSは、キーパッドにある行と列の数を示し、キーマップは、キーボードにキーが存在する順序を示します。このプロジェクトで使用しているキーパッドは、以下のようになります。キーマップも同じです。
さらに以下では、可変配列 rowPins および colPins を使用してキーパッドが接続されているピンについて 説明 し ました 。
constバイトROWS = 4; // 4行constバイトCOLS = 4; // 3列//キーマップを定義charkeys = {{'1'、 '2'、 '3'、 'A'}、{'4'、 '5'、 '6'、 'B'}、{ '7'、 '8'、 '9'、 'C'}、{'*'、 '0'、 '#'、 'D'}}; byte rowPins = {0、1、2、3}; //キーパッドROW0、ROW1、ROW2、およびROW3をこれらのArduinoピンに接続します。バイトcolPins = {4、5、6、7}; //キーパッドCOL0、COL1、COL2をこれらのArduinoピンに接続します。
使用しているキーパッドのタイプとその接続方法について説明したら、以下の行を使用して、それらの詳細を使用してキーパッドを作成できます。
キーパッドkpd = Keypad(makeKeymap(keys)、rowPins、colPins、ROWS、COLS); //キーパッドを作成します
同様に、LCDがArduinoのどのピンに接続されているかもわかります。回路図によると、定義は次のようになります
const int rs = 8、en = 9、d4 = 10、d5 = 11、d6 = 12、d7 = 13; // LCDが接続されているピンLiquidCrystallcd(rs、en、d4、d5、d6、d7); // LCDを作成します
セットアップ 関数内では、プロジェクトの名前を表示してから、メインプロジェクトが存在するwhileループに進みます。
基本的に、キーパッドで何かが入力されているかどうかを確認する必要があります。入力されている場合は、入力されている内容を認識し、「=」が押されたときに変数に変換する必要があります。結果を計算して、最後に表示する必要があります。 LCDに。これは、以下に示すように、 ループ 関数内で行われることとまったく同じです。
キー= kpd.getKey(); //押されたキー値をcharに格納するif(key!= NO_KEY)DetectButtons(); if(result == true)CalculateResult(); DisplayResult();
各関数内で何が起こるかはコメント行を使用して説明され、以下の完全なコードを調べ、それをいじって実際にどのように機能するかを理解します。特定の行について疑問がある場合は、コメントセクションまたはフォーラムを使用してください。
Arduino電卓のシミュレーション:
Proteusソフトウェアを使用してプロジェクトをシミュレートすることもできます。Proteusにはそれ自体にArduinoコンポーネントはありませんが、簡単にダウンロードしてライブラリに追加できます。ProteusにArduinoコンポーネントを配置したら、回路図に示すように、英数字LCDとキーパッドを追加して接続します。
次に、ここからhexファイルをダウンロードし、ProteusのボードをダブルクリックしてArduinoに追加し、「プログラムファイル」をこのダウンロードしたhexファイルにポイントします。シミュレーションのスナップショットを以下に示します。完全な作業を以下のビデオに示します。
注:指定された16進ファイルは、以下に指定されたプログラムの元のファイルと同じではありません。シミュレーションキーパッドと実際のハードウェアキーパッドのキーマップが異なるため、に変更されました。
Arduino Calculatorの動作:
回路図に従って接続し、以下のコードをアップロードします。エラーが表示された場合は、上記の手順に従ってライブラリを追加したことを確認してください。シミュレーションを試して、問題がハードウェアにあるかどうかを確認することもできます。すべてが想定どおりに行われると、ハードウェアは次のようになり、LCDにこれが表示されます。
ここで使用されているキーパッドには適切なマーキングがないため、以下に示すようにアルファベットを演算子と見なしました。
キーパッドの文字 |
と思われる |
「A」 |
加算(+) |
「B」 |
減算(-) |
「C」 |
掛け算(*) |
「D」 |
除算(/) |
「*」 |
クリア(C) |
「#」 |
等しい(=) |
マーカーを使用して、各ボタンが実際に何を表しているかを上書きできます。
これで、電卓を直接使い始めることができます。数値を入力すると2行目に表示され、オペランドを押して2番目の数値を入力し、最後に「#」キーを押して結果を取得します。このタッチスクリーンベースのArduino計算機を作成してみることもできます。