×

Nyctograph机器开源分享

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-27

分享资料个

描述

也许你知道刘易斯卡罗尔的爱丽丝梦游仙境。或者你至少还记得 Matrix 电影中的白兔:那是对爱丽丝梦游仙境的参考。

嗯……事实证明,刘易斯卡罗尔也是一位数学家和发明家。

他发明了什么?Nyctography,一张包含网格的卡片,用于指导在黑暗中书写笔记,使用特殊的字母表。

poYBAGNtoWWAfzK2AAAoBIFfEOI457.jpg
夜写字母
 
“为什么不发明一个方形字母表,只在角落使用点,在边上使用线条?” 我很快发现,为了使文章易于阅读,有必要知道每个方格的开始位置。我通过规则确保每个方形字母都应在 NW 角包含一个大黑点。...... [我] 成功地让 23 个 [方形字母] 与它们要代表的字母有明显的相似之处。”

如今,您当然可以在黑暗中用手机轻松书写,甚至使用文本转语音,但我喜欢(几乎)无用的机器和结合文学和技术的发明——Rayuelomatic 克劳斯纳机器、俳句阅读器豪尔赫·路易斯·博尔赫斯动画电子——所以我决定制作 Nyctograph Machine,这是一种小型设备,能够将我们的字母表翻译成 nyctography 以打印横幅。

poYBAGNtoWqAAsaJAAEzsYFqO0o323.jpg
定制旋钮
 

它是如何工作的?

使用滚轮可以输入最多 16 个字母的单词或小句子。当光标到达行尾时,单词或短语被替换加密,然后使用热敏纸打印。

为什么限制 16 个字母?嗯...最初的 Nyctography 卡有 8x2 单元,LCD 屏幕有 16 个字符,“白兔”和“El Conejo Blanco”(西班牙语翻译)都有......所以......就是这样。

pYYBAGNtoW2ABx6IAAB9bAUJ6rI485.png
3d案例模型
 

技术细节

我已将每个“nyct”字母导出为 bmp、104x104 像素、1 位,然后将它们全部分配给数组。我从 Arduino Nano 开始,但字母 H 周围的内存不足,所以我搬到了 Arduino Mega。

 

pYYBAGNtoW-AO6chAABXntYNAzs393.png
使用 LCD 助手创建字母字节数组
 

带按钮的旋转编码器是加载字母的理想选择。

代码具有调试模式,可打印整个字母表以供参考。

int alphaPrint=1;

所需的库是:

#include 
#include 
#include "Adafruit_Thermal.h"
#include "SoftwareSerial.h"

连接

LCD 16 x2 SDA to A4, SCL to A5, VCC and GND
Printer Yellow cable to D12 and Green to D11
Rotary Encoder SW to D5, Signals to D6, D7
Led + to D8 and GND

Nyctograph Machine PDF 用户指南

poYBAGNtoXKAe2-EAAAjXADNX7E268.jpg
Nyctpgraph PDF 用户指南
 

 

 


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

评论(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:'Nyctograph机器开源分享',//标题 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);