【Arduino】基于4*4键盘制作计算器

实验现象
在4 * 4键盘输入简单的数学运算,如加法、减法、乘法和除法,实时在串口监视器显示答案。
实验准备
arduino主板-1
面包板-1
数据线-1
4 * 4键盘-1
跳线若干
连接电路
在这里插入图片描述
图1 44键盘8个引脚连接arduino板
除数字按钮外,其他按钮的作用如下:
'A’用于加法
'B’用于减法
'C’用于清零
'D’用于除法
'
'用于乘法
实物连接图
在这里插入图片描述
实验完整代码–>由于部分代码显示不出来,我只能分开写了

#include<Keypad.h>

const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
    
    
  {
    
    '1', '2', '3', '+'},
  {
    
    '4', '5', '6', '-'},
  {
    
    '7', '8', '9', 'C'},
  {
    
    '*', '0', '=', '/'}
};

byte rowPins[ROWS] = {
    
    9, 8, 7, 6};
byte colPins[COLS] = {
    
    5, 4, 3, 2};

// Created instances
Keypad myKeypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

boolean firstNumState = true;
String firstNum = "";
String secondNum = "";
float result = 0.0;
char operatr = ' ';

void setup() {
    
    
 Serial.begin(9600);//设置串口波特率为9600
 clr();
}

void loop() {
    
    
  char newKey = myKeypad.getKey();
  if (newKey != NO_KEY && (newKey == '1' || newKey == '2' || newKey == '3' || newKey == '4' || newKey == '5' || newKey == '6' || newKey == '7' || newKey == '8' || newKey == '9' || newKey == '0')) {
    
    
    if (firstNumState == true) {
    
    
      firstNum = newKey;
      Serial.print(firstNum);
    }
    else {
    
    
      secondNum = newKey;
      Serial.print(secondNum);
    }
  }
  if (newKey != NO_KEY && (newKey == '+' || newKey == '-' || newKey == '*' || newKey == '/')) {
    
    
    if (firstNumState == true) {
    
    
      operatr = newKey;
      firstNumState = false;
      Serial.print(operatr);
    }
  }
  if (newKey != NO_KEY && newKey == '=') {
    
    
    if (operatr == '+') {
    
    
      result = firstNum.toFloat() + secondNum.toFloat();
    }
    if (operatr == '-') {
    
    
      result = firstNum.toFloat() - secondNum.toFloat();
    }
    if (operatr == '*') {
    
    
      result = firstNum.toFloat() * secondNum.toFloat();
    }
    if (operatr == '/') {
    
    
      result = firstNum.toFloat() / secondNum.toFloat();
    }
    Serial.print("=");
    Serial.println(result);
    firstNumState = true;
  }
  if (newKey != NO_KEY && newKey == 'C') {
    
    
    clr();
  }
}
void clr() {
    
    
  firstNum = "";
  secondNum = "";
  result = 0;
  operatr = ' ';
}

本实验仅局限于一位数的的简单运算,您可与根据需求去设置多位数的运算。
int num=newKey-48;
firstNumber=firstNumber*10+num;//多位数
如下图在这里插入图片描述
实验效果
在这里插入图片描述
Keypad库文件分享
链接: https://pan.baidu.com/s/1oETI5uRCBW0U2204RY5mDA 提取码: dcqw

相关文章
【Arduino】基于4*4键盘制作计算器–多位数

猜你喜欢

转载自blog.csdn.net/weixin_43319452/article/details/105263240