树莓派Android Things物联网开发:按键中断及消抖

【转载请注明出处: http://blog.csdn.net/leytton/article/details/77848430

《树莓派Android Things物联网开发》系列文章专栏 http://blog.csdn.net/column/details/17741.html

树莓派Android Things物联网开发:入门及资料汇总

树莓派Android Things物联网开发:创建一个Things项目

树莓派Android Things物联网开发:树莓派GPIO引脚图

树莓派Android Things物联网开发:按键中断及消抖

树莓派Android Things物联网开发:已知Bug发行说明

树莓派Android Things物联网开发:GitHub案例程序汇总


一、外部中断

不亦按照文档中外部中断测试按钮触发事件,结果发现抖动特别严重、触发了多次。

关于外部中可参考这两篇文章

《Android Things入门-控制GPIO》http://www.jianshu.com/p/4e031d038ae5 

《Android Things:外设I/O接口-GPIO》http://blog.csdn.net/p106786860/article/details/61414559

实际上Android Things提供了按钮库,结合上拉电路和软件算法进行了消抖处理。

二、上拉下拉电路


如上图所示,左边电路为上拉、下拉输出,右边电路为上拉输入。按键开关打开时,输入电压为VCC减去电阻两端电压;关闭时接地输入电压为0V。这就使得输入只有两种电压,避免了杂乱电压的产生。

上拉和下拉电阻值通常在1kΩ和10kΩ之间。电压不变、根据功率计算公式P=U^2/R,电阻越大,则功率消耗越小。但要确保输入电压符合高电平规定。

下拉输入如下图所示:


三、RC去抖电路


可以阅读下文:

《Android Things-硬件基础》上拉下拉及去抖、IO保护电路等介绍 http://www.jianshu.com/p/f0df498e91a1  官方原文 

四、Button库

Github地址 https://github.com/androidthings/contrib-drivers/tree/master/button 

使用方法:

在build.gradle文件中加入依赖库

dependencies {
    compile 'com.google.android.things.contrib:driver-button:0.3'
}


API调用有两种形式:

1、添加监听事件

import com.google.android.things.contrib.driver.button.Button;

// 访问按钮并监听事件:

Button mButton;

try {
    mButton = new Button(gpioPinName,
            // 高电平视为按钮被按下
            // 配合下拉电阻使用
            Button.LogicState.PRESSED_WHEN_HIGH
    );
    mButton.setOnButtonEventListener(new OnButtonEventListener() {
        @Override
        public void onButtonEvent(Button button, boolean pressed) {
            // 去吧皮卡丘
        }
    });
} catch (IOException e) {
    // 不能配置按钮...
}

// 结束时关闭按钮:

try {
    mButton.close();
} catch (IOException e) {
    // 关闭按钮失败
}


2、注册为驱动事件

ButtonInputDriver mInputDriver;

try {
    mInputDriver = new ButtonInputDriver(gpioPinName,
            Button.LogicState.PRESSED_WHEN_HIGH,
            KeyEvent.KEYCODE_A // 将要发送的按键编号
    );
    mInputDriver.register();
} catch (IOException e) {
    // 配置按钮失败...
}

// 重写Activity中的按键回调事件:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_A) {
        // 去吧皮卡丘
        return true; // 表示我们已经处理了该事件
    }
    return super.onKeyDown(keyCode, event);
}

// 当结束时注销和关闭输入驱动:

mInputDriver.unregister();
try {
    mInputDriver.close();
} catch (IOException e) {
    // 关闭输入驱动失败
}

注意的是,如果界面中存在输入框,不想按键驱动注册的虚拟输入与其冲突,可以设置其他的非键盘按键编号。如下


更多按键编号可查看《Android KeyCode列表


五、代码案例

https://github.com/androidthings/sample-button

按下按钮时,LED灯将亮起,释放时LED灯熄灭。LED灯串联一个470欧的电阻限流即可。

电路图


PS:如果本文对您有帮助,请点个赞让我知道哦~微笑


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要构建一个物联网项目,可以使用树莓派作为中心控制器,并连接各种传感器、执行器和其他设备。以下是构建物联网项目的一般步骤: 1. 准备硬件: - 树莓派单板电脑(建议使用较新的型号,如树莓派4) - 传感器和执行器:根据项目需求选择适当的传感器和执行器,如温度传感器、湿度传感器、继电器等。 - 连接线和电源适配器:根据硬件需求准备相应的连接线和电源。 2. 安装操作系统: - 下载并安装树莓派官方推荐的操作系统(如Raspberry Pi OS)到MicroSD卡上。 - 将MicroSD卡插入树莓派,并连接显示器、键盘和鼠标。 3. 连接传感器和执行器: - 使用适当的电路连接传感器和执行器到树莓派的GPIO引脚。 - 注意正确连接和配置每个设备的引脚和电源。 4. 编写代码或使用现有物联网平台: - 根据项目需求,可以编写Python代码来读取传感器数据、控制执行器等。 - 也可以使用现有的物联网平台(如AWS IoT、Google Cloud IoT等)来简化开发和管理物联网项目。 5. 云连接和数据传输: - 配置树莓派与云平台的连接,确保能够将传感器数据上传到云端。 - 使用适当的通信协议(如MQTT)将数据传输到云平台。 6. 数据处理和应用: - 在云平台上设置规则和逻辑,对传感器数据进行处理和分析。 - 可以使用云平台提供的工具和服务来构建可视化仪表板、警报系统等。 以上步骤是一个基本的指南,实际上物联网项目的具体步骤会根据项目需求和硬件选择的不同而有所变化。重要的是理解传感器和执行器的工作原理,以及如何与树莓派进行连接和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值