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