当前位置: 首页 > news >正文

一键建站系统源码vi设计公司专业品牌

一键建站系统源码,vi设计公司专业品牌,免费做名片的网站,怎么用html做图片展示网站基础例程3 01、外部中断 ESP32的外部中断有上升沿、下降沿、低电平、高电平触发模式。 实验目的 使用外部中断功能实现按键控制LED的亮灭 按键按下为0。【即下降沿】 * 接线说明:按键模块-->ESP32 IO* (K1-K4)-->(14,27,26,25)* * …

基础例程3

01、外部中断

ESP32的外部中断有上升沿、下降沿、低电平、高电平触发模式。

实验目的

使用外部中断功能实现按键控制LED的亮灭

按键按下为0。【即下降沿】

 * 接线说明:按键模块-->ESP32 IO*         (K1-K4)-->(14,27,26,25)*         *         LED模块-->ESP32 IO*         (D1-D4)-->(15,2,0,4)

软件程序

  • 对于主函数
/* 深圳市普中科技有限公司(PRECHIN 普中)技术支持:www.prechin.net* 实验名称:外部中断实验* 接线说明:按键模块-->ESP32 IO[输入]*         (K1-K4)-->(14,27,26,25)*         *         LED模块-->ESP32 IO[输出]*         (D1-D4)-->(15,2,0,4)* * 实验现象:程序下载成功后,操作K1键控制D1指示灯亮灭;操作K2键控制D2指示灯亮灭;操作K3键控制D3指示灯亮灭;操作K4键控制D4指示灯亮灭; */#include "public.h"
#include "exti.h"//定义LED控制引脚
#define led1_pin  15
#define led2_pin  2
#define led3_pin  0
#define led4_pin  4//定义全局变量void setup() {pinMode(led1_pin, OUTPUT);//设置引脚为输出模式pinMode(led2_pin, OUTPUT);pinMode(led3_pin, OUTPUT);pinMode(led4_pin, OUTPUT);exti_init();
}void loop() {digitalWrite(led1_pin,key1_sta);digitalWrite(led2_pin,key2_sta);digitalWrite(led3_pin,key3_sta);digitalWrite(led4_pin,key4_sta);
}
  • 对于中断函数
#include "exti.h"volatile u8 key1_sta=0;
volatile u8 key2_sta=0;
volatile u8 key3_sta=0;
volatile u8 key4_sta=0;//端口初始化
void exti_init(void)
{pinMode(key1_pin, INPUT_PULLUP);//设置引脚为输入上拉模式pinMode(key2_pin, INPUT_PULLUP);pinMode(key3_pin, INPUT_PULLUP);pinMode(key4_pin, INPUT_PULLUP);attachInterrupt(digitalPinToInterrupt(key1_pin), key1_isr, FALLING);//设置下降沿触发attachInterrupt(digitalPinToInterrupt(key2_pin), key2_isr, FALLING);attachInterrupt(digitalPinToInterrupt(key3_pin), key3_isr, FALLING);attachInterrupt(digitalPinToInterrupt(key4_pin), key4_isr, FALLING);
}
/*中断函数*/
void key1_isr(void)
{key1_sta=!key1_sta;
}void key2_isr(void)
{key2_sta=!key2_sta;
}void key3_isr(void)
{key3_sta=!key3_sta;
}void key4_isr(void)
{key4_sta=!key4_sta;
}

02、定时器中断

使用定时器进行定时。

  • 主函数
/* 深圳市普中科技有限公司(PRECHIN 普中)技术支持:www.prechin.net* * 实验名称:定时器中断实验* * 接线说明:LED模块-->ESP32 IO*         (D1)-->(15)* * 实验现象:程序下载成功后,D1指示灯间隔0.5s状态翻转* * 注意事项:* */#include "public.h"
#include "led.h"
#include "time.h"//定义全局变量void setup() {led_init();time0_init(500000);//定时500ms}void loop() {}#include "led.h"//led初始化
void led_init(void)
{pinMode(led1_pin, OUTPUT);//设置引脚为输出模式
}
  • 定时器的函数
#include "time.h"
#include "led.h"hw_timer_t *timer0 = NULL;//创建timer0定时器对象//定时器初始化
//per:定时时间,单位us
void time0_init(u32 per)
{/* timerBegin:初始化定时器指针第一个参数:设置定时器0(一共有四个定时器0、1、2、3)第二个参数:80分频(设置APB时钟,ESP32主频80MHz),80则时间单位为1Mhz即1us,1000000us即1s。第三个参数:计数方式,true向上计数 false向下计数*/timer0 = timerBegin(0, 80, true);/* timerAlarmWrite:配置报警计数器保护值(就是设置时间)第一个参数:指向已初始化定时器的指针第二个参数:定时时间,这里为500000us  意思为0.5s进入一次中断第三个参数:是否重载,false定时器中断触发一次  true:死循环*/timerAlarmWrite(timer0, per, true);/* timerAttachInterrupt:绑定定时器第一个参数:指向已初始化定时器的指针第二个参数:中断服务器函数第三个参数:true边沿触发,false电平触发*/timerAttachInterrupt(timer0, &time0_isr, true); timerAlarmEnable(timer0);//启用定时器//timerDetachInterrupt(timer0);//关闭定时器}//定时器中断函数
/*当定时时间到,进入定时器中断函数
*/
void time0_isr(void)
{static u8 led_sta=0; led_sta=!led_sta;digitalWrite(led1_pin,led_sta);
}

03、PWM

实验目的

通过调节PWM占空比,控制LED指示灯亮度变化,实现呼吸灯的效果。由暗到亮,再由亮到暗的循环过程。

image-20230811002718253

高电平的占空比不同,则电压不同,则LED的亮度不同

  • 主函数
/* 深圳市普中科技有限公司(PRECHIN 普中)技术支持:www.prechin.net * 实验名称:PWM呼吸灯实验 * 接线说明:LED模块-->ESP32 IO*         (D1)-->(15)* 实验现象:程序下载成功后,D1指示灯呈现呼吸灯效果,由暗变亮,再由亮变暗*/#include "public.h"
#include "led.h"
#include "pwm.h"//定义全局变量
u16 g_duty_value=0;
u8 g_fx=1;void setup() {pwm_init(led1_pin,0,1000,10);}void loop() {if(g_fx==1){g_duty_value+=10;if(g_duty_value>1010)g_fx=0;}else{g_duty_value-=10;if(g_duty_value<10)g_fx=1;}pwm_set_duty(0,g_duty_value);delay(10);
}#include "led.h"//led初始化
void led_init(void)
{pinMode(led1_pin, OUTPUT);//设置引脚为输出模式
}
  • PWM的函数
#include "pwm.h"/*
PWM初始化
//pin:引脚号
//chanel:PWM输出通道0-15
//freq:PWM输出频率,单位HZ
//resolution:PWM占空比的分辨率1-16,比如设置8,分辨率范围0-255
*/
void pwm_init(u8 pin,u8 chanel,u8 freq,u8 resolution)
{ledcSetup(chanel, freq, resolution);// PWM初始化ledcAttachPin(pin, chanel);// 绑定PWM通道到GPIO上
}//PWM占空比设置
//chanel:PWM的输出通道
//duty:占空比
void pwm_set_duty(u8 chanel,u16 duty)
{ledcWrite(chanel,duty);// 改变PWM的占空比
}

04、串口通信

  • 实验介绍

在ESP32中有三个硬件的UART:UART0、UART1和UART2。

在这里插入图片描述

ESP32 TX——RX

ESP32 RX——TX

GND——GND

其中UART0用于下载程序和调试

UART1:内部的通信

  • 代码
/* 深圳市普中科技有限公司(PRECHIN 普中)技术支持:www.prechin.net* * 实验名称:串口通信实验* * 接线说明:USB转TTL模块-->ESP32 IO*         (TXD)-->(16)(RXD)-->(17)(GND)-->(GND)* * 实验现象:程序下载成功后,打开串口调试助手,选择好串口、波特率115200参数等,在串口助手上发送字符数据,ESP32串口接收后原封不动返回到串口助手显示* * 注意事项:USB转TTL模块上将电源切换为3.3V* */#include "public.h"//定义全局变量
//定义串口2
HardwareSerial mySerial2(2);
String serialData;void setup() {//串口0配置Serial.begin(115200);//串口2配置//void HardwareSerial::begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1, bool invert=false, unsigned long timeout_ms = 20000UL);//baud:串口波特率,该值写0则会进入自动侦测波特率程序;//config:串口参数,默认SERIAL_8N1为8位数据位、无校验、1位停止位;//rxPin:接收管脚针脚号;//txPin:发送管脚针脚号;//invert:翻转逻辑电平,串口默认高电平为1、低电平为0;//timeout_ms:自动侦测波特率超时时间,如果超过该时间还未获得波特率就不会使能串口;mySerial2.begin(115200,SERIAL_8N1,16,17);}void loop() {if(Serial.available())  //当串口0接收到信息后{Serial.println("Serial Data Available..."); // 通过串口监视器通知用户serialData=Serial.readString();  // 将接收到的信息使用readString()存储于serialData变量Serial.print("Received Serial Data: ");     // 然后通过串口监视器输出serialData变量内容Serial.println(serialData);                 // 以便查看serialData变量的信息}if(mySerial2.available())  //当串口2接收到信息后{mySerial2.println("Serial2 Data Available..."); // 通过串口监视器通知用户serialData=mySerial2.readString();  // 将接收到的信息使用readString()存储于serialData变量mySerial2.print("Received Serial2 Data: ");     // 然后通过串口监视器输出serialData变量内容mySerial2.println(serialData);                 // 以便查看serialData变量的信息}
}

05、ADC

  • 实验介绍

ADC功能在引脚32-39上可用。输入电压必须介于0-1.0V(高于1V都读为4095)

ADC采集电位器0-3.3V电压。

  • 硬件设计

在这里插入图片描述

J2端子的R_ADC脚为电位器的电压输出端,可将该引脚与ESP32的ADC脚相连接

旋转底板上的ADC电位器,即可改变电压

  • 软件设计
/* 深圳市普中科技有限公司(PRECHIN 普中)技术支持:www.prechin.net* * 实验名称:ADC实验* * 接线说明:ADC电位器-->ESP32 IO*         ADC-->(34)* * 实验现象:程序下载成功后,会在软件串口控制台上输出ADC检测电压值,调节电位器可改变检测电压* * 注意事项:* */#include "public.h"//定义全局变量
float adc_vol=0;void setup() {//串口0配置Serial.begin(115200);}void loop() {adc_vol=3.3*(float)analogRead(34)/4095;//读取ADC值---34引脚Serial.print("ADC检测电压:");Serial.print(adc_vol);Serial.println("V");delay(500);
}* 接线说明:ADC电位器-->ESP32 IO*         ADC-->(34)* * 实验现象:程序下载成功后,会在软件串口控制台上输出ADC检测电压值,调节电位器可改变检测电压* * 注意事项:* */#include "public.h"//定义全局变量
float adc_vol=0;void setup() {//串口0配置Serial.begin(115200);}void loop() {adc_vol=3.3*(float)analogRead(34)/4095;//读取ADC值---34引脚Serial.print("ADC检测电压:");Serial.print(adc_vol);Serial.println("V");delay(500);
}
http://www.15wanjia.com/news/196042.html

相关文章:

  • 珠海网站制作推广公司网站上的充值链接怎么做的
  • 阳光家园广州网站网址博物馆建设网站的作用
  • c2c网站的建设购物网站管理层
  • wordpress 在线游戏网站网址大全12306
  • 新乡高端网站建设如何组建商业网
  • 天津制作企业网站报价网站建设哪儿济南兴田德润什么活动
  • excel做公司的小网站官方网站建设计划书
  • 杭州网站 建设阿里云搭建安装wordpress教程
  • 大型网站建设费用网页游戏开服表最新
  • asp 网站管理系统法律网站模板
  • 竹子建设网站网站推广策划执行方案
  • 企业建站模板114做网站
  • 安平丝网网站建设企业网络营销策略
  • 用typecho做的网站建设通类型网站叫啥
  • 怎样说服客户做网站wordpress页面文件
  • 产品展示网站模板下载网站开发需要读的书籍
  • 官方网站开发用什么语言东莞市路桥所
  • 电脑可以做服务器部署网站吗临沂谁会做网站
  • 网站建设经费请示常德注册公司流程及费用
  • 氧化锌网站建设wordpress登录界面图标
  • 中国建设网官方网站e路护航微信制作网站开发
  • 织梦网站关闭手机版喀什市建设局网站查证件
  • 网站建设的研究目标重庆市公路建设市场信用信息
  • 保定网站建设公司dns加网站
  • 首页设计的公司官网网站seo诊断分析
  • 网站开发专业定制jsp网站seo优化
  • wordpress主题整站平台做推广的技巧
  • 建设网站需要展示什么区别智能硬件开发流程
  • 医院网站模板深圳新星公司官网
  • 典型的电子商务网站有哪些温州室内设计公司排名