NikolaiRadke / Noko

The do-it-yourself Arduino-based Noko monster.
http://www.monstermaker.de
Apache License 2.0
40 stars 8 forks source link

Hinweise zu 2.0 #30

Open NikolaiRadke opened 6 years ago

NikolaiRadke commented 6 years ago

Liebe NOKO-Freunde, ab Firmware 2.0-240218 werden die Hörspiel-Informationen im 24LC256 gespeichert, da dort noch über 16kByte Platz waren. Jetzt können rund 400 Hörspiele gespeichert werden. Wem das immer noch nicht reicht, kann ein 24LC512 nehmen - dann ist noch mehr Platz. Da Interface ist jedoch auf 999 begrenzt.

Die Informationen werden in der Datei EEPROM gespeichert, früher Disk1. Im Grunde habe ich Disk0 und Disk1 nur zusammen geführt, um einen Vorgang zu sparen. Dafür müssen nun kein Spiellängen mehr händisch eingetippt werden.

Vorgehensweise:

  1. EEPROM in /write_eeprom/V20 anpassen/ergänzen.
  2. NOKO_Settings.ino öffnen und anpassen.
  3. NOKO_Settings.ino auf den Arduino laden. Kurz warten.
  4. Windows 10: NOKO_EEPROM.ino öffnen und Zeile 17 anpassen.
  5. NOKO_EEPROM.ino auf den Arduino laden.
  6. Je nach Betriebssystem write_eeprom bzw. write_eeprom.exe mit den Parametern aus dem README starten.
  7. NOKO.ino öffnen und hochladen.

Bei 40 Hörspielen und den 20k NOKO-Unsinn dauert das Beschreiben 18 Minuten. Zeit für Kaffee oder Bier oder die Lieben dabeim.

NikolaiRadke commented 6 years ago

Was ist zu beachten?

jlegen commented 5 years ago

Hi, da ich beim V2-Befüllen der EEPROMS irgendwie mehrere Anläufe brauchte, hat es mich etwas gestört, dass man "nix sieht" beim 'Rüberschaufeln. Daher habe ich das "write_eeprom.c" leicht modifiziert, sodass ein Zähler den Fortschritt ausgibt:

#include <stdio.h>

int main()
{
   int c;
   long j=0;
   long k;
   FILE *datei;
   usleep(5000000); 
   datei=fopen("EEPROM","r");
   if(datei != NULL)
      {
         fseek(datei, 0L, SEEK_END);
         k = ftell(datei);
         rewind(datei);
         while((c=fgetc(datei))!= EOF)
         {
            fprintf(stderr, "Bytes written: %d/%d\r", j, k);
            fflush(stderr);
            putchar(c);
            fflush(stdout);
            usleep(50000);
            j++;
         }  
      }
   else
      printf("Konnte Datei nicht finden bzw. oeffnen!\n");
 return 0;
}

write_eeprom2.zip

Ausserdem fand' ich's beim "NOKO_Diagnostics.ino" leicht ungünstig, dass das "Menü" nach einem Aufruf immer 2x durchrauschte, sodass man sich das Ergebnis des letzten Tests immer erst erscrollen musste. Ein

  while(Serial.available()) {
    Serial.read();
    };

Am Ende des loops() hat das behoben...

NikolaiRadke commented 5 years ago

Danke für deine Arbeit. Wird gleich oder sehr bald eingepflegt. Warum ich das Serial.read(); nicht mehr drin hatte, ist mir ein Rästsel... Wohl wieder betrunken am Rechner gewesen.