首页
创客活动
创客项目
创客教育
Pinoblock
登录
注册
中文
English
Posted by:
andersonby
7 years, 2 months ago
无聊实验室
不不不,比想象中要更加无聊
无
聊,究竟可以有多无聊。思维堵塞,四肢疲乏,囚于被褥之间,让时间悄悄流逝。别傲娇了,这根本不配称作无聊。
为了探寻创客的技能在无聊界能够发挥多大的用途,我们成立了无聊实验室,室长是目前无聊界脑洞最大的无聊卿同学。在无聊实验室,我们大胆无聊,理性无聊,纯粹无聊。
同时我们也在召集全世界自认为最无聊的无聊人士加入我们的
无聊实验室微信群
,大家可以抛出任何无聊的想法,
如果我们认为你的想法足够无聊又有一定的技术难度,无聊客会帮你实现的
。微信群二维码请拉到文章最下方查看。
无聊实验室,给您无限的无聊新体验。
在纯粹中品味无聊
作
为无聊实验室的001号实验,无聊卿设计制作了一台红外机械式翻页器。用途是课堂展示时辅助翻ppt用的。闲话少说我们看一下最终效果。
最终效果
按动手中的红外遥控器,原来只需要在键盘上动动手指就能翻页的功能,现在可以隔空操纵了!从手指按键盘变为冰棒棍按键盘,真是让人更方便了呀!
无聊实验室
教学开始啦
一、原材料
原材料总是需要一些的,例如说arduino板。本人买的大概是最捉急的uno板。没什么关系啦我们的实现功能其实简单到不需要考虑板子的潜能。这种uno板在淘宝上就有卖,大概30多元一块。建议购买arduino套件,毕竟附件会全一些,方便日后在本工作室的交流。
及其附属软件。(360管家输入arduino,百度搜索arduino均可下载)
当然还有红外部分。一个简单的红外接收器,以及它的遥控板。一般套件中都有涉及。请大家相信遥控器的性能不要动不动就把后壳卸下来。
舵机。一种神奇的可以控制转动角度的马达。机械性能不是很高,角度也不是很精准。适合小手工和其他工程的初步调试。套件中一般只有一个,建议多买几个。只是建议。
面包板(小块的更可爱一点)。它的用途是辅助连线的。任意一列竖着的五个格都是连在一起的。上下是分开的。
以及其他附属材料如冰棍棒,胶水若干。
跃跃欲试了吗?下面是红外的初始化。
二、红外初始化
红外遥控器可以发出红外信号,由红外接收器接收。我们可以记录红外遥控器接收到的16进制数字,找到遥控器按键和发出的数字信号对应关系。
将uno板按下面的方法连线。(红外感应器的〇线是在中间的……我因此误烧了一个…………)
之后打开心爱的arduino编译软件并打入以下代码。
#include <IRremote.h>
int RECV_PIN = 2;//这就意味着我们需要把红外的信息端连在2号口
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 初始化红外接收器
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);//以16进制换行输出接收代码
Serial.println();//为了便于观看输出结果增加一个空行
irrecv.resume(); // 接收下一个值
}
}
是时候烧录代码了(或者说,上传),当然确保您根据您的板子选择了正确的选项。
烧录。
烧录完成后板子会闪一闪。大概就差不多了。打开串口监视器,准备接收。
随便用遥控器对着接收器按几个键。如果显示了一些类似FF26CC这样奇奇怪怪的十六进制数字,说明您已经几乎成功完成红外初始化过程了。如果没有显示请仔细查看,是否是代码复制粘贴错误,是否有借口连接错误,是否……任何小的失误都有足够的理由和资格消耗您半个小时甚至更多的时间。不用很心慌。
当然成功后您会收到一些十六进制的字符。可以选择在网站上搜索在线进制转换,将它们转换为十进制字符。例如卿按遥控器左键收到的就是FF22DD,右键FFC23D,相当于十进制中的16720605和16761405。有兴趣的话可以把每个键都试一下,制作一个函数对应表,方便以后使用。
红外初始化就是这样完成了。
二、代码实现
烧录以下代码。
#include<IRremote.h>
#include <Servo.h>
Servo myservox;
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
int servoxPin=9;//舵机要接9号口
void setup()
{
Serial.begin(9600);
myservox.attach(servoxPin);
irrecv.enableIRIn(); // 初始化红外接收器
myservox.write(46);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);//以16进制换行输出接收代码
Serial.println();//为了便于观看输出结果增加一个空行
if (results.value==16720605)//这个数字要变。至于变为什么,要看您的发现。
{
myservox.write(10);//此数值为参考值。若想加大向左转动幅度请将此数值改小。想减小幅度请增大该数值。
delay(80);
myservox.write(46);//此数值为参考值。
}
else if (results.value==16761405)//这个数字要变。至于变为什么,要看您的发现。
{
myservox.write(70);//此数值为参考值。若想加大向右转动幅度请将此数值改大。想减小幅度请减小该数值。
delay(100);
myservox.write(46);//此数值为参考值。
}
irrecv.resume(); // 接收下一个值
}
}
并按下图连接。
测试一下是不是按动按键就可以控制舵机左右转动了?当然请根据自己的笔记本和喜好调整程序中的数值并重新烧录测试。
三、机械组装
个人喜欢用冰棍棒和双面胶把这个装置粘在笔记本指定位置。好粘好拿。当然有其他偏好者请自行发挥。
然后自行调试一下就OK啦。
在制作过程中有任何问题,请联系卿。直接在公众号回复即可。卿非常想知道这篇讲解有多无聊。
什么?不够无聊?
加入无聊实验室微信群,分享您的无聊体验
微信群:无聊实验室
您的无聊点子分享基地
只为真正无聊的你而生
← 创客空间迎新会回顾
李兆基大楼怎么突然多了这么多人?? →