Enkel knapp knappsats - mikrokontroller
Först ta en titt på schematiskt.
Vad vi har här är 9 knappar och 6 signalledningar (3 ingångar, 3 utgångar). Grundinställningen är i ett rutmönster där de tre ingående linjerna komma ner som kolumner (PIN0, PIN1 och PIN2-), och de tre utdatarader komma över som rader (PIN3, PIN4 och PIN5).
Varje knapp är en momentan på knappen, normalt öppen. Så är vad kommer att hända när vi trycker på knappen som det kommer att göra en koppling mellan att knappens input och output, andra kloka där är ingen anslutning.
Nyckeln här är i programvaran.
Vad programmet kommer att göra är sopa mellan in- och utgångar, för varje kombination mycket snabbt. Jag kommer att beskriva åtgärder för 1 ingång, och sedan det bara upprepar samma steg för varje annan ingång.
För synpunkter på PIN0
--PIN0, 1, 2 definieras som utgångar
--PIN3, 4, 5 definierar som insatsvaror
1. Ange PIN0, PIN1 och PIN2-till låg
2. Ställ in PIN0 till hög
3. Kontrollera om PIN3 är hög eller låg, om hög gå till funktionen SW1
4. Kontrollera om PIN4 är hög eller låg, om hög gå till funktionen SW4
5. Kontrollera om PIN5 är hög eller låg, om hög gå till funktionen SW7
6. Ställ PIN0 till låg
Sedan upprepas med det enda som skiljer är vilken ingångsstift är inställd på hög, och namnen på SW fungerar dess ska.
Så du kan se det grundläggande konceptet här. Det blir en ingång hög, sedan kontrollerar varje av utgångarna för en signal. Om signalen är där går det till att växelfunktionen. Om det inte finns en signal på någon utgångsstiftet, anger, att till låg och anger nästa indata för hög, och åter kontrollerar varje utgång. Detta kommer att fortsätta att sopa såhär tills en signal hittas.
Du kan sedan justera funktionerna växlar till för dina behov. Exemplet skiss innehåller helt enkelt en seriell utskrift förklaring utskrift vad knappen har tryckts.
Du kan justera den koden/schematiskt till men du behöver. Lägga till knappar, ta bort knappar. Min typisk användning att placera allt detta i en funktion och sedan anropa funktionen när programmet förväntar sig en knapp vara intryckt eller väntar på en knapptryckning.
Några viktiga kommentarer:
1. du kan bara ha 1 ingång hög i taget. Inte bara kommer att utgångarna inte läsa korrekt, men du kan kortslutning saker om du trycker på de högra kombinationerna.
2. jag skulle också föreslå att placera motstånd någonstans på raderna. Oavsett om det är en på var och en av ingångarna eller en på var och en av utgångarna, håller det från bränna ut dina mikrokontroller
3. du kan också placera dioder att hålla från kortsluter kombinationer, men de är inte nödvändiga.
4. du kan också behöva pull-up motstånd i systemet. ibland du gör, ibland du inte.
Jag kommer att arbeta på att lägga till ytterligare krets alternativ och ett prov arduino skiss för detta.