EEPROM,叫作电可擦可编程可读寄存器(是否是以为好官方,不知道是什么鬼?反正我也一脸懵逼),只须要知道这是一种断电后数据不会丢失的存储设备,能够用来应对须要作记录作保存的场合。简而言之,若想断电后Arduino仍然记住数据,就能够使用EEPROM。至于板子是否支持EEPROM,能够自主去查看板子的简洁。常见Arduino的EEPROM以下:编程
Arduino EEPROM类库中,EEPROM的地址被设定从0开始,每一个地址能够存储1B数据。因此当数据大于1B时,须要逐个字节读写。函数
Arduino有EEPROM类库,只须要调用EEPROM.h头文件,而后使用write()和read()函数就能够对EEPROM进行读写操做;oop
做用:对指定地址写入数据;
语法: EEPROM.write(address,value);
参数:测试
返回值:无;ui
做用:从指定地址读出数据。一次读取1B数据。若是指定地址没有数据,则读出值为255;
语法: EEPROM.read(address);
参数:code
返回值:byte型,返回指定地址存储的数据;blog
注意:it
实验内容:
在setup中往地址0~3中依次写入2~5,而后在loop中读取地址0~3而后把数据打印到串口显示器;
实验代码:class
/** * @Desc 测试EEPROM * @author 单片机菜鸟 * @Date 2016/12/25 * * 注意:Arduino Mega 2560的EEPROM空间是4KB * 也就是4*1024 B = 4096B * 也就是地址是0~4095 */ #include<EEPROM.h> //表示EEPROM的当前地址,也就是即将要写入的地址 int addr = 0; void setup() { // 初始化串口 Serial.begin(9600); //等待串口准备好 while(!Serial); int value = 2; //在地址0~3依次写入2~5 for(int i = addr;i<4;i++){ EEPROM.write(i,value++); //延时100ms 等待写入 delay(100); } } void loop() { // put your main code here, to run repeatedly: Serial.println("read data start"); int value; for(int i = addr;i<4;i++){ value = EEPROM.read(i); Serial.print("addr:"); Serial.print(i); Serial.print("\n"); Serial.print("value:"); Serial.print(value); Serial.print("\n"); } Serial.println("read data end"); while(1); }
实验结果:
语法
总体上这课仍是很是简单的,惟一须要注意就是不要擦写频繁。讲完这课后,我就能够在蓝牙多彩灯加入这个功能了,记录存储当前灯颜色而后下次打开就能够使用。