Arduino 趣味口算计算器
功能介绍
1.计算器上电后,液晶屏进入欢迎界面,并提示按键盘A键开始答题。
2.按键盘A键后,随机生成10道题(一年级口算题-100以内加减法)
3. 输入答案,按D键确认,系统判断用户计算是否正确,正确绿灯亮2秒,并在屏幕上显示great,错误红灯亮2秒,并在屏幕上显示losing
4.本轮回答结束,液晶屏显示正确和错误的次数,并记录本轮用时时间
5.再次按A键,重新进入下一轮答题
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>const int greenLEDPin =2; //绿LED亮,表示结果正确
const int redLEDPin =3; //红LED亮,表示结果错误int firstNum ; //加法或减法操作的第一个数
int secondNum ; //加法或减法操作的第二个数
int result ; //两个数的运算结果
int myResult; //我计算的运算结果char operatr = ' '; //存放‘+’或‘-’的字符int start_flag = 0 ; //开始运算标志位int rightNum= 0; //记录正确数
int errorNum= 0; //记录错误数int counts = 0; //记录答题次数long startTime; //开始记录答题时间
long endTime; //结束记录答题时间/** 下面的配置是对4*4键盘的配置*/
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}
};byte rowPins[ROWS] = {5, 6, 7, 8}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {9, 10, 11, 12}; //connect to the column pinouts of the keypadKeypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //液晶屏的配置
LiquidCrystal_I2C lcd(0x27,16,2); //创建对象,并配置LCD地址及行列void startDisplay(){lcd.clear(); //清屏lcd.setCursor(0, 0) ; //设置光标位置为第1行第1个位置lcd.print("Welcome!"); //使屏幕显示Welcome!lcd.setCursor(0, 1) ; //设置光标位置为第2行第1个位置lcd.print("Press A to start"); delay(500);
}void setup() {pinMode(greenLEDPin,OUTPUT);pinMode(redLEDPin,OUTPUT);lcd.init(); //初始化LCDlcd.backlight(); //打开背光delay(500); //延时500msstartDisplay(); randomSeed(analogRead(A0));
}void loop() { char newKey = myKeypad.getKey();if(newKey != NO_KEY && newKey == 'A'){start_flag=1;startTime=millis();}if(start_flag==1 && counts <= 10){ //开始运算counts++;gennerator(); //生成数据并赋值给相关变量lcd.clear(); //清屏lcd.setCursor(0, 0); //设置光标位置为第1行第1个位置lcd.print(firstNum); //显示第一个数字lcd.print(operatr); //显示运算符lcd.print(secondNum); //显示第二个数字lcd.print("="); //显示 =while(1){char newKey = myKeypad.getKey();//把输入的数值显示出来,并把最后的输入结果赋给myResultfor(int i=0;i<=9;i++){ if(newKey != NO_KEY && newKey ==('0'+i)){int num=newKey-48; //把字符数字变为数学中的数字lcd.print(num); //使屏幕显示文字delay(100);myResult=myResult*10+num;}}if(newKey != NO_KEY && newKey == 'D'){break;}}lcd.setCursor(0, 1);if(result==myResult){rightNum++; digitalWrite(greenLEDPin,HIGH); lcd.print(" great^-^"); }else{errorNum++;digitalWrite(redLEDPin,HIGH); lcd.print(" losing-_-");}delay(2000);digitalWrite(greenLEDPin,LOW);digitalWrite(redLEDPin,LOW); }//结束本轮答题endToHandle();
}void endToHandle(){if(start_flag==1&& counts == 10){lcd.clear(); //清屏lcd.setCursor(0, 0);lcd.print("right:"); lcd.print(rightNum);lcd.setCursor(0, 1);lcd.print("error:"); lcd.print(errorNum); delay(3000); lcd.clear(); //清屏lcd.setCursor(0, 0);if(rightNum==10){lcd.print(" best!!"); }else if(rightNum>=8){lcd.print(" great!!");}else if(rightNum>=6){lcd.print(" passed!!");}else{lcd.print("need work hard!");}delay(3000);endTime=millis();int fen=(endTime-startTime)/1000/60;int miao=(endTime-startTime)/1000%60;lcd.clear(); //清屏lcd.setCursor(0, 0);lcd.print("Time:");lcd.print(fen);lcd.print("\'");lcd.print(miao);lcd.print("\"");delay(5000);start_flag=0;counts=0;lcd.clear(); //清屏lcd.setCursor(0, 0);lcd.print("Press A to start"); }
}/** 通过生成的随机数给firstNum、secondNum、result、operatr赋值,myResult重新赋值为0*/void gennerator(){int x=random(99)+1; //生成一个1-99的数字int y=random(99)+1;int z=random(2); //生成一个0或1的数字,0代表加法,1代表减法if(z==0){operatr = '+';if(x>y){result=x; //最大的数存放结果firstNum=y ;secondNum=x-y ;}else{result=y;firstNum=x;secondNum=y-x ;}}else {operatr = '-';if(x>y){result=x-y;firstNum=x;secondNum=y;}else{result=y-x;firstNum=y;secondNum=x ;}}myResult=0;
}
Arduino 趣味口算计算器相关推荐
- Python四则运算“计算器”——整数口算练习“小程序”
设定练习题目数量.最大取值整数数,即时判定,答对鼓励答错打印正确结果. [学习的细节是欢悦的历程] Python 官网:https://www.python.org/ Free:大咖免费"圣 ...
- 用计算机计算一定比笔算简便,不论是口算还是笔算,是估算还是用计算器算,其基本算理.doc...
不论是口算还是笔算,是估算还是用计算器算,其基本算理.doc 1. 本单元学习的乘法运算,不论是口算还是笔算,是估算还是用计算器算,其基本算理和运算方法学生是不陌生的.因为之前学生学完两位数乘两位数后 ...
- <口算练习机 方案开发原理图>口算练习机/口算宝/儿童数学宝/儿童计算器 LCD液晶显示驱动IC-VK1621B,提供技术支持
口算练习机采用微电脑控制技术,特大液晶显示屏,设计优雅,大方易用,机器自动出题,判题并语音播报.学生通过按键选择6种题库和输入运算结果. 口算练习机适用于幼小衔接,小学低年级的学生使用,练习内容包括个 ...
- pyhton的tkinter制作简易口算训练器
前言 最近参加实习投递,发现好多家企业不管是什么岗位(研发or职能)都会考验到大家的数学能力 例如宝洁笔试直接就上了口算题,限时是真的紧张. 楼主不仅编程能力垃圾,数学能力也从小没有得到很好的锻炼(键 ...
- 口算练习机/儿童数学宝/口算神器 开发方案,LCD液晶显示驱动IC-VK1621B,可提供方案/技术支持
VK0256B VK1622 VK1621B VK1072D等等,适用于 口算练习机,口算宝,智能数学宝,口算训练机,口算题宝,儿童数学宝,数学计算机,数学计算器 等计数器的显示驱动,下面分享一下VK ...
- GUI之小学生口算系统
用Frame写的 import java.awt.*; import java.awt.event.*; import java.util.Random; /** *@author 作者 Your-N ...
- 数学题 识别 批改 python_家长必备的辅导利器,一整页数学题扫一下就知道对错:小猿口算...
小麦今年上小学后,每天晚上的作业辅导就成了我和麦嫂的「新任务」,虽然学校会采用很一些数字化的教学方式减轻孩子和家长的负担,但类似背诵课文.数学口算这些「经典项目」还是离不开传统办法,一句一句去对,一题 ...
- Qt操作Office的一个实例--口算题生成器制作。
文章目录 Qt操作Office的一个实例--口算题生成器制作. 1.关联QAxObject 2.操作Word文档: 3.设计界面 4.关键代码 效果: Qt操作Office的一个实例–口算题生成器制作 ...
- 主存地址位数怎么算_两位数乘一位数也能口算?对!你没看错,不是特殊情况也行...
什么叫四则运算?加.减.乘.除呗.在四则运算中,如果没有括号,运算规则是先算乘.除,后算加.减. 乘法也是算术中最常见的一种运算.它是将相同的数加起来的一种快捷方式.比如说16×8=128.表示:8个 ...
最新文章
- 中国电子学会图形化四级编程题:绘制雪花
- virtualBox NAT模式,设置虚拟机可上网,宿主机可访问虚拟机的方法
- HEOI2012 朋友圈
- Kubernetes安装之十:配置node节点之kube-proxy
- 分布式文件系统—HDFS—Java API操作
- SpringDay01
- C# Parse and TryParse 方法详解
- 基恩士KEYENCE激光打标机控制器维修ML-9110详解
- 二手车数据挖掘- 数据分析
- 如何使用视频格式转换器将QLV格式转换成MP4
- php js广告,JavaScript_用JS调用谷歌 AdSense广告的方法, 具体的google广告的js文件做 - phpStudy...
- python 典型相关分析_Canonical Correlation Analysis 典型相关分析
- javaScript原生版购物车:全选、单选、全删、商品数量增减、计算总价、添加商品(代码)
- Ps|无规律渐变效果
- 华为鸿蒙操作系统全景解构
- 适合编程初学者的开源博客系统(Python版)
- 【前沿解读】斯坦福研究员论文-以太坊可逆交易标准ERC20/721R的机制、创新与局限
- 我的苹果电脑中毒了?mac也会中病毒?喜闻乐见(附杀毒软件测试)
- 可以吗?从 FireWire 设备引导 Linux
- 机器学习该怎么入门?(绝对干货)