Arduino Calculator
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
このプロジェクトについて
このプロジェクトの最後に、Arduinoで16x2 LCDとキーパッドを使用する方法と、すぐに利用できるライブラリを使用してそれらをプログラミングするのがいかに簡単であるかがわかります。また、特定のタスクを実行するためにArduinoをプログラムする方法も理解できます。
必要な材料:
- Arduino Uno(どのバージョンでも動作します)
- 16×2LCDディスプレイ
- 4×4キーパッド

- 9Vバッテリー
- ブレッドボードと接続ワイヤー
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キーパッド計算プログラム* /#include//https://www.arduino.cc/en/Reference/LiquidCrystal#includeからのLCDのヘッダーファイル //ヘッダーhttps://github.com/Chris--A/KeypadconstバイトROWS =4からのキーパッドのファイル。 // 4行constバイトCOLS =4; // 3列//キーマップの定義keys [ROWS] [COLS] ={{'7'、 '8'、 '9'、 'D'}、{'4'、 '5'、 '6'、 ' C '}、{' 1 '、' 2 '、' 3 '、' B '}、{' * '、' 0 '、'# '、' A '}}; byte rowPins [ROWS] ={0、 1、2、3}; //キーパッドROW0、ROW1、ROW2、およびROW3をこれらのArduinoピンに接続します。bytecolPins[COLS] ={4、5、6、7}; //キーパッドCOL0、COL1、およびCOL2をこれらのArduinoピンに接続します。Keypadkpd=Keypad(makeKeymap(keys)、rowPins、colPins、ROWS、COLS); // Keypadconstを作成しますintrs =8、en =9、d4 =10、d5 =11、d6 =12、d7 =13; // LCDが接続されているピンLiquidCrystallcd(rs、en、d4、d5、d6、d7); long Num1、Num2、Number; char key、action;ブール結果=false; void setup(){lcd.begin(16、2); // 16 * 2 LCDディスプレイを使用していますlcd.print( "DIY Calculator"); //イントロメッセージを表示しますlcd.setCursor(0、1); //カーソルを列0、行1に設定しますlcd.print( "-CircuitDigest"); //イントロメッセージdelay(2000);を表示します//情報が表示されるのを待ちますlcd.clear(); //次にクリーンアップします} void loop(){key =kpd.getKey(); //押されたキー値をcharifに格納します(key!=NO_KEY)DetectButtons(); if(result ==true)CalculateResult(); DisplayResult(); } void DetectButtons(){lcd.clear(); //次に、それをクリーンアップしますif(key =='*')//キャンセルボタンが押された場合{Serial.println( "Button Cancel"); Number =Num1 =Num2 =0; result =false;} if(key =='1')//ボタン1が押された場合{Serial.println( "Button 1"); if(Number ==0)Number =1;それ以外の場合、数値=(数値* 10)+ 1; // 2回押された} if(key =='4')//ボタン4が押された場合{Serial.println( "Button 4"); if(Number ==0)Number =4;それ以外の場合、数値=(数値* 10)+ 4; // 2回押された} if(key =='7')//ボタン7が押された場合{Serial.println( "Button 7"); if(Number ==0)Number =7;それ以外の場合、数値=(数値* 10)+ 7; // 2回押された} if(key =='0'){Serial.println( "Button 0"); //ボタン0が押された場合(Number ==0)Number =0;それ以外の場合、数値=(数値* 10)+ 0; // 2回押された} if(key =='2')//ボタン2が押された{Serial.println( "Button 2"); if(Number ==0)Number =2;それ以外の場合、数値=(数値* 10)+ 2; // 2回押された} if(key =='5'){Serial.println( "Button 5"); if(Number ==0)Number =5;それ以外の場合、数値=(数値* 10)+ 5; // 2回押された} if(key =='8'){Serial.println( "Button 8"); if(Number ==0)Number =8;それ以外の場合、数値=(数値* 10)+ 8; // 2回押された} if(key =='#'){Serial.println( "Button Equal"); Num2 =数値;結果=true; } if(key =='3'){Serial.println( "ボタン3"); if(Number ==0)Number =3;それ以外の場合、数値=(数値* 10)+ 3; // 2回押された} if(key =='6'){Serial.println( "Button 6"); if(Number ==0)Number =6;それ以外の場合、数値=(数値* 10)+ 6; // 2回押された} if(key =='9'){Serial.println( "Button 9"); if(Number ==0)Number =9;それ以外の場合、数値=(数値* 10)+ 9; // 2回押された} if(key =='A' || key =='B' || key =='C' || key =='D')//列4のボタンの検出{Num1 =Number;数=0; if(key =='A'){Serial.println( "Addition"); action ='+';} if(key =='B'){Serial.println( "減算");アクション='-'; } if(key =='C'){Serial.println( "乗算"); action ='*';} if(key =='D'){Serial.println( "Devesion"); action ='/';} delay(100); }} voidCalculateResult(){if(action =='+')Number =Num1 + Num2; if(action =='-')Number =Num1-Num2; if(action =='*')Number =Num1 * Num2; if(action =='/')Number =Num1 / Num2; } void DisplayResult(){lcd.setCursor(0、0); //カーソルを列0、行1に設定しますlcd.print(Num1); lcd.print(action); lcd.print(Num2); if(result ==true){lcd.print( "="); lcd.print(Number);} //結果を表示しますlcd.setCursor(0、1); //カーソルを列0、行1に設定しますlcd.print(Number); //結果を表示します}
回路図

製造プロセス