DFRobot Leonardo & Xbee R3 做个锁屏装置-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4568|回复: 4

DFRobot Leonardo & Xbee R3 做个锁屏装置

[复制链接]
发表于 2016-12-17 21:37 | 显示全部楼层 |阅读模式
上次活动拿到了DFRobot Leonardo & Xbee R3 控制器,一如既往的用料,还有标志性的颜色:
image001.jpg

想起来还有上次赠送的徽章,想了下,做个锁屏的装置吧。使用徽章作为锁屏的触发。比如,起身离开的时候,轻触徽章即可锁住屏幕。很早之前我用模拟USB的方法做过一次【参考1】,有这个想法的缘由很简单:
上大学的时候,当团支书,负责同学交入Party申请书之类的事情(很值得骄傲的是作为熟读历史经常思考的年轻人,我从来没有写过申请书)。
image002.jpg
想入Party有一关是“群众评议”,就是看看是否有反对的意见。当时我和班级上的同学说“一个好人,进入Party是追求进步,是好事,有机会让他改造好;一个坏人,进入Party,也是好事情,能让群众队伍更纯洁。大家都不要反对哈”。我们班级在这一关从来没有过什么问题。后来有一次,我去帮同学交入Party申请书,顺便讨价还价一下(我记得有规定是交了之后必须间隔一段才能进入正式的程序,为此我会和辅导员讨价还价一番,让申请书落款的时间提前几个月)。辅导员不在,我就稍等了一下。期间无聊,顺便翻翻其他班级的评议,结果让我大吃一惊,真有班级同学特别认真的反对某个人的,罗列了很多条意见。正在我看在兴头上,辅导员看到急忙过来将东西收了起来,半开玩笑的批评另外帮忙的女同学,说这样的东西怎么能让这种人看到………所以信息安全非常重要。时至今日,写在纸上的东西越来越少,电脑上的内容越来越多。当你起身去上厕所或者喝水的时候,是否可曾担心屏幕上的信息被人有意或者无意的看到?或者你外出办事,是否担心有人悄悄操作你的电脑?解决这个问题最简单的办法就是给Windows设置一个密码,然后在离开的时候按下 WinKey+L 。
因此,我们可以使用Arduino 模拟这个过程,按下锁屏键。
硬件上除了 Leonardo板子,还要用到徽章,还有一个导线,导线一端插入 A0口,一段接在徽章后面。徽章正面是绝缘的,需要处理一下,我用锡箔包裹了一下,导电部分留在边缘。
image003.jpg
代码是根据【参考2】【参考3】改编的。
[mw_shl_code=c,true]//Leonardo to MakeyMake
//http://www.alsrobot.cn/article-91.html

#include <Keyboard.h>

#define MOD_GUI_LEFT       0x83              // Win 按键

int InPut0 = 0;                               //触控输入值初始化
int TouchedValue = 200; //临界比较值,需要根据你的材质摆放进行测试

void setup()
{
  Serial.begin(9600);
  pinMode(A0, INPUT);   //使用A0接受输入

  pinMode(9, INPUT_PULLUP);    //为了防止程序错误干扰下次烧写,这里设计了一个开关
  while (digitalRead(9)==HIGH) {}; //只有当对应的 D9 接地才会继续

  Keyboard.begin();
}
void loop()
{
InPut0 = analogRead(A0); //检测A0的输入              
Serial.println(InPut0);  //Debug用
  if(InPut0 <= TouchedValue ) //检测按键并去抖动
  {
    delay(20);
   
    InPut0 = analogRead(A0); //检测A0的输入  
    if(InPut0 <=TouchedValue)
    {
      Serial.println("Get pressed"); //有按键
                     
      Keyboard.press(MOD_GUI_LEFT); //按下 Win Key
      Keyboard.press('l');          //按下 L
      //delay(200);
      Keyboard.releaseAll();        //抬起全部按键

    }
  }
   
  delay(1000);   //1秒检查一次是否有按键
}[/mw_shl_code]
最终的样子,经过测试工作正常:
image004.jpg

有几个需要注意的地方:
第一,     不要把徽章放在导电的物体上,这样会造成很大的干扰;
第二,     细心的朋友可能注意到,设计上我还在D9短接到地,这样的设计是为了防止编写键盘鼠标程序时,影响上位机的代码,比如,程序除了错误,会一直向电脑上输入字符。加上这个设计,相当于加入了一个硬件开关;
第三,     代码中用来判断当前是否有触摸的那个数值是实际测量得出的,需要根据具体实现来选定。
参考:

1. http://www.geek-workshop.com/thread-1192-1-1.html Arduino学习笔记A12 - 自制Makey模拟触摸键盘
2. http://www.alsrobot.cn/article-91.html 【创客学堂】Arduino改做MakeyMakey玩

发表于 2016-12-17 23:01 | 显示全部楼层
可以的!支持!学习一个!
发表于 2016-12-18 12:15 | 显示全部楼层
哈哈,记得还有另外一个传感器版本的
 楼主| 发表于 2016-12-19 15:40 | 显示全部楼层
木森林的年轮 发表于 2016-12-18 12:15
哈哈,记得还有另外一个传感器版本的

另外那篇是2年前写的,用距离传感器
发表于 2016-12-20 15:11 | 显示全部楼层
年轻人,赶着去打架吗~~哈哈哈
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 01:07 , Processed in 0.240692 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表