功能介绍
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 趣味口算计算器相关推荐

  1. Python四则运算“计算器”——整数口算练习“小程序”

    设定练习题目数量.最大取值整数数,即时判定,答对鼓励答错打印正确结果. [学习的细节是欢悦的历程] Python 官网:https://www.python.org/ Free:大咖免费"圣 ...

  2. 用计算机计算一定比笔算简便,不论是口算还是笔算,是估算还是用计算器算,其基本算理.doc...

    不论是口算还是笔算,是估算还是用计算器算,其基本算理.doc 1. 本单元学习的乘法运算,不论是口算还是笔算,是估算还是用计算器算,其基本算理和运算方法学生是不陌生的.因为之前学生学完两位数乘两位数后 ...

  3. <口算练习机 方案开发原理图>口算练习机/口算宝/儿童数学宝/儿童计算器 LCD液晶显示驱动IC-VK1621B,提供技术支持

    口算练习机采用微电脑控制技术,特大液晶显示屏,设计优雅,大方易用,机器自动出题,判题并语音播报.学生通过按键选择6种题库和输入运算结果. 口算练习机适用于幼小衔接,小学低年级的学生使用,练习内容包括个 ...

  4. pyhton的tkinter制作简易口算训练器

    前言 最近参加实习投递,发现好多家企业不管是什么岗位(研发or职能)都会考验到大家的数学能力 例如宝洁笔试直接就上了口算题,限时是真的紧张. 楼主不仅编程能力垃圾,数学能力也从小没有得到很好的锻炼(键 ...

  5. 口算练习机/儿童数学宝/口算神器 开发方案,LCD液晶显示驱动IC-VK1621B,可提供方案/技术支持

    VK0256B VK1622 VK1621B VK1072D等等,适用于 口算练习机,口算宝,智能数学宝,口算训练机,口算题宝,儿童数学宝,数学计算机,数学计算器 等计数器的显示驱动,下面分享一下VK ...

  6. GUI之小学生口算系统

    用Frame写的 import java.awt.*; import java.awt.event.*; import java.util.Random; /** *@author 作者 Your-N ...

  7. 数学题 识别 批改 python_家长必备的辅导利器,一整页数学题扫一下就知道对错:小猿口算...

    小麦今年上小学后,每天晚上的作业辅导就成了我和麦嫂的「新任务」,虽然学校会采用很一些数字化的教学方式减轻孩子和家长的负担,但类似背诵课文.数学口算这些「经典项目」还是离不开传统办法,一句一句去对,一题 ...

  8. Qt操作Office的一个实例--口算题生成器制作。

    文章目录 Qt操作Office的一个实例--口算题生成器制作. 1.关联QAxObject 2.操作Word文档: 3.设计界面 4.关键代码 效果: Qt操作Office的一个实例–口算题生成器制作 ...

  9. 主存地址位数怎么算_两位数乘一位数也能口算?对!你没看错,不是特殊情况也行...

    什么叫四则运算?加.减.乘.除呗.在四则运算中,如果没有括号,运算规则是先算乘.除,后算加.减. 乘法也是算术中最常见的一种运算.它是将相同的数加起来的一种快捷方式.比如说16×8=128.表示:8个 ...

最新文章

  1. 中国电子学会图形化四级编程题:绘制雪花
  2. virtualBox NAT模式,设置虚拟机可上网,宿主机可访问虚拟机的方法
  3. HEOI2012 朋友圈
  4. Kubernetes安装之十:配置node节点之kube-proxy
  5. 分布式文件系统—HDFS—Java API操作
  6. SpringDay01
  7. C# Parse and TryParse 方法详解
  8. 基恩士KEYENCE激光打标机控制器维修ML-9110详解
  9. 二手车数据挖掘- 数据分析
  10. 如何使用视频格式转换器将QLV格式转换成MP4
  11. php js广告,JavaScript_用JS调用谷歌 AdSense广告的方法, 具体的google广告的js文件做 - phpStudy...
  12. python 典型相关分析_Canonical Correlation Analysis 典型相关分析
  13. javaScript原生版购物车:全选、单选、全删、商品数量增减、计算总价、添加商品(代码)
  14. Ps|无规律渐变效果
  15. 华为鸿蒙操作系统全景解构
  16. 适合编程初学者的开源博客系统(Python版)
  17. 【前沿解读】斯坦福研究员论文-以太坊可逆交易标准ERC20/721R的机制、创新与局限
  18. 我的苹果电脑中毒了?mac也会中病毒?喜闻乐见(附杀毒软件测试)
  19. 可以吗?从 FireWire 设备引导 Linux
  20. 机器学习该怎么入门?(绝对干货)

热门文章

  1. Shellcode拷贝文件
  2. firewall-cmd设置NAT转换
  3. 双十一不踩雷的好物怎么选,几款最值得入手的好物推荐
  4. 使用cmd命令行打开MySQL数据库
  5. JQ获取tr 下的第一个 td 标签下相应标签的内容
  6. .NET专家Richard Grimes的告别书(zz)
  7. Win10 Hyper_v中Ubuntu虚拟机和主机共享文件
  8. 2017软考上半年(错题总结)
  9. QRCode 转二维码,html2canvas生成图片海报
  10. 不规则报表之考场座位分布图的制作