×

带有RGB灯和传感器的DIY磁性桌上曲棍球

消耗积分:0 | 格式:zip | 大小:0.58 MB | 2022-11-07

分享资料个

描述

 

你一定打过空气曲棍球!向游戏区支付几美元,然后开始进球以击败您的朋友。是不是很上瘾?你一定想过在家里放一张桌子,但是,嘿!有没有想过自己做?

 
pYYBAGNkf1-AAlTXAALJHIas2Ag807.jpg
 

我们将制作我们自己的自动化 DIY 磁性桌上曲棍球。我们将添加一个微控制器、障碍物检测传感器来计算目标并跟踪时间。无需跟踪目标,传感器和 evive 会在我们享受比赛和专注于球的同时做到这一点。RGB LED 为这款酷炫的 DIY 创作增添了鲜艳的色彩。

真的,我的朋友和同事玩了好几个小时。这是非常有趣。

制作磁性桌上曲棍球需要什么?

即使是孩子或老人,这也可以在家里很容易地完成!我们需要以下东西:

  • 厚纸板(我们使用 5 毫米瓦楞纸)(1 平方米)
  • 硬纸板(应该很平整)
  • 胶枪和胶枪棒
  • 彩色纸(最好用3种不同颜色的纸打竞技场和两个对手)
  • 统治者
  • 永久标记
  • 裁纸器
  • 几个全引脚
  • 胶水
  • 4 个强力钕磁铁(约 10 毫米直径和 4 毫米高)
 
pYYBAGNkf2KAXhj5AAGDs6iYWX8401.jpg
组件列表
 

我们需要一些电子设备来自动化计时、灯光和进球得分(非常容易,真的非常容易)

  • evive(或带有 LCD/TFT 屏幕的 Arduino)
  • 2 个红外传感器
  • 跳线
  • 5V RGB LED 灯带(evive 的内置锂离子电池可提供 5V 或 12V RGB LED 灯带电源适配器/6 节 AA 电池)

第 1 步:制作桌上曲棍球框架:A 部分

我们需要从厚纸板上剪下以下几块

  • 底座支撑 它是一张 50 厘米 X 35 厘米的矩形板
 
poYBAGNkf2mAdr9FAALZxLJhbMk906.jpg
 
  • 两个较长的侧面安装件 尺寸为 50cm X 15cm 的矩形板
 
poYBAGNkf2-AVtwJAAIoinFBkG8016.jpg
 
  • 两个较短的侧面安装件 尺寸为 36 厘米 X 15 厘米的矩形板 尺寸为 28 厘米 X 4 厘米的矩形切口,距离中间较长的边缘 7 厘米
 
pYYBAGNkf3KAMBERAALhaWjSiMY452.jpg
 
  • Top Arena 床的两个支架尺寸为 49 厘米 X 9 厘米的矩形切口将粘在底座支架上的较长侧支架上。
 
pYYBAGNkf3uAeLITAALaFot-TrM724.jpg
 
  • Top Arena 床的中间支撑 尺寸为 34 厘米 X 9 厘米的矩形切口平行地粘在底座支撑上的较短的侧面安装件上,这将使隔板分成两半。这将限制玩家进入对方一侧(稍后解释),并为竞技场床提供中路支持
 
poYBAGNkf36AYIbvAAHI3hj0lP0639.jpg
 

 

 
pYYBAGNkf4GAARjUAAH8FNvdAMQ665.jpg
 

现在我们将在两个较短的侧面安装件上制作插槽,我们可以从中插入演奏手柄,并在一端强力粘上磁铁(稍后我们将制作这个手柄)

我们将使用尺寸为 35cm X 38cm 的硬纸板,它应该非常平整,不会很容易变形或压缩。但是首先使用上面的厚纸板制作框架,然后重新检查合适的尺寸,您可以将 Arena Bed 放置在两个支架和中间支架的顶部,因为有时您在用胶枪粘合后最终会出现不同的排列/放置。

 
poYBAGNkf4WABYhRAALyoW5-bPw730.jpg
 

 

 
pYYBAGNkf42AQOcEAAwidSalDnk440.jpg
 

 

 
poYBAGNkf5CAOlOxAAKM9eLze0U267.jpg
 

第 2 步:制作桌上曲棍球框架:B 部分

所以现在我们的框架和竞技场已经准备好了。我们用厚厚的绿色纸盖住了竞技场床。

现在我们需要为球门柱和一个滑块制作插槽,以便在进球后将球取出。小心从我们刚刚制作的框架中进行测量,因为总会有一点点变化。我们将切割以下纸板:

  • 球门槽:4 个厚纸板矩形切口,尺寸为 5 厘米 X ~11.5 厘米(这将留下约 12 厘米的球门柱)我们将它们垂直粘贴在竞技场床的顶部,与侧支撑支架对齐。中间留下的空间将作为球门柱。
  • 滑块将由大约 ~36 厘米 X 5.5 厘米(或 6 个)的任何纸板制成,我们需要小心地将这个小块胶粘在竞技场床下方(~1 厘米)稍微倾斜的位置,以便球可以滚动到侧面,如图所示图(我们保持1cm的高度差使其倾斜,球很容易滚动)。我们将其保持在下方,以便即使是快速移动的球也不应该回到场上。请在切割前测量并相应调整尺寸。将一张白色/深色纸贴在滑块上,与深色/浅色球相对,这是传感器检测球传球所必需的。(在下一步中解释)
  • 接球器 一旦球滑块工作正常,我们将在侧支撑支架上制作矩形槽,以将球从滑块中取出。我们制作了两个小接球器,我们将它们粘在滑块两侧的矩形槽前面。
  • 球门柱顶盖(~6.5 厘米 X 36 厘米) 我们将在球门柱和滑块的顶部放置一个顶盖。它将被放置在顶部,由更短的侧面安装支架和两个矩形切口构成球门柱。从我们刚刚制作的框架测量所需的尺寸。从侧面轻轻地制作一个圆弧。现在不要粘这个。(在下一步中显示)
 
pYYBAGNkf5aAWRZiAAGkjYIgZ6o575.jpg
 

 

 
pYYBAGNkf5qALEKbAAW2ebJi6eE688.jpg
 

第 3 步:集成传感器以在进球后检测球

谁想记下进球得分?我们将使用基本的红外传感器和微控制器使其自动化。我们必须在靠近边缘的球门柱顶盖内侧安装两个红外传感器(从边缘留出一些空间)。我们将不得不弯曲传感器上的黑色和透明 LED 使其垂直指向(如图所示)。请检查球是否可以在不接触传感器的情况下轻松滚出。

 
pYYBAGNkf52Abd1AAACKk1_sM48422.jpg
 

 

 
pYYBAGNkf6OAa29BAALq6VvKVqs332.jpg
 

现在我们将使用可以从这里下载的evive 菜单。导航到Pin State Monitor菜单选项,我们将使用它来校准我们的传感器。进球后,球将从滑块中传出。传感器上有一个小电位器,需要校准才能检测到球。我们的球是深红色的,所以我们在 Slider Sheet 上贴了一张白纸来区分。转动电位器一端,然后慢慢转动,同时测试是否检测过球。

如果您不想添加计时器和传感器来计算目标,您可以跳过此步骤并进行编程。

第 4 步:制作磁力棒和磁棒

现在我们将制作四个等腰直角三角形纸板,边长为 7 厘米 X 7 厘米,用于击球手。你可以试试你想做的尺寸。在中间放置一块钕磁铁后,两个三角形切口将彼此粘在一起。[当球越过顶部时,我们在两个之上添加了第三个]

 
poYBAGNkf6qAYpzrAAYOnwk4PkU034.jpg
 

 

 
poYBAGNkf7KAY5muAAdxJcTYS2w873.jpg
 

 

 
pYYBAGNkf7WADaAnAABdzs6BlFg903.jpg
 

此外,我们将制作两根带有磁性尖端的棍子,以从竞技场床下方控制前锋。一根非常坚固的钕磁铁粘在棍子的尖端。后来我们用厚厚的红色和蓝色纸盖住了棍子。

这根棍子将通过磁力拖动保持在竞技场顶部的前锋。

第 5 步:装饰曲棍球桌

我们在两侧贴上红色和蓝色,并画了半线,并在两侧的球门柱附近标记了一个矩形区域。在每场比赛开始时,球将被放置在其中。

喜欢在深夜聚会时与朋友一起玩游戏吗?它真的很有趣。有RGB LED。我们放置了 12V RGB 灯,在关闭房间照明的情况下给人以惊人的感觉。在所有侧面,我们都粘贴了由 evive 的内置电机驱动器使用 3 个通道控制的 LED 灯条。整理好电线或 LED 灯条和传感器,小心地将其带到靠近顶部球门柱盖的框架外。

 
pYYBAGNkf7qAcl3wAAMrCMKLyTw598.jpg
 

 

 
poYBAGNkf72AUh-cAAM0pzKzjhU500.jpg
 

第 6 步:使用 evive 连接传感器和灯

我们需要连接以下事物才能复活:

  • 两个 IR 传感器由于我们已将传感器安装在球门柱顶盖的底部,并整理好电线将它们放在 Ball Catcher 的另一侧,现在我们将连接三根电线以连接 evive,即 GND 到地,VCC 到 5V和信号到 2 和 3。
  • RGB LED 灯条 该灯条有四根电线。正如我们在威廉希尔官方网站 图中看到的,“+”在 evive 上连接到 VSS 或 VVR。'R'、'G'和'B'在即插即用接口中连接到电机端子。
  • 由于我们使用了 12V RGB LED 灯条,我们将连接一个 12V DC 适配器或 3 节锂离子电池或 6 节 AA 电池。
 
poYBAGNkf8OAU7BnAAPhZ31dHls549.jpg
 

 

 
pYYBAGNkf8mAA5b9AAnYaa0K_g4837.jpg
 

第 7 步:在 Scratch 和 Arduino 中编程:算法流程图

现在,是时候编程了。有六件事:

  • 计时器:根据游戏玩法,每场比赛将有三分钟(或根据您的选择),并且 evive 会跟踪它。在 evive 上按下轻触开关 1 后,计时器将启动。
  • 检测触觉按钮:一旦任何玩家在 evive 上按下内置的触觉按钮 1,游戏就会开始。
  • 检测进球的传感器:我们需要在任何一方进球后通过 IR 传感器检测球在滑块中的传递。该程序将跟踪总目标。
  • RGB LED:游戏开始时 LED 将呈白色。任何进球后,LED 都会根据进球者的不同而发出红色/蓝色的光。剩余 5 秒时 LED 将开始闪烁。
 
poYBAGNkf82AfDbgAASL1zXTRoo703.jpg
 

上面显示的是游戏的最终算法。

第 8 步:在 Scratch 和 Arduino 中编程

该程序可以用 Scratch(因为孩子们喜欢图形编程)或 Arduino 制作。

Scratch 是一种免费的编程语言,您可以在其中创建自己的创新和交互式项目、故事、游戏和动画。使用 mBlock(基于 Scratch 2.0)。

如果您想要安装 Scratch 和 evive 扩展的步骤,请单击此处。

如果您想了解有关 Scratch 的更多信息,请单击此处。

为了简化 Scratch 中的代码,创建了 10 个功能块(如果您使用的是 Arduino,则功能块):

  • 初始化:初始化初始游戏设置和变量。
 
pYYBAGNkf9CAPyJDAAAqzQrDKA8153.jpg
 
  • 具有三个输入(红色、绿色和蓝色)的 LED:根据输入打开 LED。
 
poYBAGNkf9OASudKAAA2pj5uP08915.jpg
 
  • 显示规则:用于在游戏开始时在 TFT 屏幕上显示规则。
 
poYBAGNkf9WAQY8WAABFvyMGRPE921.jpg
 
  • 匹配初始化:初始化匹配和匹配变量。
 
poYBAGNkf9eABgU8AABrBna6EsQ280.jpg
 
  • 显示计时器:在比赛进行时在 TFT 上显示时间。
 
pYYBAGNkf9uAG4nKAAA38u09DyE567.jpg
 
  • 比赛:比赛期间发生的所有事情都在这里,就像检测进球一样。
 
poYBAGNkf92AJwu0AAC06x1zBQ0023.jpg
 
  • 显示分数:在比赛期间和之后显示分数。
 
poYBAGNkf9WAQY8WAABFvyMGRPE921.jpg
 
  • 得分平局:比赛结束后,此块将 LED 变为绿色,表示平局。
 
poYBAGNkf-KAKgonAACALHQ98q8127.jpg
 
  • Blue Wins:该方块在比赛结束后将 LED 变为蓝色,表示 Blue 赢得了比赛。
 
pYYBAGNkf-SATZSrAACEHsmJW3E197.png
 
  • Red Wins:该块在比赛结束后将 LED 变为红色,表示 Red 赢得了比赛。
 
pYYBAGNkf-mAe4ZwAACESygjh8g081.jpg
 

所有模块都集成到遵循上一步所示流程图的主代码中。

 
poYBAGNkf-uAfbpMAABpglomiXU246.jpg
 

下面给出的是 mBlock 和 Arduino 中的脚本。

第 9 步:游戏玩法

  • 每场比赛为 3 分钟,掷骰决定谁先发。
  • 每位玩家将获得一个磁力撞击器和一根带磁头的棍子。棒将从更短的侧面安装中的插槽插入。它将位于竞技场床下方并控制放置在竞技场顶部的前锋。
  • 球将在比赛开始时或每次进球后放置在矩形区域内,与进球者相对的一侧。
  • 获胜者将是得分更多的球队,否则比赛将被平局。
 
pYYBAGNkf-6AfqhQAAD8CZUXtgM676.jpg
 

 

 
poYBAGNkf_KAH69eAAEFQ02kMjM765.jpg
 

让我们玩!

 

没有什么可说的了!尽情享受美妙的桌上曲棍球吧。

它需要对球的高度集中以及眼睛和手的协调。

欢迎在下面的评论中提出更多想法。

在此处了解和探索有关 evive的更多信息

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'带有RGB灯和传感器的DIY磁性桌上曲棍球',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);