请选择 进入手机版 | 继续访问电脑版
查看: 2323|回复: 11

[晒奖品] 【Arduino触摸计算器】之五 最终任务简单计算器

[复制链接]

签到天数: 165 天

[LV.7]化身百千

发表于 2018-3-21 00:48:30 | 显示全部楼层 |阅读模式
本帖最后由 leo121_3006061 于 2018-3-21 11:00 编辑

【开篇】接上一篇所有的touchSensor都实现了,本篇实现本次的最终任务简单的计算器,顺便做一些总结
经过几天的研究,基本是U8G2来驱动LCD,U8G2有三种模式,这三种模式对于系统的资源有很好的分配,请查U8G2官方的wiki
完成本次任务基本控制在75%的资源占有率,这包括驱动3个cap1298及简单的计算。另外驱动中文字库,也可以通过字体设置,支持著名的文泉驿字体,还有一个通用的,就是我目前使用的,不过这些明显有不足之处,就是这些字库汉字很少的,我第二篇显示的“你好世界!”就是用字库实现的。开始今天的正题

【步骤】
1.创建新的sketch,命名为calculator_final.ino,并输入如下图代码,包含了LCD的接口定义,三个CAP1298的驱动,以及转换字符串数组
2018-03-21 00-03-51屏幕截图.png
鉴于图片不清楚,补充些代码
  1. #include <CAP1298.h>
  2. #include <U8g2lib.h>
  3. #include <math.h>
  4. #include<stdlib.h>

  5. //U8G2_ST7565_NHD_C12832_2_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 11, /* data=*/ 12, /* cs=*/ 8, /* dc=*/ 10, /* reset=*/ 9);
  6. U8G2_ST7565_NHD_C12832_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 11, /* data=*/ 12, /* cs=*/ 8, /* dc=*/ 10, /* reset=*/ 9);

  7. CAP1298 cap1=CAP1298(A4,A5);
  8. CAP1298 cap2=CAP1298(6,5);
  9. CAP1298 cap3=CAP1298(3,2);
  10. //SlowSoftWire cap2 = SlowSoftWire(6, 5);

  11. //SlowSoftWire cap3 = SlowSoftWire(3, 2);
  12. String arry[20]={"9","%","/","*","-","+","=","6","<-","3",".","2","5","8","+/-","AC","7","4","1","0"};
  13. //String arry1[4]={"7","4","1","0"};
  14. int calc(int a, int, char op);
  15. String s1,s2;
  16. int num1,num2,result;
  17. char op,op1;
  18. void setup() {
  19.   Serial.begin(115200);
  20.   cap1.begin();
  21.   cap2.begin();
  22.   cap3.begin();
  23.   u8g2.begin();
  24.   u8g2.enableUTF8Print();
  25. }
复制代码
2.主程序,也比较简单,部分按键功能展示
2018-03-21 00-07-15屏幕截图.png

2018-03-21 00-07-44屏幕截图.png
  1. if (cap2.touchStatusChanged()) {
  2.     cap2.updateTouchData();
  3.     for (int i = 0; i < 8; i++) {
  4.       if (cap2.isNewTouch(i)) {
  5.         Serial.println("cap2 " + String(i) + " was just touched.");
  6.        s1=s1+arry[i+8];
  7.        s2=s2+arry[i+8];
  8.         
  9.         
  10.          u8g2.print(s2);
  11.          if(arry[i+8]=="AC"){
  12.           u8g2.clearBuffer();
  13.           s1="";
  14.           s2="";
  15.          }
  16.       }
  17.       if (cap2.isNewRelease(i)) {
  18.         Serial.println("cap2 " + String(i) + " was just released.");
  19.       }
  20.     }
  21.   }
  22.   if (cap3.touchStatusChanged()) {
  23.     cap3.updateTouchData();
  24.     for (int i = 0; i < 4; i++) {
  25.       if (cap3.isNewTouch(i)) {
  26.         Serial.println("cap3 " + String(i) + " was just touched.");
  27.         s1=s1+arry[i+16];
  28.         s2=s2+arry[i+16];
  29.          u8g2.print(s2);
  30.       }
  31.       if (cap3.isNewRelease(i)) {
  32.         Serial.println("cap3 " + String(i) + " was just released.");
  33.       }
  34.     }
  35.   }
复制代码
3.简单的计算部分
2018-03-21 00-08-05屏幕截图.png
  1. int calc(int a, int b, char op)
  2. {
  3.   int tmp;
  4.   switch(op){

  5.   case '+' :
  6.   return tmp=a+b;
  7.   
  8.   case '-' :
  9. return tmp=a-b ;
  10.   case '*' :
  11.   return tmp=a*b;
  12.   case '/':
  13.   
  14.   return tmp=a/b;



  15. default:
  16. break;
  17.   
  18. }
  19. }
复制代码
4.编译完成下载到开发板,通过串口打印出来,三个CAP1298均显示setup ok
2018-03-21 00-11-46屏幕截图.png

5.欣赏一下,拍的几张计算过程
20180320_234402.jpg
20180320_234428.jpg

20180320_234447.jpg
20180320_234500.jpg
按下AC清屏
20180321_001442.jpg
20180321_003032_1.gif

本次任务目标基本完成了。

【总结】小脚丫为我们带来了精致小巧的板卡搭载arduino庞大的资源库,实现了快速开发部署,便于生产。此款触摸传感器不仅仅作为计算器,还可以替代键盘,操控电器设备,家电,为物联网操作提供了便利。




签到天数: 140 天

[LV.7]化身百千

发表于 2018-3-21 01:44:04 | 显示全部楼层
厉害,:)
回复 支持 反对

使用道具 举报

签到天数: 549 天

[LV.9]元老将成

发表于 2018-3-21 08:31:29 | 显示全部楼层
看看了
回复 支持 反对

使用道具 举报

签到天数: 678 天

[LV.9]元老将成

发表于 2018-3-21 08:40:46 | 显示全部楼层
很不错
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-3-21 09:07:35 | 显示全部楼层
我发现咱们论坛对图片太不友好了,大了就看不清。。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2018-3-21 09:08:48 | 显示全部楼层
恭喜完结~
回复 支持 反对

使用道具 举报

签到天数: 398 天

[LV.9]元老将成

发表于 2018-3-21 09:31:02 | 显示全部楼层
赞一个
回复 支持 反对

使用道具 举报

签到天数: 308 天

[LV.8]指点江湖

发表于 2018-3-21 09:39:32 | 显示全部楼层
很不错
回复 支持 反对

使用道具 举报

签到天数: 165 天

[LV.7]化身百千

 楼主| 发表于 2018-3-21 10:39:31 | 显示全部楼层
感谢各位大佬的鼓励和帮助
回复 支持 反对

使用道具 举报

签到天数: 165 天

[LV.7]化身百千

 楼主| 发表于 2018-3-21 10:41:53 | 显示全部楼层
才发现,图片怎么这么不清楚呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

返回顶部