// Storing variables in EEPROM
// Sequential read / write of variables.
#include <EEPROM.h>
#define BUTTON_TEST 5
#define EEADDR 166 // Start location to write EEPROM data.
staticunsigned 在 tminx,maxx,miny,maxy;
voidshow_vars(void){
Serial.print("MIN x ");Serial.println(minx);
Serial.print("MAX x ");Serial.println(maxx);
Serial.print("MIN y ");Serial.println(miny);
Serial.print("MAX y ");Serial.println(maxy);
}
voidsetup(){
pinMode(BUTTON_TEST,INPUT_PULLUP);
pinMode(LED_BUILTIN,OUTPUT);
digitalWrite(LED_BUILTIN,LOW);
Serial.begin(115200);
Serial.println("EEPROM variable read and write.");
// Read EEPROM
在 tEEAddr=EEADDR;
EEPROM. .get(EEAddr,minx);EEAddr+=sizeof(minx);
EEPROM. .get(EEAddr,maxx);EEAddr+=sizeof(maxx);
EEPROM. .get(EEAddr,miny);EEAddr+=sizeof(miny);
EEPROM. .get(EEAddr,maxy);EEAddr+=sizeof(maxy);
show_vars();
}
voidloop(){
staticunsignedlongtimeWas,timeNow;
在 tr=random(100,65535);
minx=r;
maxx=r+1;
miny=r+2;
maxy=r+3;
Serial.println("Press button to write to EEPROM");
if(digitalRead(BUTTON_TEST)==0){
digitalWrite(LED_BUILTIN,HIGH);
在 tEEAddr=EEADDR;
timeWas=micros();
EEPROM. .put(EEAddr,minx);EEAddr+=sizeof(minx);
EEPROM. .put(EEAddr,maxx);EEAddr+=sizeof(maxx);
EEPROM. .put(EEAddr,miny);EEAddr+=sizeof(miny);
EEPROM. .put(EEAddr,maxy);EEAddr+=sizeof(maxy);
timeNow=micros();
Serial.println("EEPROM Written");
show_vars();
Serial.print("EEPROM Write time (us) ");
Serial.println(timeNow-timeWas);
Serial.print("EEPROM Write time per byte (us) ");
Serial.println((timeNow-timeWas)/(4*sizeof(minx)));// same type.
delay(500);
digitalWrite(LED_BUILTIN,LOW);
}
delay(500);
}
[eeprom1.ino]
这里'串行监视器的输出示例:
Press button to write to EEPROM
EEPROM Written
MIN x 58478
MAX x 58479
MIN y 58480
MAX y 58481
EEPROM Write time (us) 23300
EEPROM Write time per byte (us) 2912
Press button to write to EEPROM
Press button to write to EEPROM
Press button to write to EEPROM
Press button to write to EEPROM
EEPROM variable read and write.
MIN x 58478
MAX x 58479
MIN y 58480
MAX y 58481
Press button to write to EEPROM
较低的文本开始'MIN X'击中后的读回输出
重置按钮。第一个是'write action' after hitting the
push button.
// Storing struct variables in EEPROM
// Sequential read / write of variables.
#include <EEPROM.h>
#define BUTTON_TEST 5
#define EEADDR 166 // Start location to write EEPROM data.
// Put variables into structure.
struct存储数据_s{
floatkp;// kp, ki and kd store normalised values to 1000ms
floatki;// They are recalculated in the PID algorithm
floatkd;// proportional to the sample time.
在 tdt;// SampleTime
在 tlimitR;// limit roll
在 tlimitP;// limit pitch
};
存储数据_s存储数据={1,0.1,0,1000,30,60};
voidshow_vars(存储数据_s*p){
Serial.print("Kp ");Serial.println(p->kp);
Serial.print("Ki ");Serial.println(p->ki);
Serial.print("Kd ");Serial.println(p->kd);
Serial.print("dt ");Serial.println(p->dt);
Serial.print("LR ");Serial.println(p->limitR);
Serial.print("LP ");Serial.println(p->limitP);
}
voidsetup(){
pinMode(BUTTON_TEST,INPUT_PULLUP);
pinMode(LED_BUILTIN,OUTPUT);
digitalWrite(LED_BUILTIN,LOW);
Serial.begin(115200);
Serial.println("EEPROM struct read and write.");
// Read EEPROM
EEPROM. .get(EEADDR,存储数据);
show_vars(&存储数据);
}
voidloop(){
staticunsignedlongtimeWas,timeNow;
在 tr=random(100,65535);
存储数据.kp=r++;
存储数据.ki=r++;
存储数据.kd=r++;
存储数据.dt=r++;
存储数据.limitR=r++;
存储数据.limitP=r++;
Serial.println("Press button to write struct to EEPROM");
if(digitalRead(BUTTON_TEST)==0){
digitalWrite(LED_BUILTIN,HIGH);
timeWas=micros();
EEPROM. .put(EEADDR,存储数据);
timeNow=micros();
Serial.println("EEPROM Written");
show_vars(&存储数据);
Serial.print("EEPROM Write time (us) ");
Serial.println(timeNow-timeWas);
Serial.print("EEPROM Write time per byte (us) ");
Serial.println((timeNow-timeWas)/(sizeof(存储数据)));delay(500);
digitalWrite(LED_BUILTIN,LOW);
}
delay(500);
}
[eeprom2.ino]
这里 an example of the output from the serial monitor:
Press button to write struct to EEPROM
EEPROM Written
Kp -4639.00
Ki -4638.00
Kd -4637.00
dt -4636
LR -4635
LP -4634
EEPROM Write time (us) 46596
EEPROM Write time per byte (us) 2588
Press button to write struct to EEPROM
Press button to write struct to EEPROM
Press button to write struct to EEPROM
Press button to write struct to EEPROM
Press button to write struct to EEPROM
Press button to write struct to EEPROM
Press button to write struct to EEPROM
EEPROM struct read and write.
Kp -4639.00
Ki -4638.00
Kd -4637.00
dt -4636
LR -4635
LP -4634
Press button to write struct to EEPROM
新的! Comments
让你说到你刚刚阅读的东西!留下下面的框中的评论。