Arduino ESP32 通过EEPROM存储按键状态

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino ESP32 通过EEPROM存储按键状态相关的知识,希望对你有一定的参考价值。

Arduino ESP32 通过EEPROM存储按键状态


实例代码

					

	#include <EEPROM.h>
	 
	#define EEPROM_SIZE 1		//数据存储地址位
	 
	const int buttonPin = 4;    // 定义按钮用到的引脚
	const int ledPin = 16;      // 定义LED引脚
	 
	int ledState = HIGH;        
	int buttonState;             
	int lastButtonState = LOW;  
	 

	unsigned long lastDebounceTime = 0;  
	unsigned long debounceDelay = 50;   
	 
	void setup() { 
	  Serial.begin(9600);
	  EEPROM.begin(EEPROM_SIZE);
	 
	  pinMode(buttonPin, INPUT);
	  pinMode(ledPin, OUTPUT);
	 
	  // 从闪存中读取最后一个led状态
	  ledState = EEPROM.read(0);
	  // 将led设置为上次存储的状态
	  digitalWrite(ledPin, ledState);
	}
	 
	void loop() {
	  // 读取开关的状态 并赋值
	  int reading = digitalRead(buttonPin);
	 
	  if (reading != lastButtonState) {
	    // 复位 抖动定时器
	    lastDebounceTime = millis();
	  }
	 
	  if ((millis() - lastDebounceTime) > debounceDelay) {
	 
	    // 检查开关的状态是否改变
	    if (reading != buttonState) {
	      buttonState = reading;
	 
	      if (buttonState == HIGH) {
	        ledState = !ledState;
	      }
	    }
	  }
	  lastButtonState = reading;
	   
	  // 如果led state变量与当前led状态不同
	  if (digitalRead(ledPin)!= ledState) {  
	    Serial.println("State changed");
	    // 改变当前led 的状态
	    digitalWrite(ledPin, ledState);
	    // 保存led的状态到闪存
	    EEPROM.write(0, ledState);
	    EEPROM.commit();
	    Serial.println("State saved in flash memory");
	  }
	}
					

以上是关于Arduino ESP32 通过EEPROM存储按键状态的主要内容,如果未能解决你的问题,请参考以下文章

Arduino ESP32 利用EEPROM对数据进行读写操作

玩转 ESP32 + Arduino (十一) EEPROM NTP对时 蓝牙透传

Arduino框架下ESP32 EEPROM库函数实现对各数据类型保存示例

Arduino ESP8266 For EEPROM数据存储示例

Arduino ESP8266 For EEPROM经典应用案例一

Arduino ESP32将数据保存到NVS中