EEPROM返回的号码错误。获取arduino
在设置功能中,如果单击特定按钮,我将清除EEPROM。 在循环函数开始时,我有以下代码:EEPROM返回的号码错误。获取arduino,arduino,eeprom,Arduino,Eeprom,在设置功能中,如果单击特定按钮,我将清除EEPROM。 在循环函数开始时,我有以下代码: if(millis() - last_sample >= 180){ sampler(); EEPROM.get(stateEEPROMAdress, stateCode); stateCode = getState(stateCode); EEPROM.put(stateEEPROMAdress, stateCode); Serial.println
if(millis() - last_sample >= 180){
sampler();
EEPROM.get(stateEEPROMAdress, stateCode);
stateCode = getState(stateCode);
EEPROM.put(stateEEPROMAdress, stateCode);
Serial.println(stateCode);
}
还有一堆采样代码。
在循环结束时,我有:
if(millis() - last_xbee >= 900){
EEPROM.get(packetEEPROMAdress,packetCount );
EEPROM.get(stateEEPROMAdress,stateCode);
if(!initializing || (stateCode!= 0 && stateCode != 1)){
telemetry[2] = packetCount++;}
telemetry[21] =stateCode;
EEPROM.put(packetEEPROMAdress, packetCount);
。。。。和打印代码
我还在我定义的草图开始处:
const int packetEEPROMAdress = 0;
const int stateEEPROMAdress = packetEEPROMAdress + sizeof(int);
这是getState函数。根据传感器值进行简单的状态确定:
int getState(const int stateCode=0){
int outState;
//state 0
if(stateCode == 0 &&(fabs(verticalSpeed) < 2 || fabs(relativeAltitude) < 5)&&initializing){
outState = 0;
//true should change later to see is launch botton is on
} else
if(missionReady && !initializing && stateCode == 0){
outState = 1;
}else if(verticalSpeed > 3&&stateCode == 1){
outState = 2;
}
//else
//if(VerticalSpeed < 3 && stateCode == 2){
// stateCode = 2;
// //apogee but no code in CDR
//}
else if(verticalSpeed < 2 &&stateCode == 2){
outState = 3;
} else if((fabs(relativeAltitude - 450)< 10 || relativeAltitude<440 ) &&stateCode == 3){
outState = 4;
}else
//true should be replaced with seperation photocell is bright
if(true && stateCode == 4){
outState = 5;
}else if(relativeAltitude < 3 && fabs(verticalSpeed) < .7 && stateCode == 5 ){
outState == 6;
//activate Buzzer stop telemetry
}
return outState;
}
int-getState(const-int-stateCode=0){
内-外状态;
//州0
如果(状态代码==0&&(晶圆厂(垂直速度)<2 | |晶圆厂(相对速度)<5)&&初始化){
超出状态=0;
//true应在以后更改,以查看是否启动botton
}否则
if(任务就绪&&!初始化&&stateCode==0){
超出状态=1;
}否则如果(垂直速度>3&&stateCode==1){
超出状态=2;
}
//否则
//如果(垂直速度<3&&stateCode==2){
//stateCode=2;
////远地点,但CDR中没有代码
//}
否则如果(垂直速度<2&&stateCode==2){
超出状态=3;
}否则如果((fabs(relativealtude-450)<10 | | relativealtude这是一件愚蠢的事情:)
与EEPROM无关。
我没有给出一个初始值来超过EEPROM中存储的这么大的数字,
如果我有你的时间,我很抱歉:)这是件愚蠢的事:)
与EEPROM无关。
我没有给出一个初始值来超过EEPROM中存储的这么大的数字,
对不起,如果我有你的时间:)