Nataschabakker:
..ik begrijp hem een klein beetje. Wat ik denk hoe het werkt...
Doordat we als eerste het volgende mee geven:
bool press1 = false;
Dan geven we in de loop iets van het volgende mee:
Als press1 false is dan.....neem button1 niet meer me in de loop?
Of sla ik de plank nu volledig mis? Dat concreet invullen is lastig voor me, sorry.
Is hier een mooi voorbeeld van een sketch waarin bool goed uitgelegd word?
Meestal door zien snap ik deze wat beter.
Hoi.
Het is altijd belangrijk om heel goed te lezen.
Dat is natuurlijk voor mij gemakkelijk gezegd, want mij gaat dat redelijk af.
Maar ik heb geen idee hoe dat voor anderen gaat.
Wat je in bovenstaande stukje verwoordt, is niet wat ik bedoelde.
Jij verandert namelijk ineens een waarde waar je al mee aan de gang was, naar een boolean.
Maar ik maakte er een extra waarde bij die een boolean is, en das wezenlijk anders.
Een boolean, ook wel bool (mag je allebei gebruiken), kan alleen waar of niet waar zijn, en is daarom maar 1 bit groot.
Dat kan je werkruimte schelen, maar dat terzijde.
Inmiddels heeft sterretje je al een stuk code toegeworpen dat ongetwijfeld zal werken op de manier hoe hij het bedacht heeft.
Wat ik bedoelde is dat je moet onthouden of er in het verleden op knop 1 werd gedrukt, want dat deed je niet en is ook het probleem dat je beschreef.
Daarvoor is het wel van belang dat je nog steeds kijkt of er op de 3 knoppen word gedrukt.
Maar als je eenmaal hebt gezien dat er op de knop 1 werd gedrukt, dan moet je telkens iets anders gaan bijhouden, je bent dan dynamisch bezig.
Daarom kijk je dus elke keer als de loop word doorlopen of er op knop 1 word gedrukt.
Als dat zo is, dan maak je de boolean waar.
En als de boolean waar is, dan ga je de potmeter lezen en de daaraan verbonden waarde naar de transistor sturen.
Als die boolean niet waar is, dan sla je dat over.
Wanneer er op knop 2 of 3 werd gedrukt, dan stel je een vaste waarde in.
Die waarde is 100 (ongeveer 40 %), of nul voor stoppen, aan de hand van jouw eigen code.
Als die eenmaal gezet is, dan hoef je die niet telkens opnieuw te zetten of bij te houden, en das dus anders dan wanneer je de analoge uitgang wil laten afhangen van waar de potmeter staat.
Dat is per definitie dus niet dynamisch.
Daarom had ik dus pressed1 bedacht, pressed1 is niet hetzelfde als press1 maar is er wel van afhankelijk.
Press is tegenwoordige tijd, pressed is verleden tijd.
Het maakt geen zier uit hoe je het noemt, als je er maar voor zorgt dat de namen niet hetzelfde zijn.
Dus als jij liever druk1 en gedrukt1 gebruikt, dan is dat geen enkel probleem.
Wanneer je nu ziet dat press1 is ingedrukt, dan maak je pressed1 dus true.
Zie je dat press2 of press3 is ingedrukt, dan maak je pressed1 false, en stel je de bij de ingedrukte knop behorende waarde in (100 of nul dus).
Daarna ga je, als pressed1 true blijkt te zijn, de potmeter uitlezen en verwerken.
De volgende keer als je door de loop heen gaat en knop 1 hebt losgelaten, dan is press1 dus niet meer actief, maar pressed1 is nog steeds actief.
Daarom zal dan nog een keer de nieuwe waarde van de potmeter worden opgehaald en verwerkt.
Tot dat er op een andere knop word gedrukt, want dan is pressed1 ineens niet meer true (en dus false).
Ik weet niet hoe ik dat beter zou kunnen uitleggen.
In het voorbeeld van sterretje (volgens zijn beschrijving), onthoud je ook of je op 1 van die andere 2 knoppen hebt gedrukt.
Daarmee kun je je code een beetje efficiënter maken, das zeker waar.
Maar dat kun je niet in een boolean stoppen, want je hebt er met 3 knoppen minimaal 2 bits voor nodig.
Dat laatste is verder niet zo heel interessant hoor.
Tijdens het typen van dit bericht meen ik me te herinneren dat je ook wilde dat je niet van stilstand naar vaste waarde kon.
Dus dan moet je wel degelijk ook bijhouden of je wel in het verleden op knop 3 hebt gedrukt.
Je vroeg ook naar een voorbeeld sketch met een boolean waarde.
Helaas kan ik je daar geen voorbeeld van aandragen, ik ken er geen die alleen dat doen.