- Labornetzteil AliExpress         
Ergebnis 1 bis 6 von 6

Thema: Arduino Mega und LCD Display code Fehler (Display 20x 4)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Der gegebene Code ist ein wenig dünn für eine Analyse. Wie und wo ist 'funktionen' definiert?
    sizeof() gibt die Länge in Byte an.
    char hat zwar die Länge 1 Byte, ein Zeiger auf char aber nicht.
    SO könnte es gehen:
    Code:
    ...
    for(int z = 0; z < (sizeof(funktionen) / sizeof(*funktionen)); z++) {
      LCD_Mod1.setCursor(0, z);
      if(z == LCD_counter) {
        LCD_Mod1.print(" * ");
        LCD_Mod1.setCursor(3, z);
      }
      LCD_Mod1.print(funktionen[z]);
    }
    ...
    Geändert von Sisor (18.12.2016 um 14:25 Uhr)

  2. #2
    Hallo und vielen Dank für die Schnelle Antwort
    "funktionen" (der Array) ist in der header Datei so definiert:

    char* funktionen[3] = {"Funk", "Autodrive", "Kabel Bedienung"};

    - - - Aktualisiert - - -

    Hi Leute Es hat wie immer wenn man euch fragt funktioniert!

    Aber jetzt noch mal : Was gibt "sizeof(funktionen)" zurück und was "sizeof(*funktionen)"

    Wo besteht der Unterschied? Noch mal vielen Vielen Dank!

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3

  4. #4
    Unregistriert
    Gast
    etwas vereinfacht:

    funktionen ist bei dir definiert als ein Pointer auf eine Speicher-Zelle (also eine Speicheradresse), ab wo deine insgesamt 3 Strings gespeichert stehen:

    char *funktionen[3] = {"Funk", "Autodrive", "Kabel Bedienung"};

    und ein Pointer (eine Speicheradresse) ist nichts anderes als eine Integerzahl, wahrscheinlich 32bit (4 Bytes).
    sizeof(funktionen) ist also die Größe dieses Pointers (also 4 für 4 Bytes)

    *funktionen ist dagegen die Größe der eigentlichen Stringvariable, auf die der Pointer funktionen zeigt,
    und daher ist sizeof(*funktionen) die Gesamtgröße (Gesamtlänge) deiner Strings, also "Funk", "Autodrive", "Kabel Bedienung" = 4+8+16=28 Bytes.

    Diese Methode funktioniert allerdings nur mit fest vordefinierten (konstant langen) Strings, denn sizeof() weiß bei variablen Strings nicht, welche Länge hinter der Pointeradresse aktuell stehen.

    - - - Aktualisiert - - -

    verzählt: String-Array 4+9+15, sind aber auch 28 vermutlich

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Nö, falsch.
    Auf den 8 Bit Atmels (Uno, Mega etc.) sind char-Zeiger (char*) 2 Byte lang.
    Damit ist sizeof(*funktionen) = sizeof(char*) = 2[Byte].
    Somit ist sizeof(funktionen) = 3 * 2[Byte] = 6[Byte].
    Schließlich ist sizeof(funktionen) / sizeof(*funktionen) = 6 / 2 = 3 = Anzahl der Feldelemente von 'funktionen'.

Ähnliche Themen

  1. Arduino Mega und LCD Display code Fehler
    Von RoboterSindCool im Forum Arduino -Plattform
    Antworten: 2
    Letzter Beitrag: 19.12.2016, 16:41
  2. SPI-TFT Display gesucht für Arduino Mega, nur (!) Pins 50-53 plus Spannung (o.Touch)
    Von HaWe im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 20
    Letzter Beitrag: 12.11.2014, 10:29
  3. Antworten: 4
    Letzter Beitrag: 09.04.2013, 10:41
  4. Arduino LCD Display(16x4) 3.&4.Zeile Fehler
    Von pro-bot128 im Forum Arduino -Plattform
    Antworten: 12
    Letzter Beitrag: 29.04.2011, 18:05
  5. LCD-Display per C-Code invertieren
    Von borisking im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 12.06.2007, 12:14

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen