所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

空地联防机器人系统:第三课 TT拓展模块通过中断程序实现人体红外传感器的动态感知

总督 总督 2021-01-10 23:33:51

本项目通过TT扩展模块的GPIO功能,设置IO26为输入模式(下拉状态)外接人体红外传感器模块,设置监听IO口电平变化,当上升沿时触发中断处理函数,中断处理函数只做简单的状态和变量标记,在loop主循环中根据标记的变量和状态进行相应的反馈

projectImage
代码 代码
	                    					#include <RMTT_Libs.h>
#include <Wire.h>

RMTT_Protocol tt_sdk;
RMTT_RGB tt_rgb;  

struct Button {
    const uint8_t PIN;
    uint32_t numberKeyPresses;
    bool pressed;
};

Button button1 = {26, 0, false};


void IRAM_ATTR isr() {
    button1.numberKeyPresses += 1;
    button1.pressed = true;
    tt_rgb.SetRGB(255, 255, 255);
}

void setup() {
  Serial.begin(115200);
  Serial1.begin(1000000, SERIAL_8N1, 23, 18);

  pinMode(button1.PIN, INPUT_PULLUP);
  attachInterrupt(button1.PIN, isr, RISING);

  tt_rgb.Init();
  tt_rgb.SetRGB(255, 0, 0);

  tt_sdk.startUntilControl();

  tt_sdk.sendTelloCtrlMsg("takeoff");
  tt_rgb.SetRGB(0, 255, 0);   
  delay(10000);
  tt_sdk.sendTelloCtrlMsg("land");
  tt_rgb.SetRGB(0, 255, 0); 
}


void loop() {
  if (button1.pressed) {        
        button1.pressed = false;
        tt_rgb.SetRGB(255, 0, 0);       
    }
   delay(3000);
}
	                    				

代码说明,中断函数在TT飞行中或降落后都可以正常触发,中断触发后RGB灯变白色,loop主循环监测到中断状态变化后设置RGB灯变绿色,周而复始从而展现中断的效果

Makelog作者原创文章,未经授权禁止转载。
2
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]