Neem eerst een kijkje op het schema.
Wat we hier hebben is 9 knoppen en 6 signaallijnen (3 ingangen, 3 uitgangen). De basisopstelling is in een rasterpatroon waar de drie lijningangen dalen als kolommen (PIN0, PIN1 en PIN2-), en de drie output lijnen tegenkomt als rijen (PIN3, PIN4 en PIN5).
Elke knop is een kortstondig op knop, normaal open. Dus is wat er zal gebeuren als we druk op de knop die het zal een verbinding tussen leggen dat van knop input en output, andere verstandig er is geen verbinding.
Het belangrijkste hier is in de software.
Wat de software is er te doen is zeer snel tussen de ingangen en uitgangen, voor elke combinatie te vegen. Ik zal een overzicht van de stappen voor het 1 ingang en dan herhaalt het gewoon dezelfde stappen voor elkaar input.
Voor input op PIN0
--PIN0, 1, 2 gedefinieerd als uitgangen
--PIN3, 4, 5 wordt gedefinieerd als input
1. PIN0, PIN1 en PIN2-op laag ingesteld
2. PIN0 op hoog ingesteld
3. Controleer als PIN3 hoog is of laag, hoog als Ga naar functie SW1
4. Controleer als PIN4 hoog is of laag, hoog als Ga naar functie SW4
5. controleren of PIN5 hoog is of laag, hoog als Ga naar functie SW7
6. PIN0 is ingesteld op laag
Dit zal vervolgens herhalen met de enige verschillen wordt welke invoer pin is ingesteld op hoog, en de namen van de SW functies zijn het gaan.
Zodat u het basisconcept hier zien kunt. Het verandert één ingang hoog, dan controleert elk van de uitgangen voor een signaal. Als het signaal er gaat die switch functie. Als een signaal niet wordt gevonden op elke uitgang Pins, die input op laag ingesteld de volgende ingang op hoog ingesteld en opnieuw controleert elke uitgang. Dit zal blijven vegen uitzien, totdat een signaal is gevonden.
U kunt de functies schakelt het over naar vervolgens aanpassen aan uw behoeften. De voorbeeld-schets bevat gewoon een seriële print-statement afdrukken welke knop is ingedrukt.
U kunt de code/schema maar je moet aanpassen. Knoppen toevoegen, knoppen verwijderen. Mijn typische gebruik is dit alles te plaatsen in een functie en die functie vervolgens aan te roepen wanneer het programma een knop ingedrukt worden verwacht of op een knop drukt wacht.
Enkele belangrijke opmerkingen:
1. u kan slechts 1 ingang HIGH tegelijk hebben. Niet alleen zal de uitgangen niet niet goed lezen, maar u kunt kortsluiting dingen als u op de juiste combinaties.
2. Ik zou ook voorstellen weerstanden ergens te plaatsen op de regels. Of het nu een op elk van de ingangen of één op elk van de uitgangen, weerhoudt het gloeierig uiterlijk uw microcontroller
3. u kunt ook het plaatsen van diodes om te voorkomen dat kortsluiting combinaties, maar ze zijn niet nodig.
4. u wellicht ook pull-up weerstanden in het systeem. Soms is je doet, soms niet.
Ik zal over het toevoegen van extra circuit opties en een monster arduino sketch voor dit werk.