Arduino 串口简易计算器:两数四则运算演示
项目简介
仅需一块 Arduino 开发板(Uno/Nano/Mega/Leonardo/Due/Yún/101 均可),通过串口监视器输入形如 `2+3`、`8*2`、`7-3`、`10/2` 的算式(无空格),即可得到计算结果。适合初学者理解串口解析、`switch-case` 与基本数据类型。
硬件连接
无需任何外接元件,仅将 Arduino 通过 USB 连接电脑即可。原理图仅为示意:

代码逻辑解析
/* 串口计算器
* 接收格式:数字1 + 运算符 + 数字2(如 2+3)
* 支持 + - * /,整数运算,除法取整
*/
long number1, number2, result;
char calSignal;
void setup() {
Serial.begin(9600);
Serial.println("Send me a calculation");
Serial.println("E.G. : 2+3");
Serial.println();
}
void loop() {
while (Serial.available() > 0) {
number1 = Serial.parseInt(); // 解析第一个整数
calSignal = Serial.read(); // 读取运算符
number2 = Serial.parseInt(); // 解析第二个整数
calculate(); // 执行运算
Serial.print("Result = ");
Serial.println(result);
Serial.println();
Serial.println("Next calculation, please");
Serial.println();
}
}
void calculate() {
switch (calSignal) {
case '+': result = number1 + number2; break;
case '-': result = number1 - number2; break;
case '*': result = number1 * number2; break;
case '/': result = (number2 != 0) ? number1 / number2 : 0; break; // 防除零
default:
Serial.println("INVALID OPERATION");
result = 0;
}
}
关键点说明
- Serial.parseInt():自动跳过非数字字符,解析连续数字为长整型,支持多位数。
- Serial.read():读取运算符字符(ASCII)。
- 原代码中 `case '+'` 重复三次为笔误,已修正为 `+ - * /` 四分支。
- 除法为整数除法,结果向零取整;已加入除零保护。
- 若需支持浮点数,可改用 `Serial.parseFloat()` 并将变量改为 `float`。
进阶拓展建议
- 加入 LCD1602/I2C OLED 显示结果,脱离电脑独立运行。
- 接 4×4 矩阵键盘 + 显示屏,做成真正的手持计算器(参考项目 1005016762 的模拟量按键方案)。
- 支持括号、幂运算、连续表达式解析(需实现表达式树或逆波兰表达式算法)。
- 结合蓝牙/串口透传模块,手机端 App 输入算式,Arduino 返回结果。
常见问题
- 输入后无反应?
- 检查串口监视器波特率是否 9600,发送模式选“无换行”或“回车”,输入格式严格遵循“数字+运算符+数字”无空格。
- 结果异常?
- 确认 `parseInt` 正确解析:若输入 `12+3`,`number1=12`,`calSignal='+'`,`number2=3`。
- 负数支持?
- 当前 `parseInt` 支持负号,如 `-5+2` 可正常工作。
制造工艺
- DIY Arduino单词时钟 – 极简优雅的实时文字显示
- 自制 Arduino 伊斯兰祷告时间实时时钟
- Arduino Uno WiFi 网页服务器:通过浏览器控制 LED 开关
- 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
- 自制便携式视觉暂留显示器:Arduino UNO 与 ATtiny85
- SerialDebug:为 Arduino 引入分级日志的专业调试库
- 轻松打造 Arduino 秒表:按钮触发计时器
- Arduino 洗手计时器:抗击 COVID-19 的简易 DIY 工具
- Arduino Uno驱动MAX7219级联8×8 LED矩阵:从入门到动画显示
- Wi-Servo:基于 ESP8266 的 Wi-Fi 网页端舵机远程控制系统
- Arduino 激光雕刻机:GRBL 固件 + Universal Gcode Sender 全流程实战
- Arduino DIY 计算器:1602 LCD + 4×4 矩阵键盘完整教程