een tel systeem

.

project tellen.doc (29.5 KB)

Hoi rogerduin, en welkom.

Je hebt gelijk, je probleem is mij niet duidelijk.
Je hebt je code gepost als een *.doc.
Dat heb ik zelf liever niet, want het is niet te zeggen wat daarin zit en is mogelijk niet veilig.
Er is pas een nieuwe software voor dit board geïnstalleerd, waardoor er aardig wat kinderziekten zijn.
Het is mogelijk dat de limiet die je tegenkwam daar mee te maken heeft.
En het kan net zo goed zijn dat je hierdoor geen ander (meer naar mijn smaak) bestandsformaat kon kiezen.

Als ik je code bekijk, dan zie ik Engels commentaar, maar ook incorrect commentaar.
Aks je commentaarregels gebruikt, moet je er wel voor zorgen dat je die ook bijwerkt als je je code bijwerkt, anders heeft dat totaal geen zin.
In je code word een paar keer geroepen dat er een seconde word gewacht (in extremis, dat wel), maar in werkelijkheid is dat een halve seconde.

De code die je hebt gepost ziet er uit als iets dat je hebt gemaakt of ergens hebt gevonden, en toen twee keer achter elkaar hebt geplakt.
Dat meen ik te kunnen zien aan het stukje waarin debouncing word genoemd (weet je wat en waarvoor dat is ?).
Dat komt twee keer (onterecht) voor in een cyclus en slaat daarom eigenlijk nergens op.
Die debounce vertraging duurt 0,02 seconden.
Maar daarna kijk je niet nog eens of er op de knop (of waar je signaal ook vandaan komt) gedrukt is.
En de vertraging volgt op twee andere vertragingen, die samen een hele seconden de wereld stilzetten (om een lamp een halve seconde , weet niet waarvoor de tweede er is, te laten branden).

Ik vermoed (weet dat dus niet zeker) dat je probleem (waar je je vraag om stelde) er mee te maken heeft dat je teller 1 laat afhandelen, als je iets met teller 2 gaat doen.
En als er iets met teller 1 gedaan moest worden, doe je dat daarna nog een keer.
Dus bekijk dat nog eens zou ik zeggen.

zie de teller als een encoder, dan heb je dus als a laag is en b gaat omhoog een plus als a hoog is en b gaat omhoog dan min.
je kunt natuurlijk twee sluizen tegelijk doen.

Hoi.

Het lijkt me verstandig om de gecombineerde code eens op je gemak door te lopen.
Je komt vanzelf dingen tegen die opgeruimd kunnen worden.

Zo vroeg ik in mijn vorige antwoord aan je of je weet wat debouncing is, en waar dat voor dient.
Als je dat weet, dan weet je ook dat je daar wat van uit je huidige code kunt slopen want dat heb je twee keer mee gekopieerd.
Bovendien word er volgens mij niets gedaan dat op debouncing lijkt.
Want daarvoor moet je wel twee keer kijken (of eigenlijk lezen).

Nu ik nog eens naar je code kijk, zie ik ook nog een vergipsing aan het begin van 'loop', diens 3e regel.
Daar staat een IF statement, maar met geen uit te voeren handeling erin.
Dus: Als OphoogStaat niet gelijk is aan LaatsteOphoogStaat
.
.
.
(niets dus)

Vervolgens ga je de twee knoppen nog een keer uitlezen, en dat doe je altijd, onafhankelijk van iets anders.
Volgens mij wilde je hier eerst kijken of er iets veranderd was, dan even wachten, en dan nog eens kijken of er NIETS veranderd is.
Dat is dus het eerder al aangehaalde debouncing, maar door ontbrekende en/of verplaatste code werkt dit nu niet meer zoals het de bedoeling is.

Dit alles lost waarschijnlijk je probleem niet op maar het is wel een fout.
Daarom lijkt het me best een goed idee dat maar eens op te lossen.
Als je dat gedaan hebt, graag je nieuwe code nog eens plaatsen.