Köra massor av knappar (4 / 4 steg)
Steg 4: Koden
Bifogat är koden.
Det verkliga problemet skriptet händer i en funktion som måste anropas varje slinga. Denna funktion kontrollerar exakt en knapp. Ett mönster av bits skickas till skiftregister som stänger av alla knappar utom knappen ett mål för denna slinga. Det sedan kontrollerar status för ingångsstiftet vid detta ögonblick: om det är hög, denna knapp trycks ner, om låg knappen inte är. Det jämför sedan detta tillstånd mot det tidigare tillståndet för denna knapp för att avgöra om användaren bara gjorde något nytt eller inte. Den lagrar för denna knapp och förskott ett index så att knappen Nästa i ordning kommer att kontrolleras i nästa slingan. Jag ingår också en timer så du kan finjustera skriptet för CPU behandling vs. knappen känslighet.
Låt mig veta om du hittar några buggar.
Jag hoppas att detta hjälper alla som konfronteras med problemet att behöva hantera indata från ett stort antal knappar med minst antal Arduino stift. Jag är mycket intresserad av att höra från någon som har löst detta problem på andra sätt.