×

Arduino沙漏计时器

消耗积分:2 | 格式:zip | 大小:2.08 MB | 2023-07-06

分享资料个

描述

不久前,我从 eBay买了一个3 美元的沙漏形状闪烁 LED DIY 套件。使用“Case - Bottom.stl”的支持。我使用了 0.2mm 的层高和 20% 的填充。

使用 2.5 毫米钻头钻出安装孔,并使用 3 毫米丝锥创建螺纹。

构建沙漏计时器

1a. 首先,您需要在套件随附的 PCB 上钻 3mm 安装孔。(距离底部 0.95",距离左右边缘 0.225")。

poYBAGONVZaAOYcRAAFzdvhbInI830.jpg
 

2a. 使用 6mm 钻头将每个 LED 孔的背面沉入孔中。这使得更容易将 LED 居中。如果您用钻头压得太紧,请手动执行此操作。

2b. 将所有 LED 放入各自的孔中,确保方向正确。

2c. 使用 6mm M3 螺钉将威廉希尔官方网站 板拧到底座上。

2d。再次用力将每个 LED 推到前面各自的孔中。

pYYBAGOS6waAFS1VAAFd9HOj8LQ394.jpg
 

3a. 焊接并修整 LED

poYBAGOhZZSADUpbAAGvhuKHKJo772.jpg
 

4a. 使用两个 16 针 DIL 插头创建 16 针电缆。

4b. 测试电缆。

4c. 将电缆的一侧焊接到 PCB 上。

pYYBAGOhZZaAbn01AAH3Bv4IIKU110.jpg
 

5a. 使用 Dremel 或钢锯切割旋转编码器的轴,留下约 4 毫米的轴。

5b. 将旋钮压入旋转编码器。

poYBAGOhZZqAcPzIAABxZyTwVE4604.jpg
 

6a. 如果您希望将 PCB 商业化生产或自己制作,则已包含定制 PCB 板的 Eagle 文件。我用墨粉法来做我的。

6b. 组装威廉希尔官方网站 板。ATMega328 和 16 针连接器都使用 IC 插座。

6c. 卸下您在 2c 中使用的 6mm M3 螺丝,并用 M3x5+6mm 公母垫片替换它们。

6d. 使用 6mm M3 螺钉将新板固定到垫片上。我在板上打了 4mm 的孔并使用了垫圈。这允许调整威廉希尔官方网站 板。这可能需要正确对齐旋转编码器旋钮。

poYBAGOjzCWAfSSlABBS-ygJYpY242.jpg
 

 

 

7a. 插入 3.7V 400mAh LIPO 电池和迷你摇臂开关并接线。

poYBAGOj3eGAS8MAAAEs1GFxeXM598.jpg
 

编程

ATMega328 在 3.7V 电源上运行 8Mhz 晶体。我使用自制的Arduno UNO 板对 ATMega328 芯片进行编程。该板有一个用于 ATMega328 的 ZIF 插座,允许我通过 USBTinyISP 板或 FTDI 板更改晶体、电源电压和对芯片进行编程。

从附加的Boards.txt文件中剪切文本并将其添加到 Arduino IDE 中的 Boards.txt 文件中。您将在 (%USERPROFILE%\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.1\boards.txt) 中找到此文件。

在 Arduino IDE 中

  • 选择“工具 - 开发板 - Arduino Uno (8Mhz)”
  • 选择“工具-程序员-USBtinyISP”
  • 将 USBtinyISP 插入 ATMega328(应该运行 8Mhz 晶体)
  • 选择“工具——烧录bootloader”
  • 在 IDE 中加载草图
  • 选择“草图 - 使用程序员上传”
  • 从您的开发环境中移除 ATMega328 并将其放在 PCB 上

我发现 ATMega328 上的 EEPROM 在 3V3 上运行时没有读取或写入,但在 5V 上运行正常。如果有人找到解决方案,请告诉我。


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

评论(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:'Arduino沙漏计时器',//标题 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);