Go Down

Topic: Sleutelschakelaar gebruik (Read 2284 times) previous topic - next topic

DieterKoblenz

Voor mijn project heb ik een sleutelschakelaar gekocht met drie standen (links, midden, rechts) die ik wil integreren.

De bedoeling is dat het "hoofd" programma draait als de sleutel in het midden staat en dat ik in dit geval een menu wil openen als ik de sleutel naar links draai en een ander menu als de sleutel naar rechts gaat.

Ik heb mijn hoofd hierover gebroken en ik dacht zelf aan een switch case constructie maar ik ben er nog niet uit.

robtillaart

heb je een electrisch schema van de schakelaar?

waarschijnlijk moet je 3 digitale pinnen checken of je maakt een resistor ladder op een analoge poort.

5V ---[ R1 ] ----L  ----[R2] ----M----[R3] -----R-----[R4] ---ArduinoAnalog ----[R5]-------0V

Common van de schakelaar aan 5V, alle weerstanden 10Kohm en je moet de verschillende standen kunnen onderscheiden.

Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

DieterKoblenz

Oh sorry ik was blijkbaar niet duidelijk! Het aansluiten is geen probleem, ik heb 3 digitale pinnen en ik kan checken op welke stand hij staat (100,010,001)

Ik heb echter drie functies die moeten draaien Func1(), Func2(), Func3(). Dmv een state case machine kan ik dat al doen.

Quote
State(mode)
case 1:
Func1();
break;
case 2:
Func2();
enz


Maar wat ik wil dat bij een verandering van de state, eenmalig een bericht op mn lcd scherm komt (of een Serial.print(mode))).

MAS3

Hoi.

Niet te ingewikkeld denken.
Je kunt de State waarin je zit bijhouden in een extra variabele (oldState misschien ?).
Als je verandert van state, is er nog een andere state opgeslagen in die variabele.
In dat geval zet je een vlag, die aangeeft dat de boodschap weergegeven moet worden.
Direct na het zetten van die vlag, doe je een update van die variabele naar de zojuist geconstateerde state.
Verder start je dan eventueel een teller.
Zolang de teller nog niet verlopen is en de vlag niet is gereset, laat je de boodschap dan zien.
Het verlopen van de teller zal dan ook de vlag resetten.
Dit stukje van je code zit in de loop, maar wel buiten je switch ... case (¿ is er ook een State ... case, of is dat een vergipsing  ?).
Ik hoop dat dit duidelijk is.

Verder gebruik je 3 bits voor 3 mogelijkheden, en gooi je dus 4 à 5 mogelijkheden overboord (afhankelijk van of nul, nul, nul ook een mogelijkheid is).
Met twee diodes kun je ook die drie standen in twee bits kwijt en spaar je je een ingang uit.
Nul, nul, nul gebruik je dan dus niet maar als je een vierde keus nodig zou hebben is dat 'm.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

ArtificialUser

Ik heb mijn hoofd hierover gebroken en ik dacht zelf aan een switch case constructie maar ik ben er nog niet uit.
Ik zou gewoon een switch gebruiken, ja.

Go Up