Nitri:
Aber worauf ich mich am meisten freue, ist das dein Programmteil funktioniert. Nun hab ich aber schnell eine funktionierende Version abgespeichert
OK. Es ist aber nur ein Änderungswunsch (Spielzeitvorgabe) berücksichtigt, und selbst bei dem würde ich nur für Spieldauern bis zu 0058 Minuten für einwandfreie Funktion garantieren. Darüber hinaus: Keine Garantie von meiner Seite.
Ich habe mir auch mal angesehen, wieviel Aufwand es mit einer kompletten "sauberen" Neuprogrammierung und Eingabe-Versuchszähler ist, dabei habe ich dann gesehen, dass es doch nicht ganz so trivial ist und weit über 100 Zeilen Code werden. Der Hauptaufwand kommt daher, dass bei Eingaben auch immer Soundausgaben erfolgen ("Tasten-Kontrollpieps") und durch das Handling von Cursor-On und Cursor-Off beim sekündlichen Aktualisieren der Restzeit mit gleichzeitiger Eingabemöglichkeit mit Anzeigen einer Cursor-Schreibmarke. Muss ich mal schauen, ob ich da irgendwann zwischendurch mal Zeit genug finde, versprechen kann ich nichts.
Eine Frage habe ich aber mal überhaupt zur Soundausgabe Deiner Kiste: Wie laut ist die und was machst Du als Soundausgabe? Weil wenn man nur einen kleinen Lautsprecher mit Kondensator an den Sound-Pin ankoppelt, ist es ja eher knappe Zimmerlautstärke. Hast Du an Deiner Kiste einen Audioverstärker angekoppelt oder soll gar nicht ein ganzes Paintball-Spielfeld mit dem Sound beschallt werden?
Nitri:
Gestern hatte ich noch einen anderen Scetch bekommen, der weitaus komplizierter ist und viel mehr Funktionen hat. Leider gibts da auch Fehler beim Überprüfen.
Z.B. sowas hier'EEPROM_readAnything' was not declared in this scope
Naja, erstmal das eine, dann das andere ^^
Bei dem fehlenden EEPROM_readAnything könnte es sich um diese beiden Templates handeln. Im Zweifelsfall mal oben in Deinen Code reinkopieren und ausprobieren, ob es damit funktioniert:
#include <EEPROM.h>
template <class T> int EEPROM_writeAnything(int ee, const T& value)
{
const byte* p = (const byte*)(const void*)&value;
int i;
for (i = 0; i < sizeof(value); i++)
EEPROM.write(ee++, *p++);
return i;
}
template <class T> int EEPROM_readAnything(int ee, T& value)
{
byte* p = (byte*)(void*)&value;
int i;
for (i = 0; i < sizeof(value); i++)
*p++ = EEPROM.read(ee++);
return i;
}
Ansonsten kannst Du ja ggf. auch mal den anderen Sketch posten, wenn das ohne Verletzung von Urheberrechten frei möglich ist. Vielleicht ist der ja tatsächlich einfacher an Deine Kiste anpassbar als der von Dir oben gepostete Sketch mit dem Spaghetticode, den man für eine saubere Programmlogik eigentlich nur komplett neu programmieren kann.