DFRobot Leonardo & Xbee R3 做个锁屏装置

上次活动拿到了DFRobot Leonardo & Xbee R3 控制器,一如既往的用料,还有标志性的颜色:

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

LOCK3
代码是根据【参考2】【参考3】改编的。

//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秒检查一次是否有按键
}

 

最终的样子,经过测试工作正常:

LOCK4

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

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注