Arduino hem basket Hoop poäng Detection System aka ScoreKeeper (5 / 10 steg)
Steg 5: Logik för 7-Segment Display
Det finns många sätt att styra en 7-segment display. Det enklaste vore att koppla varje LED till en digital pin på Arduino. Detta är oönskat av många skäl. Först och främst, har du inte tillräckligt digital pins till tråd till varje segment eller tillhandahålla tillräckligt aktuell för ljus varje LED samtidigt. För att motverka dessa två problem, är den gemensamma tekniken att multiplex segmenten. Vanligtvis, detta görs med Skift register, men vi beslutade att använda en analog multiplexer istället. En multiplexer kan en enda indata skickas till flera olika utgångar genom att kontrollera några logik selector stift. Obs, multiplexorn kan endast utgång till en kanal i taget. Den multiplexer använde vi har 16 kanaler. Den aktiva kanalen bestäms av 4 selector stift (S0-S3). Tricket att multiplexer displayen ett nummer på våra anpassade 7-segment display är att snabbt ändra kanaler som multiplexorn utmatningen till. Till exempel om vi ville Visa nummer 2, skulle vi behöva lysa upp segment A, B, D, E och G. Med våra multiplexer, skulle vi utgång till kanaler som är kopplade till varje segment. Vi skulle behöva växla från en kanal till nästa så snabbt att det mänskliga ögat kommer att se alla kanaler tände på en gång och därefter har siffran "2."
Åh, glömde jag att nämna, jag skrev en Arduino bibliotek för multiplexorn. Jag behövde en multiplexer för detta och andra projekt så jag tänkte att jag skulle gå vidare och skriva ett bibliotek för det. Multiplexer biblioteket är för enkel kontroll av en enda multiplexer med N antal kanaler upp till 32 kanaler. Det var tänkt att vara extremt enkel och rakt på sak. Det finns gott om andra bibliotek på webben om du vill använda en annan. Tänk på att du skulle behöva ändra den scoreKeeper.ino kod som vi kommer att ge dig. Lägg till Mux.h och Mux.cpconsult Arduino webbplats om hur du importerar ett bibliotek om du inte vet hur man gör så.
De viktigaste funktionerna i biblioteket som du behöver vara med är konstruktören och funktionen open(). Konstruktören initierar en enda multiplexer. Open() funktionen tar en parameter som är den kanal som du vill att produktionen till. Biblioteket är tillräckligt kommenterade om du har några frågor.