piotr2393, problemy przedstawione przez Ciebie dadzą się łatwo wyeliminować. Problem losowania tej samej diody można wyeliminować w warunku (podając listę wszystkich oprócz aktualnej), natomiast zapalenie kolejnej diody po puszczeniu aktualnej można zrobić, umieszczając w pierwszej linii kodu wewnątrz warunku pustą pętlę while z warunkiem identycznym, jak if:
Wtedy kod wykona się po puszczeniu przycisku.
Problem brakujących pinów cyfrowych można usunąć stosując choćby PCF8574, choć pomysł z dzielnikiem (drabinką rezystorów) też mi się podoba, choć bałbym się chyba o stabilność odczytu i możliwość pomyłki ('nie do końca' wciśnięty przycisk to większa rezystancja, co mogłoby spowodować zliczenie innego przycisku). Wtedy też maszyna mogłaby się przerodzić w coś w rodzaju 'maszyny dla leniwych'.
Kod:
if (digitalRead(13, LOW)) {
while(digitalRead(13, LOW)){}
//tutaj instrukcje, co stanie się po wciśnięciu przycisku
}
Problem brakujących pinów cyfrowych można usunąć stosując choćby PCF8574, choć pomysł z dzielnikiem (drabinką rezystorów) też mi się podoba, choć bałbym się chyba o stabilność odczytu i możliwość pomyłki ('nie do końca' wciśnięty przycisk to większa rezystancja, co mogłoby spowodować zliczenie innego przycisku). Wtedy też maszyna mogłaby się przerodzić w coś w rodzaju 'maszyny dla leniwych'.