01-基础例程1

文章介绍了使用ESP32进行LED流水灯、蜂鸣器发声和继电器控制的基本实验,包括接线说明、代码实现和实验现象,以及如何通过按键控制LED灯的实例。
摘要由CSDN通过智能技术生成

基础例程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);
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值