er zijn 4 ingangen, die de waarde van 'teller' verhogen of verlagen.
elke ingang heeft een eigen waarde om toe te voegen of af te trekken 1-2-3-4
onderstaande schets werkt niet, waarom niet???
de waarde is òf 10 òf 0 ik zie geen tussenliggende waarden verschijnen
waar of wat doe ik fout?
na een hele dag tobben hoop ik dat een van de experts mij het antwoord kan geven
Is dit stukje bedoeld om je idee te testen, of wil je het echt op deze manier gaan gebruiken.
Ik vraag dat omdat je op meerdere wijzen op dezelfde waarde van teller kunt komen, waardoor je uit die waarde dus geen conclusies kunt trekken.
Wanneer je niet plus of min 1, 2, 3, 4 doet maar steeds verdubbelt dus 1,2,4,8, dan kun je wel precies weten hoe je tot de inhoud van teller bent gekomen (feitelijk tel je dan met een halve byte).
En je kunt de code efficiënter maken door maar 1 keer te testen per pin:
Zo lees je de ingang maar 1 keer zodat je niet tussen de 2 keer lezen ineens een verschil zou kunnen hebben.
En omdat je een digitale waarde leest, betekent dat dat de voorwaarde wanneer je een 1 leest voldaan wordt, en wanneer je een 0 leest wordt er niet aan voldaan, zodat je bij alle mogelijke uitkomsten kunt weten wat te doen.
Wellicht leest dat voor de programmeur wat minder handig, maar je code wordt er wel meer efficient van.
Kun je in het vervolg a.u.b. je programma hier plaatsen met zogenaamde code tags. Op die manier is je programma makkelijker te lezen en makkelijker te copieren; het zorgt er ook voor dat de forum software het op de juiste manier toont.
Code tags zijn in principe 3 backticks (```) op hun eigen regel.
```
programma hier
Wat jullie over het hoofd zien is dat "teller" op moduleniveau gedeclareerd is, en dus zijn waarde behoudt na het uitvoeren van loop(). Als je int teller = 0; in loop() plaatst is volgens mij het probleem opgelost.
Dat ligt er maar net aan wat je wil bereiken met de sketch.
De originele sketch stelt grenzen aan de waardes die niet lager dan nul en niet hoger dan tien kunnen gaan, voordat deze waarde wordt gecommuniceerd.
Het kan best zijn dat die waarde helemaal niet bij elke iteratie moet worden gereset (en omdat daarover ook niet gecommuniceerd is, hebben wij ook geen enkele manier om te weten of dat zo is of niet).
Als debug methode kan TS nog telkens wanneer er een ingang beoordeeld is de nieuwe waarde naar serieel sturen, en een korte pauze doen (zodat ie die waarde ook voorbij kan zien flitsen).
In dat geval kun je dus die waarde zien ontstaan en werkelijk weten of alle ingangen geregistreerd worden.
Gezien de naam van deze thread, lijkt het alsof er 4 sensoren elk op een hoek zitten, die getest moeten worden.
Maar ook dat is een aanname en daarmee niet per se waar.
Ik heb aangenomen dat TS de status van de vier schakelaars wilde monitoren, en dat kan alleen als "teller" telkens op nul begint. De regels die de waarden > 10 resp. < 0 afkappen zijn m.i. volkomen zinloos, en leiden alleen maar tot verwarring; je ziet nl. niet welke waarde "teller" heeft na het doorlopen van de acht regels met "digitalRead"!
@drejansen: Probeer het eens met int teller = 0; als eerste regel in loop(), en zonder de beide regels met "if (teller ..." etc. ?