一、硬件介绍
1、主控开发板
使用的是XIAO ESP32S3开发板,集成ESP32S3 32位双核处理器芯片,最高运行频率240MHz,板载8MB PSRAM和8MB FLASH

功能引脚示意图

2、Grove Creator Kit 器件
在本次开发中,使用到的 `Grove Creator Kit 套件` 中的器件如下:
Grove - Magnetic Switch
Grove 接口的磁性开关模块,基于封装的干簧管开关CT10,是单极单掷类型具有常开触点,该传感器为双端类型,可通过电磁铁、永久磁铁或两者结合进行驱动;
磁性开关根据接近情况打开或关闭电路;

主要特性

Grove - Red LED(红色LED灯)

二、功能实现
1、硬件搭建
将磁性开关、红色LED模块,通过Grove接口连接到开发板对应的引脚上;

实物搭建效果:

2、功能效果
使用磁铁模拟具有磁性的物质,当磁铁靠近磁性开关时,开关闭合此时点亮红色LED灯,当磁铁远离磁性开关时,开关断开此时红色LED灯熄灭;
串口打印输出当前磁性开关状态;
三、代码编写
主要相关代码
#define MAGNECTIC_PIN D9
#define LED_PIN D10
int magnecticState = -1; // 开关状态
int lastMagnecticState = -1;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 30; //消抖
void setup()
{
pinMode(MAGNECTIC_PIN,INPUT);
pinMode(LED_PIN,OUTPUT);
digitalWrite(LED_PIN,LOW);
Serial.begin(115200);
delay(100);
}
void loop()
{
// 消抖
int rawState = digitalRead(MAGNECTIC_PIN);
if(rawState != lastMagnecticState)
{
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay)
{
if(rawState != magnecticState)
{
magnecticState = rawState;
if(magnecticState == HIGH){
Serial.println("开关已闭合");
digitalWrite(LED_PIN,HIGH); // 点亮 LED
}else{
Serial.println("开关已断开");
digitalWrite(LED_PIN,LOW);
}
}
}
lastMagnecticState = rawState;
}四、程序烧录
1、连接USB数据线至开发板;
2、选择端口号对应的开发板;
3、点击 `上传` 烧录程序到开发板上;

五、效果演示

我要赚赏金
