Já bych navrhoval ukládat ty data takto :
Na adrese 0 si ukládat informaci o tom,kolikrát už došlo k posunutí dat. - tohle se přepíše jednou za desítky tisíc přepisů může zůstat furt na svém místě (manualně tam musíš uložit 0). Tuto hodnotu vynásobíš celkovým počtem bytů + počet bytů které zabere informace o posuvu (int ma dva bajty... dejme tomu ze data mají 12bytů, máme 4x posunutou paměť ... adresa kde začínají data = (4 * 12) + 2 ........ nikdy nesmí vyjít větší číslo než velikost eeprom - celkovy pocet bajtů jednoho bloku
1.proměnná bude obsahovat aktuální počet přepisů tohoto bloku - tu taky pak musíš ukládat do nového místa - přepisovat ji budeš často
zbytek dat už je pak na tobě.
No tak to počkej, až objevíš třídy. Když nebudeme zabíhat do detailů, je to v podstatě struktůra, která krom uchovávání dat umí taky uchovávat funkce.
Máš pak třeba třídu "player", ta má svá data. Jméno, pozice X,Y, životy atp a taky své funkce - umí střílet, umí se hýbat. Programuješ potom tak, že dle třídy player, vytvoříš objekt Hrac1 a Hrac2. Pokud zmačnu čudlik, Hrac1.Strilej(typZbrane, cíl) , pokud je cíl zasazen, tak cíl.Zivoty - typZbrane.poskozeni ....
Obrovskou výhodu o proti kopírování funkcí a přejmenovávání všeho z Hrac1 na Hrac2... Hrac3 a Hrac4 je to, že když chceš změnit styl jejich pohybu, změníš ho jen ve třídě a nemusíš procházet 4různé funkce... A v programu ti to ušetří po zkompilování spoustu místa. Vytvoří se totiž jen jedna funkce, kterou všechny objekty sdílí akorát každý ji provádí se svými daty.
Doporučuji tenhle seriál :
https://learn.adafruit.com/multi-taskin ... -the-delay - končí to třema ledkama co si každá bliká svoje a dvěma servama a loop má 6řádků
1.díl je s delay, 2.díl je s millis, 3.díl je právě ono kopírování když chceš druhou led, 4.díl je s třídama ... classy solution