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");
	  }
	}
					
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值