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
  TFT Display Tool für Planung des Screenaufbaus rev.antun 16 586 29.11.2017 16:03
Letzter Beitrag: rev.antun
  Bootloader lässt sich nicht brennen?? dobermann145 10 574 21.11.2017 22:58
Letzter Beitrag: hotsystems
Lightbulb Wie kann ich Daten vom Nextion Display auf Arduino Mega2560 senden und benutzen MarkusA 14 968 02.11.2017 23:10
Letzter Beitrag: MarkusA
  Daten übergabe ans Nextion Display Franz54 53 2.798 09.10.2017 09:16
Letzter Beitrag: Franz54
  Nextion Display komma Zahlen darstellen becki133 8 698 18.09.2017 18:26
Letzter Beitrag: becki133
  433 MHz - Empfaenger + OLED display Matthias_Arduino 4 380 03.09.2017 17:25
Letzter Beitrag: hotsystems
Wink Arduino TFT Display MEGA 2560 Samsuino 47 3.962 24.07.2017 12:45
Letzter Beitrag: Harry Hirsch
  Nextion Display führt keine gesendeten Befehle aus re.eule 12 2.033 13.07.2017 21:46
Letzter Beitrag: SkobyMobil
  Arduino UNO hat sich Aufgehängt?? huber5093 24 2.143 28.04.2017 19:58
Letzter Beitrag: Tommy56
  Waveform auf Nextion Display GuaAck 6 1.110 12.04.2017 19:08
Letzter Beitrag: SkobyMobil

Gehe zu:


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