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
Arudrino Leonardo mit Display hängt sich auf
26.08.2015, 20:33 (Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2015 20:34 von EvilKnivel.)
Beitrag #1
Shocked Arudrino Leonardo mit Display hängt sich auf
Hallo zusammen,

vielen Dank erstmal für dieses Coole Forum. Durch mitlesen wurde mir hier schon oft geholfen Wink

Leider komme ich an einem Punkt in meinem Projekt nicht weiter.

Ich habe ein Leonardo mit einem 20x4 LCD Display (china). Auf diesem liefen das "Hello World" etc Problemlos.

Also habe ich es in mein Projekt implementiert. Unten der Code ist eine abgespeckte Version aber zeigt den selben Effekt. Was ich auf dem Display anzeigen möchte ist u.A. der Status von drei Tastern.

Mein Code läuft problemlos, solang ich die Taster nicht abfrage. Sobald ich die "AbfrageZeit()" mit einbaue stürzt das Programm ab und das Display zeigt nichts mehr richtig an.

Und jetzt wird richtig komisch: Das hat scheinbar auch dazu geführt, dass mein Leonardo sich nicht mehr bespielen lässt. Es wird vom PC nicht mehr erkannt. Hatte zuerst gedacht das ich die USB Verbindung im falschen Moment beim Programmieren getrennt hab oder so - und es so geschossen hab. Aber auch bei meinem zweiten Leonardo trat das Problem auf. Zuerst wurde es nicht mehr erkannt aber glücklicherweise konnte ich es nach einiger Zeit wieder bespielen. Traue mich aber nicht weiter zu machen, da ich den Fehler nicht verstehe.

Was ist an der Abfrage falsch (mit Serial.print ohne Display funktioniert es)?
Warum kann ich scheinbar mit dem Programm den Bootloader zerstören? (Komischerweise hat ein neu aufspielen des Bootloaders beim defekten Leonardo vom funktionierenden Leonardo auch nicht funktioniert, hab mich damit aber noch nicht weiter befasst)

Hoffentlich könnt ihr mir weiter helfen?

Code:
#include <LiquidCrystal.h>
#include <Wire.h>


LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
//----> switches config

int switchPinT1 = 4;  /*Timer gelb*/
int switchPinT2 = 5;  /*Timer rot*/
int switchPinT3 = 3;  /*Timer gruen*/


//----> switch status
int lastStateT[2];
int newStateT[2];

//---->
int selectHeat = 5;
int selectGroup = 11;
char* PilotName[] = {"Mustermann", "Beispiel", "Egal"};
char* PilotVorname[] = {"Max", "Moritz", "Franz"};
int indent = 1;
long Timeout = 0;
int idPt[2];
int idP1[2];
int idP2[2];
int idP3[2];
unsigned long currentTime;

void setup() {
  pinMode(switchPinT1, INPUT);
  pinMode(switchPinT2, INPUT);
  pinMode(switchPinT3, INPUT);
  lcd.begin(20, 4);
  DisplayIndentSetup();
  
}

void loop() {
  AbfrageZeit(); // Wenn diese Funktion aktiv ist stürzt das Porgramm ab, Leonardo nicht mehr bespielbar!
  currentTime = millis();
  DisplayIndent();
  delay(100);
}

void DisplayIndent()
{
  
  int i=0;
  i = indent;
    if(PilotVorname[i] != "NA"){
      
        if(currentTime -  Timeout < 400)
          {
          lcd.setCursor(12,i+1);
          lcd.print("T"); lcd.print(" ");
          lcd.print("1"); lcd.print(" ");
          lcd.print("2"); lcd.print(" ");
          lcd.print("3"); lcd.print(" ");
          
          return;}
        if (currentTime -  Timeout > 1500){Timeout = currentTime;}
        
      lcd.setCursor(12,i+1);
      lcd.print("T"); if(idPt[0] == 1){lcd.print((char)255);} else {lcd.print((char)219);} //eigentlich idP1[i], zu testzwecken idPt[0]
      lcd.print("1"); if(idPt[1] == 1){lcd.print((char)255);} else {lcd.print((char)219);} //eigentlich idP1[i], zu testzwecken idPt[1]
      lcd.print("2"); if(idPt[2] == 1){lcd.print((char)255);} else {lcd.print((char)219);} //eigentlich idP2[i], zu testzwecken idPt[2]
      lcd.print("3"); if(idP3[i] == 1){lcd.print((char)255);} else {lcd.print((char)219);}
    
    }
  
}
void DisplayIndentSetup()
{
  lcd.clear();
  lcd.print("Heat: "); lcd.print(selectHeat, DEC); lcd.print(" Group: "); lcd.print(selectGroup, DEC);
  for (int i=0;i<3;i++) {
    if(PilotVorname[i] != "NA"){
      lcd.setCursor(0,i+1);
      lcd.print(PilotVorname[i][0]); lcd.print("."); lcd.print(PilotName[i]);
    }
  }
}

//------------------------------------------------------------------------------
// Wenn diese Funktion aktiv stürzt das Porgramm ab, Leonardo nicht mehr bespielbar!
void AbfrageZeit() {
  newStateT[0] = digitalRead(switchPinT1);
  newStateT[1] = digitalRead(switchPinT2);
  newStateT[2] = digitalRead(switchPinT3);
  for (int i=0;i<3;i++){
    if(newStateT[i]!=lastStateT[i])
    {
      if(newStateT[i]==HIGH) {idPt[i] = 1; }
      lastStateT[i] = newStateT[i];
    }
  }
}

Danke & Gruß

Christoph
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  matrix display elegoo uno R3 starter set lecker16 7 161 23.11.2016 21:14
Letzter Beitrag: Bitklopfer
  Arduino lässt sich nicht installieren bergfrei 4 154 20.11.2016 18:34
Letzter Beitrag: bergfrei
  Arduino hängt beim Upload deranda 11 507 12.08.2016 21:27
Letzter Beitrag: hotsystems
  Arduino lässt sich nicht mehr beschreiben Maxi290997 15 988 07.08.2016 11:40
Letzter Beitrag: Maxi290997
  LCD Display plötzlich komische Zeichen Jessi97 2 244 28.07.2016 11:34
Letzter Beitrag: Bitklopfer
  Altes Digitales Display mit Text/Bits durch Genuino Micro versorgen - SPI-Bibliothek? RollingStone 0 206 25.06.2016 17:46
Letzter Beitrag: RollingStone
  Programme lassen sich nicht auf das Gemma Board downloaden! Jack Sparrow 13 566 08.04.2016 10:01
Letzter Beitrag: hotsystems
  Problem mit OLED 0.96" Display torsten_156 3 547 03.04.2016 15:10
Letzter Beitrag: hotsystems
  Display Blinkt immer arduino_weatherstation 29 1.632 12.03.2016 13:10
Letzter Beitrag: hotsystems
  2.2 TFT SPI Display s_fr 3 485 20.02.2016 15:28
Letzter Beitrag: René Hitz

Gehe zu:


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