#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 实现声控灯的更多相关文章

  1. 基于AD5663的UV灯电压控制

    在开发臭氧发生器的时,我们使用UV灯来实现臭氧的产生.而UV灯的强度决定了臭氧产生的浓度,UV灯的光强则与其控制电压密切相关.所以我们要控制产生的臭氧的浓度就需要调节其控制电压.我们选择了AD5663 ...

  2. STM32学习笔记(二) 基于STM32-GPIO的流水灯实现

    学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...

  3. 实验一:基于STM32F1的流水灯实验(库函数)

    参考原子哥学习程序 条件:实验板STM32103ZET6:固件库STM32F10x_StdPeriph_Lib_V3.5.0:环境MDK5: 目的:了解STM32 的 IO 口如何作为输出使用 :以两 ...

  4. TPYBoard V102:能跑Python的stm32开发板

    近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBo ...

  5. [MicroPython]TPYBoardv102超全DIY案例一览

    TPYBoardv102是一款比较成熟和经典的MicroPython开发板,不仅适用于学习实验还能应用于大型的工业级开发,是MicroPython入门和研发的不二之选.下面我们就扒开v102的“层层外 ...

  6. Scratch3.0设计的插件系统(上篇)

    我们每个人在内心深处都怀有一个梦想: 希望创造出一个鲜活的世界,一个宇宙.处在我们生活的中间.被训练为架构师的那些人,拥有这样的渴望: 在某一天,在某一个地方,因为某种原因,创造出了一个不可思议的.美 ...

  7. 跟着弦哥学人工智能2—HAND-CRAFTED RULES实现的人工智能及其缺陷

    隔壁有个妹纸喷我​,好高兴....给她回复了下 哎呀,没想到是个妹纸,其实我就随便那么一说,没合计妹纸还专门写个檄文声讨我,受宠若惊其实你的评论一看就比较专业,所以我就去你博客大概扫了一眼,发现个大问 ...

  8. ISE14.7使用教程(一个完整工程的建立)

    FPGA公司主要是两个Xilinx和Altera(现intel PSG),我们目前用的ISE是Xilinx的开发套件,现在ISE更新到14.7已经不更新了,换成了另一款开发套件Vivado,也是Xil ...

  9. TRIZ系列-创新原理-23-反馈原理

     反馈原理的详细表述例如以下:1)引入反馈:2)假设已经有反馈,那么改变它这个原理告诉我们应当从系统中尽量多收集反馈信息.并用这些信息来矫正系统的作用.非常easy看出,引入反馈是系统自己主动控制 ...

  10. 【转】ISE——完整工程的建立

    FPGA公司主要是两个Xilinx和Altera(现intel PSG),我们目前用的ISE是Xilinx的开发套件,现在ISE更新到14.7已经不更新了,换成了另一款开发套件Vivado,也是Xil ...

随机推荐

  1. 6本值得推荐的MySQL学习书籍(有赠书福利)

    前言 在DotNetGuide技术社区交流群和微信公众号后台经常收到小伙伴们的留言,让我出一期MySQL相关学习书籍的推荐文章.因此,今天我特意为大家精选了 6 本值得推荐的 MySQL 学习书籍,希 ...

  2. Pytorch-实战之对Himmelblau函数的优化

    1.Himmelblau函数 Himmelblau函数: F(x,y)=(x²+y-11)²+(x+y²-7)²:具体优化的是,寻找一个最合适的坐标(x,y)使得F(x,y)的值最小. 函数的具体图像 ...

  3. leetcode:3. 无重复字符的最长子串

    3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3  解释: 因为无重复字符的最长子 ...

  4. 设备像素、css像素、设备独立像素、dpr、ppi 之间的区别

    一.背景 在css中我们通常使用px作为单位,在PC浏览器中css的1个像素都是对应着电脑屏幕的1个物理像素 这会造成一种错觉,我们会认为css中的像素就是设备的物理像素 但实际情况却并非如此,css ...

  5. Redis 性能优化实战

    Redis 作为内存数据库,其性能表现非常出色,单机 OPS 很容易达到 10万以上,这主要得益于其高效的内存数据结构.单线程无锁设计.IO 多路复用等技术实现.但是在线上生产环境的使用中,我们仍然会 ...

  6. 如何使用鞋厂ERP等企业管理软件提高企业运营整体效率?

    ERP把企业客户需求.市场规划.产品研发.内部制造等活动以及供应商的资源整合在一起,形成企业一个完整的产业链和供应链,通过企业多个环节的无缝链接和整体运作来提高企业运营整体效率: (1) . 对整个产 ...

  7. 揭秘!阿里实时数仓分布式事务Scale Out设计

    简介: Hybrid Transaction Analytical Processing(HTAP) 是著名信息技术咨询与分析公司Gartner在2014年提出的一个新的数据库系统定义,特指一类兼具O ...

  8. [Go] Colly 使用 POST 提交 application/x-www-form-urlencoded 示范

    Colly 提供了 Post 和 PostRaw 方法,它们的参数类型不一样,需要注意. 目标地址接受指定的 Content-Type,可以通过设置 request Header. 局部代码: // ...

  9. 深入理解Python协程:从基础到实战

    title: 深入理解Python协程:从基础到实战 date: 2024/4/27 16:48:43 updated: 2024/4/27 16:48:43 categories: 后端开发 tag ...

  10. fastreport .net打印普通报表

    fastreport .net打印普通报表 前言: .net代码层先不记录在这,后续会单独写一篇博客来记录. 直接在工具上进行功能点的实现 一.效果图 二.功能点 分页 分页小计 金额大写 三.功能点 ...