Nastuduj si multiplexing, tady je obdobný příklad - s pomocí 16 vývodů můžeš nezávisle na sobě ovládat 64 LED diod:
http://arduino.cc/playground/uploads/Main/LedMatri xRowsMarked.jpg
Má to jedinou nevýhodu - v každý moment můžeš rozsvítit maximálně tu jednu řadu LED. To znamená, když potřebuješ rozsvítit všech 64 najednou, musíš použít jevu, který se nazývá setrvačnost vidění (zjednodušeně, když blikáš dostatečně rychle do oka světlem, tak se zdá, že to světlo tam svítí stále - je to asi individuální, pro mě je třeba asi 55Hz).¨No a podobně to funguje i u té klávesnice - má tam X sloupců a Y řádků a rychle kontroluje pořád dokola každou řádku na stisknutí tlačítek, která jsou v dané řádce.
Pro ovládání LED pak ještě existuje taková menší specialitka, která se nazývá charlieplexing. S pomocí 10 tri-state vývodů se pak dá nezávisle na sobě ovládat 90 LEDek (pro n vývodů n*(n-1) LED). Zkoušel jsem to právě pro těch 90 LED, funguje to perfektně, ale návrh DPS je peklo).