INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Menüführung über LCD!!!
19.02.2015, 16:23 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2015 16:41 von tomstem.)
Beitrag #1
Menüführung über LCD!!!
Hi,
bin gerade dabei eine Menüführung für eine Cocktailmaschine zu erstellen. Hab das jetzt auch zum Teil fertig. Aber sobald ich den Code lade, erscheinen komische Zeichen auf dem LCD. Das Merkwürdige daran ist, das wenn ich den Unterpunkt Fuellstaende komplett in ein Komentar setzte, also so das dieses Stück nicht vom Arduino durchgeführt wird, funktioniert das Menü prima.Weis nicht wo mein Denkfehler ist, da die Unterpunkte Cocktails und Fuellstaende vom Aufbau her gleich sindHuh.
Hat vlt. jemand eine Vermutung und kann mir weiterhelfen.
Bin für jeden Tipp dankbar.
Zitat:#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

// TasterPin
const int Runter = 8;
const int Hoch = 10;
const int OK = 9;

//Tasterstatus
int RunterSta = 0;
int HochSta = 0;
int OKSta = 0;

//Menüvariablen
int Haupt = true;
int Cocktail = false;
int Fuellstand = false;
int i = 1;

//LCD Ausgabevariablen
char a[20]; //Erste Zeile
char b[20]; //Zweite Zeile
char c[20]; //Dritte Zeile
char d[20]; //Vierte Zeile

//Taster Entprellung
unsigned long alteZeit=0;
unsigned long entprellZeit=250;


void setup()
{
  lcd.begin(20,4);
  pinMode(Runter,INPUT);
  pinMode(Hoch,INPUT);
  pinMode(OK,INPUT);
  Serial.begin(9600);
}

//Funktion: lcd_Ausgabe
void lcd_Ausgabe (char*a,char*b,char*c,char*d)
{  
  lcd.setCursor ( 0, 0 );
  lcd.print(a);
  lcd.setCursor ( 0, 1 );
  lcd.print(b);
  lcd.setCursor ( 0, 2 );
  lcd.print( c );
  lcd.setCursor ( 0, 3 );
  lcd.print(d);
}

//Funktion: Menünavigation
int MenuAuswahl (int i)
{
  
  HochSta = digitalRead (Hoch);
  RunterSta = digitalRead (Runter);
  
//Menüpunkt Hoch 
  if( HochSta == HIGH && (millis() - alteZeit) > entprellZeit)
   { 
     alteZeit = millis();
     i++;     
   }

//Menüpunkt Runter   
  if( RunterSta == HIGH && (millis() - alteZeit) > entprellZeit)
   {
     alteZeit = millis();
     i--;
   }
//OK-Taste   
  OKSta = digitalRead(OK);
  return i;
}
  

void loop ()
{  
//Hauptmenü
  while(Haupt==true)
  {
    i = MenuAuswahl (i);
    
    if(i==3) i = 1; //Menügröße
    if(i==0) i = 2; //Menügröße
    
    if(i==1)
    {
      strcpy(a,"Hahnenschwanz v1.0\0");
      strcpy(b," \0");
      strcpy(c,"-> Cocktails \0");
      strcpy(d," Fuellstaende \0");
      lcd_Ausgabe (a,b,c,d);
    } 
    if(i==2)
    {
      strcpy(a,"Hahnenschwanz v1.0\0");
      strcpy(b," \0");
      strcpy(c," Cocktails \0");
      strcpy(d,"-> Fuellstaende \0");
      lcd_Ausgabe (a,b,c,d);
    }  
//In Untermenü springen
    if(i==1 && OKSta == HIGH && (millis() - alteZeit) > entprellZeit) //Cocktailmenü
    {
      lcd.clear();
      alteZeit = millis();
      Haupt = false;
      Cocktail = true;
    }
    if(i==2 && OKSta == HIGH && (millis() - alteZeit) > entprellZeit) //Füllstandmenü
    {
      lcd.clear();
      alteZeit = millis();
      Haupt = false;
      Fuellstand = true;
      i=1;
    }
  }

//Cocktailmenü
  while(Cocktail==true)
  {
    i = MenuAuswahl (i);
  
    if(i==26) i = 1; //Menügröße
    if(i==0) i = 25; //Menügröße
  
    if (i==1)
    {    
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b,"-> Adios Motherf**\0");
      strcpy(c," Bahama Mama \0");
      strcpy(d," Blue Lagoon \0");
      lcd_Ausgabe (a,b,c,d); 
    }        
    if (i==2)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Adios Motherf**\0");
      strcpy(c,"-> Bahama Mama \0");
      strcpy(d," Blue Lagoon \0");
       lcd_Ausgabe (a,b,c,d); 
    }     
    if (i==3)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Bahama Mama \0");
      strcpy(c,"-> Blue Lagoon \0");
      strcpy(d," Cairo Cocktail \0");
      lcd_Ausgabe (a,b,c,d); 
    }     
    if (i==4)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Blue Lagoon \0");
      strcpy(c,"-> Cairo Cocktail \0");
      strcpy(d," Capri \0");
      lcd_Ausgabe (a,b,c,d);
    }  
    if (i==5)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Cairo Cocktail \0");
      strcpy(c,"-> Capri \0");
      strcpy(d," Chicago Freesty\0");
      lcd_Ausgabe (a,b,c,d);
    }   
    if (i==6)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Capri \0");
      strcpy(c,"-> Chicago Freesty\0");
      strcpy(d," Com. Sou. Sour \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==7)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Chicago Freesty\0");
      strcpy(c,"-> Com. Sou. Sour \0");
      strcpy(d," Cuba Libre \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==8)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Com. Sou. Sour \0");
      strcpy(c,"-> Cuba Libre \0");
      strcpy(d," Electic Iced Te\0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==9)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Cuba Libre \0");
      strcpy(c,"-> Electr. Iced Te\0");
      strcpy(d," Florida Comfort\0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==10)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Electr. Iced Te\0");
      strcpy(c,"-> Florida Comfort\0");
      strcpy(d," Green Passion \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==11)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Florida Comfort\0");
      strcpy(c,"-> Green Passion \0");
      strcpy(d," Honululu Juicer\0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==12)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Green Passion \0");
      strcpy(c,"-> Honululu Juicer\0");
      strcpy(d," Ladykiller \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==13)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Honululu Juicer\0");
      strcpy(c,"-> Ladykiller \0");
      strcpy(d," Long Island \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==14)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Ladykiller \0");
      strcpy(c,"-> Long Island \0");
      strcpy(d," Mai Tai \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==15)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Long Island \0");
      strcpy(c,"-> Mai Tai \0");
      strcpy(d," Planters Punch \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==16)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Mai Tai \0");
      strcpy(c,"-> Planters Punch \0");
      strcpy(d," Sex on the Beac\0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==17)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Planters Punch \0");
      strcpy(c,"-> Sex on the Beac\0");
      strcpy(d," Shrek \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==18)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Sex on the Beac\0");
      strcpy(c,"-> Shrek \0");
      strcpy(d," Singapore Sling\0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==19)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Shrek \0");
      strcpy(c,"-> Singapore Sling\0");
      strcpy(d," Sweat Dream \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==20)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Singapore Sling\0");
      strcpy(c,"-> Sweat Dream \0");
      strcpy(d," Tequila Sunrice\0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==21)
    { 
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Sweat Dream \0");
      strcpy(c,"-> Tequila Sunrice\0");
      strcpy(d," Touch Down \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==22)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Tequila Sunrie \0");
      strcpy(c,"-> Touch Down \0");
      strcpy(d," Tom Collins \0");
      lcd_Ausgabe (a,b,c,d);
    }
    if (i==23)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Touch Down \0");
      strcpy(c,"-> Tom Collins \0");
      strcpy(d," Watermelon Man \0");
      lcd_Ausgabe (a,b,c,d);
    } 
    if (i==24)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Tom Collins \0");
      strcpy(c,"-> Watermelon Man \0");
      strcpy(d," Zurueck \0");
      lcd_Ausgabe (a,b,c,d);
    } 
//Zurück ins Hauptmenü    
    if (i==25)
    {
      strcpy(a," Cocktail mixen ?\0");
      strcpy(b," Tom Collins \0");
      strcpy(c," Watermelon Man \0");
      strcpy(d,"-> Zurueck \0");
      lcd_Ausgabe (a,b,c,d);
      
      if(OKSta == HIGH && (millis() - alteZeit) > entprellZeit)
      {
        lcd.clear();
        alteZeit = millis();
        Haupt = true;
        Cocktail = false;
        i=1;
      }
    }
  } 

//Füllstandmenü
  while(Fuellstand == true)
  {
    i = MenuAuswahl (i);
    if(i==23) i = 1; //Menügröße
    if(i==0) i = 22; //Menügröße
    
    if(i==1)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b,"-> Wodka \0");
      strcpy(c," Tequila \0");
      strcpy(d," Gin \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==2)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Wodka \0");
      strcpy(c,"-> Tequila \0");
      strcpy(d," Gin \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==3)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Tequila \0");
      strcpy(c,"-> Gin \0");
      strcpy(d," Rum Weiss \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==4)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Gin \0");
      strcpy(c,"-> Rum Weiss \0");
      strcpy(d," Rum Braun \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==5)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Rum Weiss \0");
      strcpy(c,"-> Rum Braun \0");
      strcpy(d," Whiskylikoer \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==6)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Rum Braun \0");
      strcpy(c,"-> Whiskylikoer \0");
      strcpy(d," Pfir.likoer \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==7)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Whiskylikoer \0");
      strcpy(c,"-> Pfir.likoer \0");
      strcpy(d," Melo.likoer \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==8)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Pfir.likoer \0");
      strcpy(c,"-> Melo.likoer \0");
      strcpy(d," Triple Sec \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==9)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Melo.likoer \0");
      strcpy(c,"-> Triple Sec \0");
      strcpy(d," Blue Cura. \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==10)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Triple Sec \0");
      strcpy(c,"-> Blue Cura. \0");
      strcpy(d," Rohrz.sirup \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==11)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Blue Cura. \0");
      strcpy(c,"-> Rohrz.sirup \0");
      strcpy(d," Mandelsirup \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==12)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Rohrz.sirup \0");
      strcpy(c,"-> Mandelsirup \0");
      strcpy(d," Limet.sirup \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==12)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Mandelsirup \0");
      strcpy(c,"-> Limet.sirup \0");
      strcpy(d," Grenad.sirup \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==13)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Limet.sirup \0");
      strcpy(c,"-> Grenad.sirup \0");
      strcpy(d," Zitronensaft \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==14)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Grenad.sirup \0");
      strcpy(c,"-> Zitronensaft \0");
      strcpy(d," Orangensaft \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==15)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Zitronensaft \0");
      strcpy(c,"-> Orangensaft \0");
      strcpy(d," Ananassaft \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==16)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Orangensaft \0");
      strcpy(c,"-> Ananassaft \0");
      strcpy(d," Limettensaft \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==17)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Ananassaft \0");
      strcpy(c,"-> Limettensaft \0");
      strcpy(d," Maracujasaft \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==18)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Limettensaft \0");
      strcpy(c,"-> Maracujasaft \0");
      strcpy(d," Zitronenlimo \0");
      lcd_Ausgabe (a,b,c,d);   
    }
     if(i==19)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Maracujasaft \0");
      strcpy(c,"-> Zitronenlimo \0");
      strcpy(d," Cola \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==20)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Zitronenlimo \0");
      strcpy(c,"-> Cola \0");
      strcpy(d," Soda \0");
      lcd_Ausgabe (a,b,c,d);   
    }
    if(i==21)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Cola \0");
      strcpy(c,"-> Soda \0");
      strcpy(d," Zurueck \0");
      lcd_Ausgabe (a,b,c,d);   
    }
//Zurück ins Hauptmenü    
    if(i==22)
    {
      strcpy(a," Fuellstaende \0");
      strcpy(b," Cola \0");
      strcpy(c," Soda \0");
      strcpy(d,"-> Zurueck \0");
      lcd_Ausgabe (a,b,c,d); 
      
      if(OKSta == HIGH && (millis() - alteZeit) > entprellZeit)
      {
        lcd.clear();
        alteZeit = millis();
        Haupt = true;
        Fuellstand = false;
        i=1;
      }
    }
  }
}

   
Hier noch mal ein Bilder vom LCD.

Aja ganz vergessen zu schreiben.

Es handelt sich um LCD 20x4 von SainSmart mit I2C-Chip.
Das Bord ist ein Arduino Uno R3.


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2015, 17:54
Beitrag #2
RE: Menüführung über LCD!!!
Hi,
ich kann Dir nicht sagen, warum es so ist. Mir kommt nur das hier etwas seltsam vor:
Code:
strcpy(a," Fuellstaende \0");
      strcpy(b," Wodka \0");
      strcpy(c,"-> Tequila \0");
      strcpy(d," Gin \0");
      lcd_Ausgabe (a,b,c,d);
Warum machst Du die "\0" ans Ende? Eine Zeichenketten-Konstante hat das automatisch, da sollte das nicht nötig sein. Möglicherweise macht es sogar Probleme, wenn Du die 0 nochmal explizit reinhängst.
Außerdem: Warum machst Du Dir das Leben so schwer? Geht Folgendes nicht?
Code:
lcd_Ausgabe (" Fuellstaende"," Wodka" ,"-> Tequila"," Gin");
Das würde auch nicht ganz so viel Speicherplatz verschwenden.

Der nächste Punkt: Möglicherweise kommst Du mit den ganzen Texten an die Grenze des Speicherplatzes. Das Problem ist nämlich, dass auch Zeichenketten-Konstanten im SRAM landen, und das ist knapp. Abhilfe kann da der "F-Operator" schaffen. Siehe z.B. hier: http://playground.arduino.cc/Learning/Memory.

Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2015, 20:53
Beitrag #3
RE: Menüführung über LCD!!!
Vielen Dank für deine Antwort.
Hab mein Programm jetzt mal so umgeschrieben:
Code:
lcd_Ausgabe (" Fuellstaende"," Wodka" ,"-> Tequila"," Gin");
Hat aber leider auch nichts gebracht. Werde jetzt das mit dem SRAM noch mal probieren und die Strings in den Flash-Speicher übertragen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.02.2015, 22:23
Beitrag #4
RE: Menüführung über LCD!!!
Ich hatte es neulich auch mal geschafft die RAM-Grenze zu "sprengen" - und das bei meinem Mega ;-)

Mach' mal in deinen Code an verschiedenen Stellen den Aufruf
Code:
Serial.print(F("free RAM Progxxx: "));Serial.println(freeRam());
rein und häng die Abfrage
Code:
// aktuell freien RAM anzeigen
int freeRam () {
        extern int __heap_start, *__brkval;
        int v;
        return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
    }
mit dazu. Dann weisst Du, ob's am RAM liegt.
Bei mir ist im Verlauf des Programmes der freie Speicher immer geringer geworden bis dann irgendwann im Lauf der Abarbeitung beinahe null angezeigt wurde und ab dem Moment (verständlicherweise) nix mehr ging... Variablen hatten plötzlich keine Inhalte mehr usw.

Viel Erfolg
Ralf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 11:41
Beitrag #5
RE: Menüführung über LCD!!!
Hi,
Ralf danke für den Code. Habs mal ausprobiert.
Also wenn ich nur Hauptmenü anzeigen lassen und den rest in Kommentar schreibe zeigt er mir etwa 1300 an. Wenn ich das ganze Menü laufen lassen will also mit den Unterpunkten Cocktails und Füllstande geht er in den Minusbreich(-500). Anschließend hab ich nur das Hauptmenü, das Cocktailmenü und die ersten 5 Punkte vom Füllstandsmenü übertragen. Bis dahin läuft alles prima und er zeigt mir einen Wert von 90 an. Bei 6 Punkten spielt das Menü wieder verrückt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 12:37
Beitrag #6
RE: Menüführung über LCD!!!
Hi,
dann hast Du eindeutig das RAM gesprengt. Da kann dann alles passieren. Lies Dir nochmal mein Posting weiter oben durch, speziell das mit dem F-Operator.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 13:55
Beitrag #7
RE: Menüführung über LCD!!!
Du meinst sicher das mit "Serial.println(F(String)).
Ich bin nur grad am Überlegen wie es auf mein Programm übertragen kann.
Hab meine Strings jetzt so geschrieben:
Code:
if (i==5)
    {
      lcd_Ausgabe ("Cocktail mixen ?    ","   Cairo Cocktail   ","-> Capri            ","   Chicago Freestyle");
    }
Wenn ich da jetzt mein (F(String)) reinbastel, kommen Fehlermeldungen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 15:02
Beitrag #8
RE: Menüführung über LCD!!!
Hi,
ja, wahrscheinlich kann die Funktion lcd_Ausgabe den Datentyp nicht.
Versuch mal folgendes: bei der Defeinition von lcd_Ausgabe, benutze mal prog_char* anstatt char*.
Wenn es dann immer noch nicht geht, dann kannst Du innerhalb von lcd_Ausgabe die prog_char-Strings in normale char-Strings umkopieren mit strcpy_P.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Servo über Temperatur steuern querkopf71 3 74 07.12.2016 19:21
Letzter Beitrag: hotsystems
  Kommunikation über das WiFi-Shield Flap 3 235 07.11.2016 20:20
Letzter Beitrag: hotsystems
  Menü über Bluetooth Eingabe abwarten anwo 4 504 18.10.2016 08:59
Letzter Beitrag: Lolliball
  Daten über USB verarbeiten Felix91 10 329 12.10.2016 13:00
Letzter Beitrag: Tommy56
  Code mit Verifikation über Keypad & LCD machnetz 5 215 10.10.2016 15:01
Letzter Beitrag: torsten_156
  Arduino Steuern über eigne Homepage b3ta 8 404 16.08.2016 11:07
Letzter Beitrag: Pit
  DUE-MEGA über I2C Verbinden HTO 0 223 22.05.2016 10:16
Letzter Beitrag: HTO
  Serial Monitor Eingabe über Code Maxi290997 4 523 12.05.2016 18:57
Letzter Beitrag: SkobyMobil
  "WORT" über die serielle Schnittstelle auslesen hannes77 1 536 08.03.2016 12:13
Letzter Beitrag: Binatone
  Über Pin43 den Pin42 steuern, ist das so richtig? arduinofan 5 491 01.02.2016 21:01
Letzter Beitrag: ardu_arne

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste