@目录
一整套的简易计分器
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;逻辑一。运行主要在手机端,这部分主要是显示数据
编码是要注意顺序,不然有极大可能无法正常调试(上传)
这样程序就完成了
这个程序不难,写不了多少
来看一下效果
在视频的某一段
计分器套装使用
实际文件代码可能与文章略有所不同
整套应用(已打包)
整套应用(代码)
网页版的正在制作
低级项目……
批注不足请留言哈~,尽量会去添加