串口屏抽签,类似抽奖,物理按键选中和清除,mcu是stm32

1、项目简介

2、实现逻辑

#屏幕页面放58个图标控件,每个图标控件上显示一个人名,控件下面位置再放一个控件,可在语数外物化生6个字(6个字不同颜色)之间选择
#按下随机选择按键,人名背景随机变深,20次后,最后一个背景变深的为选中者
#通过如下图的下或者右按键,选中要选择的人,图标开始闪烁,点击确认后,再通过按键选择这个人下面的学科
#点击清屏按键,页面所有带深色背景的人及学科字都被清除

3、应用场景

#商场随机抽奖
#课堂随机选人签到或者答题
#课堂记录学生哪一科没有交作业或者需要课后找老师

4、核心代码梳理

void setup(void)
{//USARTSerial.begin(115200);pinMode(LED_BUILTIN, OUTPUT);pinMode(KEY1, INPUT);pinMode(KEY1, INPUT_PULLUP);pinMode(KEY2, INPUT);pinMode(KEY2, INPUT_PULLUP);pinMode(KEY3, INPUT);pinMode(KEY3, INPUT_PULLUP);pinMode(KEY4, INPUT);pinMode(KEY4, INPUT_PULLUP);pinMode(KEY5, INPUT);pinMode(KEY5, INPUT_PULLUP);Serial.print("START");
}void loop(void)
{//LEDdigitalWrite(LED_BUILTIN, HIGH);delay(300);digitalWrite(LED_BUILTIN, LOW);delay(300);right = digitalRead(KEY1);down = digitalRead(KEY2);ok = digitalRead(KEY3);clear = digitalRead(KEY4);randomDraw = digitalRead(KEY5);//check///  if(right == 0){if(ok_flag){right_sub_num++;right_sub_num = right_sub_num % 7;}     else right_num++;  }if(down == 0){down_num++;}if(ok == 0){ok_num = 1;}if(ok_num){if(ok == 1){ok_num = 0;ok_flag++;ok_flag = ok_flag % 2;right_sub_num = 0;}}if(clear == 0){clear_flag = 1;}//clear///      if((down_flag || right_flag) && clear_flag){clear_flag = 0;right_num = 1;down_num = 0;}if(clear_flag == 1){clear_flag = 2;ok_flag = 0;right_num = 0;down_num = 0;for(uint8_t i=0; i<8; i++){tx_data[7] = 0;Serial.printf("%c", tx_data[i]);}//clearfor(uint8_t j=0x3A; j<0x73; j++){delay(50);for(uint8_t i=0; i<8; i++){tx_data_sub[5] = j;tx_data_sub[7] = 0;Serial.printf("%c", tx_data_sub[i]);}}}//select///    if(!ok_flag)//name{if(down_num == 6){if(right_num >= 4)right_num = 1;}else if(down_num == 7)down_num = 0;if(right_num >= 10)right_num = 1;for(uint8_t i=0; i<8; i++){tx_data[7] = 0;Serial.printf("%c", tx_data[i]);}delay(100);tx_data[5] = down_num*9 + right_num;for(uint8_t i=0; i<8; i++){tx_data[7] = 1;Serial.printf("%c", tx_data[i]);}}else//subject{for(uint8_t i=0; i<8; i++){tx_data_sub[5] = tx_data[5] + 0x39;if(right_sub_num == 6)tx_data_sub[7] = 0;else tx_data_sub[7] = 8 - right_sub_num;Serial.printf("%c", tx_data_sub[i]);}}//random select ///  if(randomDraw == 0){//randomfor(uint8_t j=0; j<20; j++){delay(500);for(uint8_t i=0; i<8; i++){tx_data[7] = 0;Serial.printf("%c", tx_data[i]);}delay(500);randomDraw_num = random(1,57);//Serial.println(randomDraw_num);right_num = randomDraw_num % 9;down_num = randomDraw_num / 9;for(uint8_t i=0; i<8; i++){tx_data[5] = randomDraw_num; //random numtx_data[7] = 1;Serial.printf("%c", tx_data[i]);}}}//Serial.printf("KEY: %d,%d,%d,%d,%d",right, down, ok, clear, randomDraw);}

5、部分参考资料

#显示屏官网:http://www.viewtech.cn/ 型号SDWB070T84N

6、注意事项

#串口屏固件使用sd卡下载
#串口屏连线参考HardwareConnection.pdf
#串口屏开发工具是VGUS2021开发工具.exe
#图标生成使用自带的icon生成工具
#nodemcu注意连线

完整可运行项目地址带串口屏固件

技能梳理3@NODEMCU+串口屏+随机抽签+物理按键相关推荐

  1. 技能梳理7@stm32+OLED+flash掉电保存+按键

    学校违纪分数记录,按键,1.3寸OLED显示,数据掉电保存 1.项目简介 2.实现逻辑 #如上图为显示屏显示内容 #三个物理按键,一个是选择对哪一项进行控制,两个是加减对应项的分数 #控制范围±10, ...

  2. 谷歌:触屏不能代替物理按键

    时间:2007年5月场合:在一份Android的规格文档中话语:触屏是不可能完全代替物理按键的后续:G1手机是一款有着全键盘的手机,后续的真正的G2(不是HTC的)也是有键盘的结果:谷歌似已完全放弃了 ...

  3. 技能梳理6@NODEMCU+BH1750+DS18B20+DHT11+PWM电机+ONENET

    智慧鱼缸,检测土壤湿度,检测室内温湿度和光照,检测鱼缸水位,检测鱼缸温度,各种蜂鸣器报警(水温超20-24)和控制舵机(步进电机),控制两个水泵,一个需要是从植物里面抽水到鱼缸,另外一个是供养氧作用, ...

  4. 陶晶驰stm32_陶晶驰HMI3.5寸串口屏的详解之梳理F4总结系列准备篇(二)

    基于stm32的串口屏教程.用过的人都说好,哈哈哈,减少了我们很多不太必要的麻烦步骤. 程序资料包CSDN下载地址:https://download.csdn.net/download/qq_3835 ...

  5. ESP32:使用TFT_eSPI库驱动TFT串口屏

    目录 实验条件 软件部分 TFT_eSPI库的安装 配置文件 硬件部分 esp32 LCD串口屏 接线方式 实验部分 参考文章 本文使用 esp32结合 TFT_eSPI库点亮了一块 ILI9341驱 ...

  6. 淘晶驰串口屏入门(七)数据记录控件、文件浏览器控件、文件流控件

    一.数据记录控件 1.注意data+数字开头的为数据记录控件 2.只有x3和x5系列的串口屏支持数据记录控件,k0,t0和t1系列不支持 3.使用data0.insert方法向数据记录控件添加记录 4 ...

  7. 串口屏与6050_重磅来袭串口触摸屏,一个过来人的经验

    我想,技术文档打破传统写法,是可以写得跟小说一样引人入胜有吸引力的,我的文笔会比较轻快明丽.浅显易懂,甚至扯淡. 以前的几篇文章写得比较烂,我也不去修改了,此文开始: 当然,我也不是专业作家,不能一蹴 ...

  8. python窗口动态实时显示时间_苏州2.8寸串口屏厂家:切管机触摸屏实时动态显示切割过程...

    原标题:苏州寸串口屏厂家:切管机触摸屏实时动态显示切割过程 随着我国不锈钢管材的产量和消费的快速增长,管材加工技术也随之迅速发展,尤其是切管机的问世,更是给管材加工带来了前所未有的质的飞跃. 切管机在 ...

  9. arduino并口屏_Arduino 驱动串口屏(入门级)

    Arduino 以其易用性及强大的程序控制功能已经迅速吸引了国内外众多电子爱好者和产品开发人员的眼球,人们纷纷试水,用它来制作个性化的小产品,同时随着开源硬件成本的不断下调,使用Arduino开发商用 ...

最新文章

  1. 元素的   is_enable()、is_displayed()和is_selected()
  2. 制作一个简易的QQ×××
  3. oracle锁表查询_专业解决 MySQL 查询速度慢与性能差
  4. 为什么不敢和别人竞争_内心很脆弱,不敢和人竞争。该怎么办?
  5. CodeTank iOS App Technical Support
  6. OJ1068: 二进制数(C语言)
  7. Smarty3——foreach
  8. Atitit 游戏的通常流程 attilax 总结 基于cocos2d api
  9. mysql的哈希函数_mysql – 密码哈希函数抛出错误1146
  10. Android—API中文文档
  11. 【数字信号处理】离散时间信号 ( 离散时间信号 与 连续时间信号 关系 | 序列表示法 | 列表法 | 函数表示法 | 图示法 )
  12. java二维码生成工具,可直接用于生产
  13. Docker容器化技术
  14. 【百度地图】城市中心点坐标
  15. maven配置私服地址(公司私服)记录
  16. 数据结构与算法之hashmap散列表查找
  17. 有效解决solidworks无法获得下列许可solidworks standard。使用此许可文件不支持此版本(-21.126.0)
  18. 运营商告警数据根因分析方案和代码示例
  19. C++ 如何操作mysql
  20. python的opencv使用总结

热门文章

  1. [转载]软件测试修炼之道
  2. 数据库授权与收回 4.13数据库课程
  3. ShaderLab 初学笔记
  4. WeLink智慧校园解决方案,支撑校园多场景智能应用
  5. 【实战案例】表情分类人脸表情识别
  6. 证途网可信吗,艰辛的一建之路
  7. Verilog时钟分频模块设计
  8. 麒麟v10通过yum安装mariadb
  9. abel 登陆不了_封印者登录不了怎么办 三大登陆难题解决
  10. 中级职称聘用计算机模块,中级职称计算机模块有关问题