interrupts

als ik het goed begrijp moet currentState++; 1x in loop zitten en niet in elke case? zo als jouw voorbeeld.

maar het klinkt idd wel als een goed idee.

Ik zet het in principe altijd in the'case'. Niet iedere 'case' verhoogt de currentState; kijk naar de default 'case' die currentState terugzet naar 0.

Maar je bent vrij om een andere benadering te kiezen ;)

ja nu snap ik hem helemaal :) super simpel eigelijk.

Wat ik zelf altijd doe bij het ophogen van die nummer is een enum maken:

enum programmaStappen {
   stap1,
   stap2,
   stap3
};

En dan in die switch case krijg je::

switch (currentState) {
   case stap1:
           // hier de code voor stap 1
          break;
   case stap2:
        // enz

Bij een statemachine waar je volgende stap afhangt van variabelen heeft dat zin omdat je dan iets als currentState = stap3; gebruikt.

Voor deze code heeft dat niet echt zin en is alleen extra type werk ;)

sterretje: Bij een statemachine waar je volgende stap afhangt van variabelen heeft dat zin omdat je dan iets als

currentState = stap3;

gebruikt.

Voor deze code heeft dat niet echt zin en is alleen extra type werk ;)

Tot dat je er een stap tussen in moet maken. Bijvoorbeeld tussen stap 2 en stap 3. Dan moet je alle case nummers daarna aanpassen. Ik hoef alleen maar de enumeratie tabel aan te passen en klaar(bijvoorbeeld stap2a). Ik ben sowieso geen voorstander van 'harde coderingen' in software. Maar dat is persoonlijk.

Tot dat je er een stap tussen in moet maken. Bijvoorbeeld tussen stap 2 en stap 3. Dan moet je alle case nummers daarna aanpassen. Ik hoef alleen maar de enumeratie tabel aan te passen en klaar(bijvoorbeeld stap2a). Ik ben sowieso geen voorstander van 'harde coderingen' in software. Maar dat is persoonlijk.

Hmm, daar heb je inderdaad gelijk in.

Weer wat geleerd.

nicoverduin:
Tot dat je er een stap tussen in moet maken. Bijvoorbeeld tussen stap 2 en stap 3. Dan moet je alle case nummers daarna aanpassen. Ik hoef alleen maar de enumeratie tabel aan te passen en klaar(bijvoorbeeld stap2a). Ik ben sowieso geen voorstander van ‘harde coderingen’ in software. Maar dat is persoonlijk.

Enums zijn fantastisch voor dit soort toepassingen. Vroeger gebruikte ik ‘defines’ en ‘const ints’ maar dan moest je constant je nummers updaten met het risico dat je een foutje maakte. Als je een extra enum toevoegt in de lijst heb je gelijk het aantal elementen dat je dan weer heel handig kan gebruiken in allerlei declaraties en operaties.

enum { AAN, UIT, RECHTS, LINKS, AANTAL };

int ops[AANTAL];

for ( int i = 0; i < AANTAL; i++ ) {
}

Scheelt gegarandeerd een hoop fouten.

Het is jammer dat er zo weinig aandacht besteed wordt aan enumerators. Of dat dan helpt weet ik niet. De meesten slaan nog steeds de Arduino reference over. Wat op zich jammer is.
@tinkerspy: Wanneer kom je met je eigen threadje? Ik heb even snel gekeken op Github. Niets mis mee, maar ik vind niet dat die discussie in welke andere thread gevoerd moet worden.

enumerators

ja dat is iets waar ik ook eens in moet gaan duiken.

ik ben begonnen met de starterkit / boek. en na een jaar kom je er achter dat je heel on-efficient bezig bent. de arduino reference heeft mij altijd goed geholpen.

nicoverduin: Het is jammer dat er zo weinig aandacht besteed wordt aan enumerators. Of dat dan helpt weet ik niet. De meesten slaan nog steeds de Arduino reference over. Wat op zich jammer is. @tinkerspy: Wanneer kom je met je eigen threadje? Ik heb even snel gekeken op Github. Niets mis mee, maar ik vind niet dat die discussie in welke andere thread gevoerd moet worden.

Hi Nico,

Dat threadje komt nog wel. Misschien beter om dat naar aanleiding van een specifiek 'event' te doen, bijv. een volgende release (0.2.0). Dit is mijn eerste echte OSS project en ik worstel nog wat met het geeigende moment om de boel te bevriezen en wat artikelen te gaan schrijven.

Eerst moet ik nog een videootje maken voor een Amerikaanse wasserette-eigenaar die zijn hoop op mij heeft gevestigd om zijn wasmachines te moderniseren. Als dat ooit lukt is het in ieder geval geschikt voor newbies. ;-)

Rgdz, Tinkerspy

bij een state machine gebruik ik of inderdaad enumerators, maar ook wel vaker getallen 100,200 etc en dan in elk stuk 110,120 etc. dan kan ik er altijd een tussen stoppen (ja dat kan bij enumerators ook, en dan heb je het voordeel dat je ze goede namen kunt geven, maar ach oude vent blijft oude methodes gebruiken.

shooter: maar ach oude vent blijft oude methodes gebruiken.

Volgens mij ben ik ouder.... gewoon mee deinen met de tijd.... En al het goede gewoon meenemen. :grin: