01-基础例程1

news2024/10/7 10:15:32

基础例程1

01-LED

/* 深圳市普中科技有限公司(PRECHIN 普中)
   技术支持:www.prechin.net
 * 实验名称:LED流水灯实验
 * 接线说明:LED模块-->ESP32 IO
 *         (D1-D8)-->(15,2,0,4,16,17,5,18)
 * 
 * 实验现象:程序下载成功后,LED模块D1-D8指示灯依次点亮后依次熄灭
 */

//定义LED管脚
const char led_pin[8]={15,2,0,4,16,17,5,18};
char g_i=0;

void setup() {
  char i=0;
  
  for(i=0;i<8;i++)
  {
      pinMode(led_pin[i], OUTPUT);//设置LED引脚为输出模式 
      digitalWrite(led_pin[i], LOW);//LED1引脚输出低电平,熄灭
  }
}

void loop() {
  for(g_i=0;g_i<8;g_i++)
  {
      digitalWrite(led_pin[g_i], HIGH);//LED引脚输出高电平,点亮
      delay(100);//延时100ms
  }
  for(g_i=0;g_i<8;g_i++)
  {
      digitalWrite(led_pin[g_i], LOW);//LED引脚输出低电平,熄灭
      delay(100);//延时100ms
  }

}

当J1的引脚输入为高电平时,对应的LED导通,即LED亮;当J1处的引脚输入为低电平时,对应的LED不导通,即LED熄灭

在这里插入图片描述

02-蜂鸣器

对应BEEP与BEEP_OUT,可以认为是取反的关系

在这里插入图片描述

对于BEEP引脚,是与控制IO-J2相连接的

在这里插入图片描述

对于BEEP_OUT是与蜂鸣器的引脚相连接的,控制蜂鸣器的

在这里插入图片描述

/* 深圳市普中科技有限公司(PRECHIN 普中)
   技术支持:www.prechin.net
 * 实验名称:蜂鸣器实验 
 * 接线说明:蜂鸣器模块-->ESP32 IO
 *         (BEEP)-->(25)
 * 
 * 实验现象:程序下载成功后,BEEP模块发出声音
 */

//定义蜂鸣器控制管脚
#define beep_pin  25
char g_i=0;

void setup() {
  pinMode(beep_pin, OUTPUT);//设置引脚为输出模式
}

void loop() {
  g_i=!g_i;
  digitalWrite(beep_pin,g_i);//引脚输出电平翻转
  delayMicroseconds(250);//延时250ms
}

03-继电器

对于继电器。与J2相连的RELAY信号和与继电器相连的RELAY_OUT信号相反。故可以控制控制J2的RELAY引脚去控制继电器RELAY_OUT引脚

对于J2和RELAY引脚,见02-蜂鸣器

在这里插入图片描述

此处的COM为公共触点,NO为常闭触点,NC为常开触点。

在这里插入图片描述

当RELAY_OUT为高,COM打到3,LED灯亮;反之,COM打到1,LED灯熄灭

/* 深圳市普中科技有限公司(PRECHIN 普中)
   技术支持:www.prechin.net 
 * 实验名称:继电器实验 
 * 接线说明:继电器模块-->ESP32 IO
 *         (REL)-->(25)
 *         
 *         继电器模块输出-->LED模块
 *         (COM)-->(3V3)
           (NO)-->(D1)
 * 
 * 实验现象:程序下载成功后,继电器模块间隔一定时间吸合断开,吸合时D1指示灯亮,断开时灭
 */
//定义继电器控制管脚
#define relay_pin   25
char g_i=0;

void setup() {
  pinMode(relay_pin, OUTPUT);//设置引脚为输出模式
}

void loop() {
  g_i=!g_i;
  digitalWrite(relay_pin,g_i);//引脚输出电平翻转
  delay(1000);//延时1000ms
}

04-按键控制

对于按键而言,与控制IO的模块J3相连

在这里插入图片描述

对于按键而言,为GPIO输入,当按下时,为低

在这里插入图片描述

实验使用按键控制LED灯,LED的引脚见01-LED

/* 深圳市普中科技有限公司(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指示灯亮灭;
 * 
 * 注意事项:
 * 
 */

//定义按键控制管脚
#define key1_pin  14 
#define key2_pin  27
#define key3_pin  26
#define key4_pin  25
//定义LED控制管脚
#define led1_pin  15
#define led2_pin  2
#define led3_pin  0
#define led4_pin  4

//类型重定义
typedef unsigned char u8;
typedef unsigned int u16;

//定义全局变量
u8 g_key=0;
u8 g_led1_sta=0;
u8 g_led2_sta=0;
u8 g_led3_sta=0;
u8 g_led4_sta=0;

//使用宏定义独立按键按下的键值
#define KEY1_PRESS  1
#define KEY2_PRESS  2
#define KEY3_PRESS  3
#define KEY4_PRESS  4
#define KEY_UNPRESS 0 

/*******************************************************************************
* 函 数 名       : key_scan
* 函数功能        : 检测独立按键是否按下,按下则返回对应键值
* 输    入       : mode=0:单次扫描按键
                  mode=1:连续扫描按键
* 输    出       : KEY1_PRESS:K1按下
                  KEY2_PRESS:K2按下
                  KEY3_PRESS:K3按下
                  KEY4_PRESS:K4按下
                  KEY_UNPRESS:未有按键按下
*******************************************************************************/
u8 key_scan(u8 mode)
{
  static u8 key=1;

  if(mode)key=1;//连续扫描按键
  if(key==1&&(digitalRead(key1_pin)==0||digitalRead(key2_pin)==0||digitalRead(key3_pin)==0||digitalRead(key4_pin)==0))//任意按键按下
  {
    delay(10);//消抖
    key=0;
    if(digitalRead(key1_pin)==0)
      return KEY1_PRESS;
    else if(digitalRead(key2_pin)==0)
      return KEY2_PRESS;
    else if(digitalRead(key3_pin)==0)
      return KEY3_PRESS;
    else if(digitalRead(key4_pin)==0)
      return KEY4_PRESS;  
  }
  else if(digitalRead(key1_pin)==1&&digitalRead(key2_pin)==1&&digitalRead(key3_pin)==1&&digitalRead(key4_pin)==1) //无按键按下
  {
    key=1;      
  }
  return KEY_UNPRESS;   
}

void setup() {
  pinMode(key1_pin, INPUT_PULLUP);//设置引脚为输入上拉模式
  pinMode(key2_pin, INPUT_PULLUP);
  pinMode(key3_pin, INPUT_PULLUP);
  pinMode(key4_pin, INPUT_PULLUP);

  pinMode(led1_pin, OUTPUT);//设置引脚为输出模式
  pinMode(led2_pin, OUTPUT);
  pinMode(led3_pin, OUTPUT);
  pinMode(led4_pin, OUTPUT);

  digitalWrite(led1_pin,0);//引脚输出低电平
  digitalWrite(led2_pin,0);//引脚输出低电平
  digitalWrite(led3_pin,0);//引脚输出低电平
  digitalWrite(led4_pin,0);//引脚输出低电平
}

void loop() {
  g_key=key_scan(0);  //检测按键
  if(g_key==KEY1_PRESS)//KEY1按下,D1指示灯状态翻转
  {
    g_led1_sta=!g_led1_sta; 
    digitalWrite(led1_pin,g_led1_sta);
  }
  else if(g_key==KEY2_PRESS)//KEY2按下,D2指示灯状态翻转
  {
    g_led2_sta=!g_led2_sta;
    digitalWrite(led2_pin,g_led2_sta);
  }
  else if(g_key==KEY3_PRESS)//KEY3按下,D3指示灯状态翻转
  {
    g_led3_sta=!g_led3_sta;
    digitalWrite(led3_pin,g_led3_sta);
  }
  else if(g_key==KEY4_PRESS)//KEY4按下,D4指示灯状态翻转
  {
    g_led4_sta=!g_led4_sta;
    digitalWrite(led4_pin,g_led4_sta);
  }
}



  }
  else if(g_key==KEY3_PRESS)//KEY3按下,D3指示灯状态翻转
  {
    g_led3_sta=!g_led3_sta;
    digitalWrite(led3_pin,g_led3_sta);
  }
  else if(g_key==KEY4_PRESS)//KEY4按下,D4指示灯状态翻转
  {
    g_led4_sta=!g_led4_sta;
    digitalWrite(led4_pin,g_led4_sta);
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/947148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

stm32----SPI协议

一、概述 SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外围设备接口&#xff09;&#xff0c;是Motorola公司提出的一种同步串行接口技术&#xff0c;是一种高速、全双工、同步通信总线&#xff0c;在芯片中只占用四根管脚用来控制及数据传输&#xff0c;节约…

jmeter性能测试入门完整版

1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言&#xff0c;JMeter小巧轻便且免费&#xff0c;逐渐成为了主流的性能测试工具&#xff0c;是每个测试人员都必须要掌握的工具之一。 本文为JMeter性能测试完整入门篇&…

IT项目标准实施流程

一、IT项目标准实施流程、参与角色与职责架构图 二、IT项目阶段交付文档明细目录 NO. 阶段 中文名称 英文名称 缩写 是否必须 1 1.分析 1.1 项目业务需求分析文档 Business Requirement analysis Document BRD X 2 2.设计 2.1 硬件&软件配置清单 Bill Of Ma…

Excel:如何实现分组内的升序和降序?

一、POWER 1、构建辅助列D列&#xff0c;在D2单元格输入公式&#xff1a; -POWER(10,COUNTA($A$2:A2)3)C2 2、选中B1:D10&#xff0c;注意不能宣导A列的合并单元格&#xff0c;进行以下操作&#xff1a; 3、删除辅助列即可 二、COUNTA 第一步&#xff0c;D2建立辅助列&#xf…

6.Redis-hash

hash 哈希类型中的映射关系通常称为field-value&#xff0c;⽤于区分 Redis 整体的键值对&#xff08;key-value&#xff09;&#xff0c;注意这⾥的value是指field对应的值&#xff0c;不是键&#xff08;key&#xff09;对应的值&#xff0c;请注意 value 在不同上下⽂的作⽤…

同源策略与解决方法

同源策略与解决方法 1.浏览器的同源策略 1.1 同源策略 同源策略&#xff08;same origin policy&#xff09;&#xff0c;一种安全策略&#xff0c;用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互。 浏览器默认两个不同的源之间是可以互相访问资源和…

reactantd(12)动态表单的默认值问题

最近遇到一个需求是有一个表单可以输入各种信息&#xff0c;然后还需要有一个编辑功能&#xff0c;点击编辑的时候需要把当前数据填入到表单里面。在网上查了很多种方法&#xff0c;然后我的思路是使用initialValues搭配setState()使用。默认值都为空&#xff0c;然后点击单条数…

Microsoft Edge 主页启动diy以及常用的扩展、收藏夹的网站

一、Microsoft Edge 主页启动diy 二、常用的扩展 1、去广告&#xff1a;uBlock Origin 2、翻译&#xff1a; 页面翻译&#xff1a;右键就有了&#xff0c;已经内置了划词翻译 3、超级复制 三、收藏夹的网站

函数(个人学习笔记黑马学习)

1、函数定义 #include <iostream> using namespace std;int add(int num1, int num2) {int sum num1 num2;return sum; }int main() {system("pause");return 0; } 2、函数的调用 #include <iostream> using namespace std;int add(int num1, int num2…

java内存模型讨论及案例分析

常用内存选项 -Xmx&#xff1a; 最大堆大小 -Xms&#xff1a;最小堆大小 -Xss &#xff1a;线程堆栈大小&#xff0c;默认1M 生产环境最好保持 Xms Xmx java内存研究 内存布局 可见&#xff1a; 堆大小 新生代 老年代&#xff0c;新生代EFrom SurvivorTo Survivor。新…

【数学建模竞赛】各类题型及解题方案

评价类赛题建模流程及总结 建模步骤 建立评价指标->评价体系->同向化处理&#xff08;都越多越好或越少越少&#xff09;->指标无量纲处理 ->权重-> 主客观->合成 主客观评价问题的区别 主客观概念主要是在指标定权时来划分的。主观评价与客观评价的区别…

Vulnhub内网渗透DC-6靶场通关

个人博客 xzajyjs.cn IP DC-6: 192.168.168.4 Kali: 192.168.168.5 信息搜集 arp-scan -l # nmap -sn 192.168.168.0/24进行主机发现&#xff0c;探测到靶机IP。 使用nmap进行端口扫描 nmap -sV -A 192.168.168.4开放了一个ssh和http端口&#xff0c;80端口是wordpress5.1…

MinIO框架安装使用+实现上传需求

MinIO框架 什么是MinIO框架如何安装&#xff08;Docker版&#xff09;安装步骤1. 查询MinIO的服务版本2. 拉取MinIO3.启动报错在docker中没有操作文件的权限 4. 访问 简单配置1.找到创建用户界面2. 设置用户信息3. 创建一个桶 使用MinIO依赖搭建MinIO的初始化API存储桶的基本操…

uniapp 开发小程序,封装一个方法,让图片使用线上地址

1.在main.js文件中&#xff0c;添加以下代码&#xff1a; 复制使用&#xff1a; // 图片使用网络地址 Vue.prototype.localImgSrc function(img){//项目的地址域名&#xff0c;例如百度return "https://baidu.cn/static/index/images/" img; }2.在页面中直接使用&…

PMP是什么?项目管理证书好考吗?

PMP是由项目管理协会&#xff08;Project Management Institute&#xff0c;简称PMI&#xff09;发起的项目管理专业人士资格认证&#xff0c;严格评估项目管理人员知识技能是否具有高品质的资格认证考试。PMP证书究竟难不难考呢&#xff1f;接下来的文章将简要讨论PMP证书的考…

git 基础

1.下载安装Git&#xff08;略&#xff09; 2.打开git bash窗口 3.查看版本号、设置用户名和邮箱 用户名和邮箱可以随意起&#xff0c;与GitHub的账号邮箱没有关系 4.初始化git 在D盘中新建gitspace文件夹&#xff0c;并在该目录下打开git bash窗口 git init 初始化完成后会…

【微服务部署】06-日志集成

文章目录 1. EFK日志三件套集成1.1 核心组件1.2 部署 2. Exceptionless日志系统2.1 Exceptionless核心特性2.2 Exceptionless部署文件2.3 K8s中使用Exceptionless 1. EFK日志三件套集成 1.1 核心组件 Elasticsearch&#xff08;存储&#xff09;Fluentd&#xff08;收集器&am…

文件上传漏洞-upload靶场3-4(全网最详细解读)

文件上传漏洞-upload靶场3-4关通关笔记&#xff08;全网最详细解读&#xff09; upload 第三关&#xff08;特殊后缀&#xff09; 思路 按照第一关和第二关的思路&#xff0c;先随便上传一个文件用burpsuite工具抓包&#xff0c;看它到底是前段验证还是后端验证。 上传一个we…

ADB安装及命令-自用查询

常用ADB命令整理 ADB简介常用命令整理查看设备及安装卸载屏幕事件⽇志查询查询系统服务情况其它 adb 命令 ADB安装ADB连接设备Android 实体机连接准备Android 虚拟机连接准备 ADB简介 ADB&#xff0c;即 安卓调试桥 (Android Debug Bridge, adb)&#xff0c;它是 Android 开发…

分布式系统的多数据库,实现分布式事务回滚(1.7.0 seata整合2.0.4nacos)

正文 1、解决的应用场景是分布式事务&#xff0c;每个服务有独立的数据库。 2、例如&#xff1a;A服务的数据库是A1&#xff0c;B服务的数据库是B2&#xff0c;A服务通过feign接口调用B服务&#xff0c;B涉及提交数据到B2&#xff0c;业务是在B提交数据之后&#xff0c;在A服…