本帖最后由 hockel 于 2021-1-5 19:56 编辑
【一起DIY】抢十秒器
前言
我们在逛商场的时候,有没有发现:有一些商家买了一台“挑战10秒”的机器,如果你来本店消费,正好按到10秒,就算挑战成功了,只要有一个人挑战成功,那同行的全部免单。在某宝搜了一下价格,不搜不知道,一搜吓一跳!这个小小的“挑战10秒”机器,最便宜的机器也要180大洋。
今天呢,陶老师就致敬经典,把‘挑战十秒’机器的价格打下来!让我们一起DIY一个抢十秒机器。
准备阶段
设计抢十秒器图纸
1、打开LaserMaker-→ 选择"一键造物"功能-→选择“圆角盒子”具体设置如下:
2、将一些传感器的开口预留一下。如下图所示:
3:进行激光切割
电路连接
作品搭建
①:组装TM1637和数字按钮(这里的TM1637的针脚可能会挡住,我用焊烙铁将针脚反置了一下。)
②:组装主控板
③:按照我们的电路连接图进行传感器的接线
④:完成组装
程序设计
我们这里需要用到TM1637模块,mind+中内置的积木块中没有,我们需要进行用户库的添加。选择主控板--“Arduino nano ”,选择"用户库"搜索“TM1637”加载即可。具体操作如下:
主程序编写:
代码:
/*!
* MindPlus
* nano
*
*/
#include <SevenSegmentTM1637.h>
#include <SevenSegmentExtended.h>
// 动态变量
volatile float mind_n__1, mind_n_flag, mind_n__2;
// 函数声明
void DF_KaiShiJiShi();
void DF_TingZhiJiShi();
void DF_XianShiJieGuo();
// 创建对象
SevenSegmentExtended tm1637(9,8);
// 主程序开始
void setup() {
tm1637.begin();
}
void loop() {
if (digitalRead(2)) {
DF_KaiShiJiShi();
}
if (digitalRead(3)) {
DF_TingZhiJiShi();
}
DF_XianShiJieGuo();
}
// 自定义函数
void DF_KaiShiJiShi() {
tm1637.printTime(0,0,0);
mind_n__1 = millis();
mind_n_flag = 1;
}
void DF_TingZhiJiShi() {
if ((mind_n_flag==1)) {
mind_n__2 = millis();
mind_n_flag = 2;
}
}
void DF_XianShiJieGuo() {
if ((mind_n_flag==1)) {
tm1637.printTime(((millis() - mind_n__1) / 1000),((((int)(millis() - mind_n__1)) % ((int)1000)) / 10),0);
}
else {
tm1637.printTime(((mind_n__2 - mind_n__1) / 1000),((((int)(mind_n__2 - mind_n__1)) % ((int)1000)) / 10),0);
}
}
作品演示:
声明一下:这里为了减少动图大小,把视频转成GIF图时,减少了一些帧数。原视频中:4位数码的显示还是很流畅的
总结
好了,到这里我们的抢十秒机器就制作完成了,是不是很简单呢?更多项目制作教程欢迎浏览个人博客:www.hockel.club
|