3.5.5 添加按钮事件

现在我们想去检测用户是有将按键按下了。

在Contiki中,将按键当做是一个传感器。我们将会使用库core/dev/button-sensor.h

RE-Mote平台实现了额外的按键功能,比如长按检测,可用于将来扩展由按键触发的事件。文件platform/zoul/dev/button-sensor.c中有更详细的介绍,文件examples/zolertia/zoul/zoul-demo.c中有相关例程。

创建一个新的例程文件,命令为test-button.c,包含头文件dev/button-sensor.h和按键事件如下:

#include "contiki.h"
#include "dev/leds.h"
#include "dev/button-sensor.h"
#include <stdio.h>
/*-------------------------------------------------*/
PROCESS(test_button_process, "Test button");
AUTOSTART_PROCESSES(&test_button_process);
/*-------------------------------------------------*/
PROCESS_THREAD(test_button_process, ev, data)
{
  PROCESS_BEGIN();
  SENSORS_ACTIVATE(button_sensor);
  while(1) {
    PROCESS_WAIT_EVENT_UNTIL((ev==sensors_event) && (data == &button_sensor));
    printf("I pushed the button!\n");
  }
  PROCESS_END();
}

这个进程中有一个主循环。使用wait语句等待按键被按下。当你按下按键时,这两个条件将会被满足(事件来着传感器、事件是按键被按下),从而会在控制台上打印相关字符。

练习:当按下按键时,打开LED。当再次按键时,关闭LED。

results matching ""

    No results matching ""