Arduino教程入门系列-第二十五课-EEPROM的读写与获取串口数据流

EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器,他是一种掉电后数据不丢失的存储芯片。



具体能做什么呢?比如~数字密码保险箱的密码掉电后不能丢失,他一般都是存放在EEPROM里面的。再比如,一些设备需要根据不同场合,输入特定的环境参数,每次启动要加载这些参数,这些参数,也是放在EEPROM里面的。



下面的代码,我们是让Arduino不停地从0号地址位开始的读取EEPROM,把读取到的数值通过串口输出到电脑上。同时,我们通过串口向Arduino输入数字,更新从0号地址位开始的EEPROM信息。间接的更新了输出到电脑上的数值。



我们这次使用的是Arduino官方的EEPROM库,但是官方库有一个遗憾,每次只能读取或者写入一个地址位~~所以我们在代码开头。。定了了两个函数EEPROM_write与EEPROM_read。括号内第一个参数是起始地址位,第二个就是写入的变量。



ARDUINO 代码复制打印

#include <EEPROM.h>
#define EEPROM_write(address, p) {int i = 0; byte *pp = (byte*)&(p);for(; i < sizeof(p); i++) EEPROM.write(address+i, pp[i]);}
#define EEPROM_read(address, p)  {int i = 0; byte *pp = (byte*)&(p);for(; i < sizeof(p); i++) pp[i]=EEPROM.read(address+i);}
 
unsigned long incomingByte = 0;   // 定义无符号长整数型变量incomingByte初始值为0
 
void setup() {
  Serial.begin(9600);     // 打开串口,设置数据传输速率9600
}
 
void loop() {
 
 
  if (Serial.available() > 0) {
    incomingByte = Serial.parseInt();  //读取串口传入的下一个有效整数,把该整数赋值给incomingByte变量
    EEPROM_write(0,incomingByte)   //把incomingByte变量从0地址位开始写入EEPROM
 
  }
  EEPROM_read(0,incomingByte) //从0地址位开始读取EEPROM,把值写入变量incomingByte
  Serial.println(incomingByte); //通过串口输出
  delay(1000);
}<br />



上效果视频~请点击全屏看。。。



这次我们用到了一个串口命令Serial.parseInt(),他的作用是查找传入的串行数据流中的下一个有效的整数。Serial.read()只能每次读取一个字节。。。使用起来并不是很方便。Serial.parseInt()能一次读取一个数据流。。弥补了这方面使用上不便的缺陷。

Serial.parseInt()更多资料请查看WIKI
via - 极客工坊

标签: Arduino教程