AI智能
改变未来

Arduino Nano分数显示器(附件)

@目录

一整套的简易计分器

Android端地址
掌控板端
计算机端

Arduino Bit端

Arduino Nano都支持(应该)
实验物品:逐日套件中的Arduino Bit可编程主板、蓝牙(传从)模块、点阵屏显示、数码管(显示也可为OLED屏幕)

懒得去网络上找图

咳咳,图片有限使用

创作故事

来源于乒乓球……
经常和家里的小伙打打球,
来,好好打
latter……
几比几了?或者 轮到谁发球了?
于是网络上搜索了一波,并没有我想要的计分器
于是自己做一个(然后没想到做起了一套)

Arduino语言制作

也可以用Mind+和Mixly编写,这里我用Mixly上支持的Arduino语言编写与使用
注释基本都在代码块里

初始化

String val;SoftwareSerial mySerial1(10,11);volatile int player1soce;volatile int player2soce;TM1650 tm_4display;Matrix myMatrix(A0,A1);uint8_t  LEDArray[8];const uint8_t matrix_img_103060ffff603010[8] PROGMEM={0x10,0x30,0x60,0xff,0xff,0x60,0x30,0x10};const uint8_t matrix_img_080c06ffff060c08[8] PROGMEM={0x08,0x0c,0x06,0xff,0xff,0x06,0x0c,0x08};const uint8_t stop[8] PROGMEM ={0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x00};void setup(){val = \"\";Serial.begin(9600);mySerial1.begin(38400);player1soce = 0;player2soce = 0;Wire.begin();tm_4display.init();myMatrix.begin(0x70);}

蓝牙获取

没有蓝牙使用的Arduino说明或者没找到可方便调用的库,所以是尝试着用串口获取,最后成功了

if (Serial.available() > 0) {val = Serial.readString();mySerial1.print(val);}if (mySerial1.available() > 0) {val = mySerial1.readString();Serial.println(val);}

数码管显示

tm_4display.displayOn();//启用tm_4display.clear()://清屏

显示格式(四位数码管只能显示四位)
所以只能是“1-1”或“10-9”或“1010(意思是10-10)”【注:“-”表示“比”】

if (player1soce + player2soce <= 19) {tm_4display.clear();tm_4display.setDot(1,false);tm_4display.displayString(String(player1soce) + String(\"-\") + String(player2soce));} else {tm_4display.clear();tm_4display.displayString(String(player1soce) + String(player2soce));tm_4display.setDot(1,true);}

点阵屏显示

用到Mixly的Mixly内置“—>”“<—”图像

发球者

myMatrix.clear();//启用点阵屏//右(方向视实际应用)发球if (((String(val).equals(String(\"17\")) || String(val).equals(String(\"27\"))) || (String(val).equals(String(\"37\")) || String(val).equals(String(\"47\")))) || ((String(val).equals(String(\"57\")) || String(val).equals(String(\"67\"))) || String(val).equals(String(\"7\")))) {memcpy_P (&LEDArray, &matrix_img_103060ffff603010, 8);for(int index_i=0; index_i<8; index_i++){for(int index_j=0*8; index_j<0*8+8; index_j++){if((LEDArray[index_i]&0x01)>0)myMatrix.drawPixel(index_j, index_i,1);elsemyMatrix.drawPixel(index_j, index_i,0);LEDArray[index_i] = LEDArray[index_i]>>1;}}myMatrix.write();}//左(方向视实际应用)发球if (((String(val).equals(String(\"18\")) || String(val).equals(String(\"28\"))) || (String(val).equals(String(\"38\")) || String(val).equals(String(\"48\")))) || ((String(val).equals(String(\"58\")) || String(val).equals(String(\"68\"))) || String(val).equals(String(\"8\")))) {memcpy_P (&LEDArray, &matrix_img_080c06ffff060c08, 8);for(int index_i=0; index_i<8; index_i++){for(int index_j=0*8; index_j<0*8+8; index_j++){if((LEDArray[index_i]&0x01)>0)myMatrix.drawPixel(index_j, index_i,1);elsemyMatrix.drawPixel(index_j, index_i,0);LEDArray[index_i] = LEDArray[index_i]>>1;}}myMatrix.write();}

设备(游戏)状态

// 提示暂停或未开始if (String(val).equals(String(\"1156\"))) {memcpy_P (&LEDArray, &stop, 8);for(int index_i=0; index_i<8; index_i++){for(int index_j=0*8; index_j<0*8+8; index_j++){if((LEDArray[index_i]&0x01)>0)myMatrix.drawPixel(index_j, index_i,1);elsemyMatrix.drawPixel(index_j, index_i,0);LEDArray[index_i] = LEDArray[index_i]>>1;}}myMatrix.write();player2soce = 0;player1soce = 0;}// 提示结束if (String(val).equals(String(\"31156\")) || String(val).equals(String(\"11156\"))) {myMatrix.scrollMessage(\"END\",200);}// 提示断开if (String(val).equals(String(\"12\"))) {myMatrix.scrollMessage(\"Colect lost\",200);}

命令控制

分数加减清零等

if (String(val).equals(String(\"17\")) || String(val).equals(String(\"18\"))) {player1soce = player1soce + 1;}if (String(val).equals(String(\"27\")) || String(val).equals(String(\"28\"))) {player1soce = player1soce - 1;}if (String(val).equals(String(\"37\")) || String(val).equals(String(\"38\"))) {player2soce = player2soce + 1;}if (String(val).equals(String(\"48\")) || String(val).equals(String(\"47\"))) {player2soce = player2soce - 1;}if (String(val).equals(String(\"57\")) || String(val).equals(String(\"58\"))) {player2soce = 0;}if (String(val).equals(String(\"67\")) || String(val).equals(String(\"68\"))) {player1soce = 0;}player1soce;}

本编码:点阵屏接口:A0A1,数码管接口:A4A5,蓝牙模块(蓝牙数据传-从):D10D11;逻辑一。运行主要在手机端,这部分主要是显示数据

编码是要注意顺序,不然有极大可能无法正常调试(上传)

这样程序就完成了

这个程序不难,写不了多少
来看一下效果



在视频的某一段

计分器套装使用

实际文件代码可能与文章略有所不同
整套应用(已打包)
整套应用(代码)
网页版的正在制作
低级项目……
批注不足请留言哈~,尽量会去添加

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Arduino Nano分数显示器(附件)