基于 ESP8266_RTOS_SDK 实现声控灯
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include "driver/gpio.h"
#include "driver/hw_timer.h"
#include "FreeRTOS.h"
#include "freertos/event_groups.h"
#include "rom/ets_sys.h"
#define PIN GPIO_NUM_5
/**
* @brief 定时器中断函数,检测事件组
*/
void timer_callback(void *arg){
EventBits_t bit = xEventGroupGetBitsFromISR((EventGroupHandle_t)arg);
xEventGroupClearBitsFromISR((EventGroupHandle_t)arg, bit);
static uint8_t num = 0;
//接收到声音传感器的响应
if(0x01 == bit){
//当前LED灭,重新开启,当前LED已经打开,刷新计时
if(0 == num){
num = 5;
gpio_set_level(2, 0);
}else{
num = 5;
}
}
if(0 < num){
num--;
}else{
gpio_set_level(2, 1);
}
}
/**
* @brief 声音模块GPIO中断函数,下降沿触发,事件组置位
*/
void sound_isr(void *arg){
BaseType_t base;
xEventGroupSetBitsFromISR((EventGroupHandle_t)arg, 0x01, &base);
}
/**
* @brief 使用事件组和中断实现声控灯
* ESP8266 sound
* D1(GPIO5) out
* VCC VCC
* GND GND
*/
void app_main(void){
EventGroupHandle_t event = xEventGroupCreate();
gpio_config_t conf;
conf.pin_bit_mask = 1 << 2;
conf.mode = GPIO_MODE_OUTPUT;
conf.intr_type = GPIO_INTR_DISABLE;
gpio_config(&conf);
gpio_set_level(2, 1);//板载LED低电平亮
conf.pin_bit_mask = 1 << PIN;
conf.mode = GPIO_MODE_INPUT;
conf.intr_type = GPIO_INTR_NEGEDGE;
conf.pull_up_en = 1;
gpio_config(&conf);
gpio_install_isr_service(0);
gpio_isr_handler_add(PIN, sound_isr, event);
hw_timer_init(timer_callback, event);
hw_timer_set_reload(true);
hw_timer_set_clkdiv(TIMER_CLKDIV_16);
hw_timer_set_intr_type(TIMER_EDGE_INT);
hw_timer_set_load_data((TIMER_BASE_CLK >> hw_timer_get_clkdiv()));//5000000
hw_timer_enable(true);
while(1){
//也可以主任务实现控制逻辑
// xEventGroupWaitBits(event, 0x01, pdTRUE, pdFALSE, portMAX_DELAY);
// gpio_set_level(2, 0);
// for(uint16_t i = 0; i < 1000; i++){
// os_delay_us(1000);
// }
// gpio_set_level(2, 1);
os_delay_us(65534);
}
}
基于 ESP8266_RTOS_SDK 实现声控灯的更多相关文章
- 基于AD5663的UV灯电压控制
在开发臭氧发生器的时,我们使用UV灯来实现臭氧的产生.而UV灯的强度决定了臭氧产生的浓度,UV灯的光强则与其控制电压密切相关.所以我们要控制产生的臭氧的浓度就需要调节其控制电压.我们选择了AD5663 ...
- STM32学习笔记(二) 基于STM32-GPIO的流水灯实现
学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...
- 实验一:基于STM32F1的流水灯实验(库函数)
参考原子哥学习程序 条件:实验板STM32103ZET6:固件库STM32F10x_StdPeriph_Lib_V3.5.0:环境MDK5: 目的:了解STM32 的 IO 口如何作为输出使用 :以两 ...
- TPYBoard V102:能跑Python的stm32开发板
近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBo ...
- [MicroPython]TPYBoardv102超全DIY案例一览
TPYBoardv102是一款比较成熟和经典的MicroPython开发板,不仅适用于学习实验还能应用于大型的工业级开发,是MicroPython入门和研发的不二之选.下面我们就扒开v102的“层层外 ...
- Scratch3.0设计的插件系统(上篇)
我们每个人在内心深处都怀有一个梦想: 希望创造出一个鲜活的世界,一个宇宙.处在我们生活的中间.被训练为架构师的那些人,拥有这样的渴望: 在某一天,在某一个地方,因为某种原因,创造出了一个不可思议的.美 ...
- 跟着弦哥学人工智能2—HAND-CRAFTED RULES实现的人工智能及其缺陷
隔壁有个妹纸喷我,好高兴....给她回复了下 哎呀,没想到是个妹纸,其实我就随便那么一说,没合计妹纸还专门写个檄文声讨我,受宠若惊其实你的评论一看就比较专业,所以我就去你博客大概扫了一眼,发现个大问 ...
- ISE14.7使用教程(一个完整工程的建立)
FPGA公司主要是两个Xilinx和Altera(现intel PSG),我们目前用的ISE是Xilinx的开发套件,现在ISE更新到14.7已经不更新了,换成了另一款开发套件Vivado,也是Xil ...
- TRIZ系列-创新原理-23-反馈原理
反馈原理的详细表述例如以下:1)引入反馈:2)假设已经有反馈,那么改变它这个原理告诉我们应当从系统中尽量多收集反馈信息.并用这些信息来矫正系统的作用.非常easy看出,引入反馈是系统自己主动控制 ...
- 【转】ISE——完整工程的建立
FPGA公司主要是两个Xilinx和Altera(现intel PSG),我们目前用的ISE是Xilinx的开发套件,现在ISE更新到14.7已经不更新了,换成了另一款开发套件Vivado,也是Xil ...
随机推荐
- HMS Core助力同程旅行,打造更贴心的用户出行体验
作为中国在线旅行行业的创新者,同程旅行聚焦年轻.时尚.个性的消费群体,致力于为用户提供更便捷.聪明.安全的出行服务.近年来,同程旅行通过人工智能等创新科技的应用将平台原本的交易撮合角色转变为" ...
- 从零开始写 Docker(十)---实现 mydocker logs 查看容器日志
本文为从零开始写 Docker 系列第十篇,实现类似 docker logs 的功能,使得我们能够查查看容器日志. 完整代码见:https://github.com/lixd/mydocker 欢迎 ...
- HamronyOS自动化测试框架使用指南
概述 为支撑HarmonyOS操作系统的自动化测试活动开展,我们提供了支持JS/TS语言的单元及UI测试框架,支持开发者针对应用接口进行单元测试,并且可基于UI操作进行UI自动化脚本的编写. 本指 ...
- HarmonyOS应用窗口管理(Stage模型)
一. 窗口开发概述 窗口模块的定义 窗口模块用于在同一块物理屏幕上,提供多个应用界面显示.交互的机制. ● 对应用开发者而言,窗口模块提供了界面显示和交互能力. ● 对终端用户而言,窗口模块提供 ...
- 【直播预告】HarmonyOS极客松赋能直播第四期:HarmonyOS开发经验分享
- caidao qsnctfwp
进入网页发现如下内容 直接使用蚁剑连接 连接并进入后,在根目录下发现名为 flag 的文件,即可获取 flag -End-
- 重新点亮linux 命令树————网络配置的查看[十一三]
前言 简单整理一下网络配置. 正文 通过ifconfig 查看. 这个就是ip地址. 网卡mac地址. 还有一块信息非常重要: 这个io开头的信息,这里面就是我们127.0.0.1的信息. 那么就来演 ...
- allure常用
overview:概述页面:categories:分类目录:suites:按套件和类分组的已执行测试的标准结构:graphs:图表:timeline:时间线:behaviors:可根据epic.fea ...
- WPF随笔收录-实时绘制心率曲线
一.前言 在自己的项目中,涉及到实时心率曲线的绘制,项目上的曲线绘制,一般很难找到能直接用的第三方库,而且有些还是定制化的功能,所以还是自己绘制比较方便.很多人一听到自己画就害怕,感觉很难,今天就分享 ...
- 力扣1127(MySQL)-用户购买平台(困难)
题目: 支出表: Spending 这张表记录了用户在一个在线购物网站的支出历史,该在线购物平台同时拥有桌面端('desktop')和手机端('mobile')的应用程序.这张表的主键是 (user_ ...