我正在寻找一个原因,我的arduino无法使用我的代码。
此代码有效:
Events *wsk;
if(Day==0)
wsk = &Pon;
if(Day==1)
wsk = &Wt;
但是当我再添加一条指令时:
Events *wsk;
if(Day==0)
wsk = &Pon;
if(Day==1)
wsk = &Wt;
if(Day==2)
wsk = &Sr;
它不起作用。谁知道为什么? Arduino甚至不在setup()上打印一个简单的'hello'串行消息。
这是我的全部功能:
void showMeEvents(int Day){
String buffer="EU";
zdarzenia *wsk;
if(Day==0)
wsk = &Pon;
if(Day==1)
wsk = &Wt;
//not working when i add this part from here:
if(Day==3)
wsk = &Sr;
if(Day==4)
wsk = &Czw;
if(Day==5)
wsk = &Pia;
if(Day==6)
wsk = &So;
// to here
buffer+=0;
if(wsk->eventsInDay<10)
buffer+=0;
buffer+=wsk->eventsInDay;
for(int i=0; i<wsk->eventsInDay; i++){
buffer += wsk->type;
if(wsk->eventPin[i]<10)
buffer += 0;
buffer += wsk->eventPin[i];
buffer += wsk->alwaysOn[i];
if(wsk->fromH[i]<10)
buffer += 0;
buffer += wsk->fromH[i];
if(wsk->fromM[i]<10)
buffer += 0;
buffer += wsk->fromM[i];
if(wsk->toH[i]<10)
buffer += 0;
buffer += wsk->toH[i];
if(wsk->toM[i])
buffer += 0;
buffer += wsk->toM[i];
if(wsk->toS[i]<10)
buffer += 0;
buffer += wsk->toS[i];
}
Serial.println(buffer);
}
答案 0 :(得分:1)
你用了多少ram?我在过去发现,当我接近arduino上可用ram的95%使用时,你开始看到腐败而没有任何警告。如果您在函数内声明,则必须计算手动使用的内存量。
祝你好运。答案 1 :(得分:1)
有时候这些事情并不像你想要的那样有效。试试这个
if(Day==0)
wsk = &Pon;
else if(Day==1)
wsk = &Wt;
else if(Day==3)
wsk = &Sr;
else if(Day==4)
wsk = &Czw;
else if(Day==5)
wsk = &Pia;
else if(Day==6)
wsk = &So;
甚至更好
switch(Day)
{
case 0: { wsk = &Pon; break; }
case 1: { wsk = &Wt; break; }
case 3: { wsk = &Sr; break; }
case 4: { wsk = &Czw; break; }
case 5: { wsk = &Pia; break; }
case 6: { wsk = &So; break; }
default: break;
}
答案 2 :(得分:0)
这不编译。如果3-6,请删除空,然后使用ifs开始使用块{}。
if(Day==0)
wsk = &Pon;
if(Day==1)
wsk = &Wt;
if(Day==3)
if(Day==4)
if(Day==5)
if(Day==6)
答案 3 :(得分:-1)
感谢您的回复。我的问题是由以太卡lib的RAM使用过多造成的。我刚用其他库用于enc28j60模块,它正在工作! :)
讽刺语言错误。