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
  Daten übergabe ans Nextion Display Franz54 53 1.687 09.10.2017 09:16
Letzter Beitrag: Franz54
  Nextion Display komma Zahlen darstellen becki133 8 411 18.09.2017 18:26
Letzter Beitrag: becki133
  433 MHz - Empfaenger + OLED display Matthias_Arduino 4 262 03.09.2017 17:25
Letzter Beitrag: hotsystems
Wink Arduino TFT Display MEGA 2560 Samsuino 47 3.218 24.07.2017 12:45
Letzter Beitrag: Harry Hirsch
  Nextion Display führt keine gesendeten Befehle aus re.eule 12 1.785 13.07.2017 21:46
Letzter Beitrag: SkobyMobil
  Arduino UNO hat sich Aufgehängt?? huber5093 24 1.857 28.04.2017 19:58
Letzter Beitrag: Tommy56
  Waveform auf Nextion Display GuaAck 6 787 12.04.2017 19:08
Letzter Beitrag: SkobyMobil
  neues OLED Display nötig an vorhandenem uC Systemswerlich Ersatz hd311 7 406 26.03.2017 11:16
Letzter Beitrag: hd311
  Pinbelegung TFT-Display ILI9341 mingo 19 1.309 23.03.2017 17:49
Letzter Beitrag: oOSpikeOo
  Arduino Läst sich nicht Programmieren Micha06 4 592 29.01.2017 17:27
Letzter Beitrag: Micha06

Gehe zu:


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