Forum: Mikrocontroller und Digitale Elektronik LCD Anzeige und Arrays


von Eddi R. (eddi2303)


Lesenswert?

Hallo Leute,

Ich beschäftige mich erst seit kurzem mit dem Thema ATMEGA und 
experimentier noch etwas mit dem STK500 herum.
Derzeit bin ich dabei mich mit dem Thema LCD Display zu befassen.
Dabei bin ich auf folgendes Problem gestossen:

Wenn ich der routine lcd_string(); einen string übergebe funktioniert 
alles bestens wenn ich allerdings ein char Array baue und einen Wert 
übergeben will kommen nur Sonderzeichen. Egal ob ich es mit zahlen oder 
Texten versuche.
Was mache ich da falsch ?:

Danke für Eure Hilfe

lg Eddi

#include <avr/io.h>
#include "lcd-routines.h"
#include "lcd-routines.c"


int main(void)
{
  // Initialisierung des LCD
  lcd_init();
  lcd_setcursor( 0, 2 );

  char Ausgabe = "xxx";
  int push,i,zahl = 0;

   char rgb_wert[3]={'100','200','300'};

  while(1)
  {
  push = check_button(0);      //Abfrage ob Taste gedrückt wurde
  {
  if(push == 1)          //Wenn Taste gedrückt wurde ->
    {
    Ausgabe = rgb_wert[i];
    i++;
    }
  }

  push = check_button(1);      //Abfrage ob Taste gedrückt wurde
  {
    if(push == 1)          //Wenn Taste gedrückt wurde ->
    {
      Ausgabe = "100";
    }
  }
  lcd_setcursor( 0, 2 );
  lcd_string(Ausgabe);
  }

  return 0;
}

von holger (Gast)


Lesenswert?

>Was mache ich da falsch ?:

Du versuchst per Try and Error C zu lernen.
Das geht allerdings in die Hose.

>   char rgb_wert[3]={'100','200','300'};
>   Ausgabe = "100";

Warum z.B. diese beiden ausgewählten Zeilen
entweder gar nicht oder nur mit massiven Warnings
compiliert werden erzählt dir ein Buch zu C
das du dir noch besorgen musst.

von Eddi R. (eddi2303)


Lesenswert?

Hi Holger

Was meinst du damit genau ?
Kannst du mir bitte einen Tipp geben ?

lg eddi

von SNR (Gast)


Lesenswert?

Eddi Ramoser schrieb:
> char Ausgabe = "xxx";

Du erzeugst ein einziges char, weist dann aber einen String zu.
So würde es gehen:
1
char Ausgabe[] = "xxx";

Eddi Ramoser schrieb:
> char rgb_wert[3]={'100','200','300'};

Das ist genauso Bullshit.
Entweder Du lässt die Anführungszeichen weg, dann weist Du einen 
Dezimalen Wert zu (das letzte Zeichen geht aber nicht! Stichwort 
Wertebereich eines chars).
Die 2.Möglichkeit ist Du willst wirklich ein char zuweisen, z.B.
1
char rgb_wert[3]={'1','2','3'};
2
char abc_wert[3]={'x','y','z'};

von SNR (Gast)


Lesenswert?

Eddi Ramoser schrieb:
> if(push == 1)          //Wenn Taste gedrückt wurde ->
>     {
>     Ausgabe = rgb_wert[i];
>     i++;
>     }

Was passiert wenn Du die Taste länger drückst und in i z.B. 4 drin 
steht?

von Eddi R. (eddi2303)


Lesenswert?

Hallo SNR

Danke für Deine Hilfe so komme ich der Sache näher - ich komme aus einer 
anderen Ecke der Programmiersprachen und muss mich c erst annähern  ( 
Buch habe ich bereits).

>>> Was passiert wenn Du die Taste länger drückst und in i z.B. 4 drin
steht?

ich weiss das war nur ein Test - ich muss den Wert i abfangen.

lg eddi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.