Frage

Im looking for a reason that my arduino won't work with my code.

This code works:

Events *wsk;
if(Day==0)
    wsk = &Pon;
if(Day==1)
    wsk = &Wt;

But when i add one more instruction like:

Events *wsk;
if(Day==0)
    wsk = &Pon;
if(Day==1)
    wsk = &Wt;
if(Day==2)
    wsk = &Sr;

It's not working. Any one know why ? Arduino are not printing even a simple 'hello' serial message on setup().

Here is my full function:

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);

}
War es hilfreich?

Lösung

How much ram are you using? I've found in the past that when I approach ~95% usage of the available ram on the arduino you begin to see corruption without any warnings. You'll have to calculate how much memory your using by hand if you're declaring within functions.

Good luck.

Andere Tipps

Sometimes these things don't work the way you intend them to. Try this

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;

or even better

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;
}

This does not compile. Remove the empty if 3-6 and start using blocks {} with your ifs.

if(Day==0)
    wsk = &Pon;
if(Day==1)
    wsk = &Wt;
if(Day==3)
if(Day==4)
if(Day==5)
if(Day==6)

Thanks for replys. My problem was caused by too much RAM usage by ethercard lib. I just used other library for enc28j60 module and it's working ! :).

Sry for language mistakes.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top