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
LCD zeigt nach einiger Zeit unlesbaren Code an
25.05.2015, 12:34
Beitrag #1
LCD zeigt nach einiger Zeit unlesbaren Code an
Hallo,

ich habe eine Schrittmotorsteuerung mit dem Arduino entworfen, ist meine erste Programmierung mit dem Arduino. Diese funktioniert auch einwandfrei. Die Geschwindigkeit lässt sich über ein Poti und die Anzahl der Umdrehungen lassen sich über Taster einstellen. Dann gibt es noch einen Start- und Stopbutton. Die Geschwindigkeit und die Anzahl der Umdrehungen stelle ich auf einem LCD dar. Zunächst klappt das auch ganz gut, nur nach einiger Zeit, nachdem der Schrittmotor fertig ist mit den eingestellten Umdrehungen, zeigt das LCD nur noch ganz komisch, nicht lesbare Dinge an. Nach dem Reset funktioniert es wieder eine Zeit lang und dann taucht derselbe Fehler wieder auf.
Ich bin ratlos, kann mir jemand helfen?Blush

Gruß Nico

#include <AccelStepper.h>
#include <LiquidCrystal.h>

AccelStepper stepper(1, 10, 8);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int geschw = 0;
double pos = 0;
int starttaster = 6;
int stoptaster = 7;
int aufwaerts = 8;
int abwaerts = 9;
int buttonState_starttaster = 0;
int buttonState_stoptaster = 0;
int buttonState_aufwaerts = 0;
int buttonState_abwaerts = 0;

void setup() {
pos = 2000;
lcd.begin(16, 2);
lcd.print("Umdrehung: ");
lcd.print((pos/200.),1);
stepper.setAcceleration(2000);
pinMode(starttaster, INPUT);
pinMode(stoptaster, INPUT);
pinMode(aufwaerts, INPUT);
pinMode(abwaerts, INPUT);
stepper.setCurrentPosition(-pos);
}

void loop() {

buttonState_aufwaerts = digitalRead(aufwaerts);
buttonState_abwaerts = digitalRead(abwaerts);

if (buttonState_aufwaerts == LOW) {
pos = pos + 20;
lcd.setCursor(0, 0);
lcd.print("Umdrehung: ");
lcd.print((pos/200.),1);

delay(100);
}
if (buttonState_abwaerts == LOW) {
pos = pos - 20;
lcd.setCursor(0, 0);
lcd.print("Umdrehung: ");
lcd.print((pos/200.),1);

delay(100);
}
geschw = analogRead(0);
stepper.setMaxSpeed(geschw);
lcd.setCursor(0, 1);
lcd.print("Geschw.: ");
lcd.print(geschw);
lcd.print(" ");
buttonState_starttaster = digitalRead(starttaster);
if (buttonState_starttaster == LOW) {
stepper.moveTo(pos);
while (stepper.distanceToGo() != 0 )
{
stepper.run();
buttonState_stoptaster = digitalRead(stoptaster);
if (buttonState_stoptaster == LOW) {
stepper.setCurrentPosition(-pos);
break;
}
}
stepper.setCurrentPosition(-pos);
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 15:00 (Dieser Beitrag wurde zuletzt bearbeitet: 25.05.2015 15:04 von dqb312.)
Beitrag #2
RE: LCD zeigt nach einiger Zeit unlesbaren Code an
Hallo,

es bleibt sicher ein Rest der jeweils vorherigen Anzeige stehen. Das wird nicht automatisch gelöscht. Du solltest daher vor einer Ausgabe auf das LCD die Anzeige löschen (ganz oder Teilweise). Lies dir dazu die Benutzung von lcd.clear durch. Alternativ mit Leerzeichen auffüllen, damit ist der Rest dann auch weg.

Gruß Rainer
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 16:59
Beitrag #3
RE: LCD zeigt nach einiger Zeit unlesbaren Code an
Das mit den Leerzeichen un dem lcd.clear() habe ich schon probiert. Hat beides nichts gebracht. Das mit der Variablen hab ich mir auch schon gedacht, deswegen habe ich mal die variable pos als double deklariert. Hat aber auch nichts gebracht. Aber eigentlich werden die variablen ja jedesmal neu berechnet und nicht hochgezählt. Deswegen hab ich keine Ahnung was da los ist Huh

Gruß Nico
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 17:15
Beitrag #4
RE: LCD zeigt nach einiger Zeit unlesbaren Code an
Hallo,
man erkläre mir mal Bitte was genau in dieser LCD Ausgabe wie angezeigt werden soll:

lcd.print((pos/200.),1);

ebenso irritiert bin ich von dem Minuszeichen in der Stepper Ausgabe:

stepper.setCurrentPosition(-pos);

Dann wundert es mich das die Variabel pos als double deklariert ist, ähm also ein Schrittmotor kann mit Flieskommazahlen nichts anfangen... dazu nimmt man integer oder long int , am besten mal die Beschreibung der AccelStepper Lib durchsehen was die verarbeiten kann.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 18:17
Beitrag #5
RE: LCD zeigt nach einiger Zeit unlesbaren Code an
Also in der print Ausgabe rechne ich die variable pos ei fach nur um, sodass ich in 10tel Umdrehungen einstelle kann. Das funktioniert auch eine gewisse Zeit lang sehr gut. Trotz der Benutzung einer Double variablen funktioniert der Schrittmotor einwandfrei.
Das minus verwirrt mich selbst, aber ohne dieses ist der Schrittmotor genau einmal gefahren und dann nie wiederHuh

Gruß Nico
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 18:25 (Dieser Beitrag wurde zuletzt bearbeitet: 25.05.2015 18:33 von tito-t.)
Beitrag #6
RE: LCD zeigt nach einiger Zeit unlesbaren Code an
mit welchem Board arbeitest du?
nur auf dem Due ist double wirklich double, sonst (auf den AVRs) ist es dasselbe wie float (also nur 7-8 Stellen genau). Bei großen Zahlen wirkt sich dann eine Addition von 1 nicht mehr aus.
Aber viel wichtiger:
wie ist der Vergleich aller Zahlen, wenn du sie synchron auf serial und auf dem LCD ausgibst (exakt identisch formatiert) ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 18:44
Beitrag #7
RE: LCD zeigt nach einiger Zeit unlesbaren Code an
Es ist ein UNO. Das mit dem serial ist eine gute Idee, hab ich garnicht dran gedacht . Das werde ich aber erst am Mittwoch Abend ausprobieren können.

Gruß Nico
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.05.2015, 19:09 (Dieser Beitrag wurde zuletzt bearbeitet: 25.05.2015 19:10 von Bitklopfer.)
Beitrag #8
RE: LCD zeigt nach einiger Zeit unlesbaren Code an
(25.05.2015 18:17)kaplopez schrieb:  Also in der print Ausgabe rechne ich die variable pos ei fach nur um, sodass ich in 10tel Umdrehungen einstelle kann. Das funktioniert auch eine gewisse Zeit lang sehr gut. Trotz der Benutzung einer Double variablen funktioniert der Schrittmotor einwandfrei.
Das minus verwirrt mich selbst, aber ohne dieses ist der Schrittmotor genau einmal gefahren und dann nie wiederHuh

Gruß Nico

und was soll dann da der Punkt hinter der 200. ? Ausserdem würde ich Berechnungen nicht in der Ausgabereoutine machen.

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  PC verliert nach Neustart den Arduino Mathias 5 260 13.07.2016 16:59
Letzter Beitrag: hotsystems
  Mit Poti Zeit einstellen Rossy 8 1.691 31.08.2015 18:36
Letzter Beitrag: Rossy
  Welchen Wert zeigt ein DS18B20 über 125 Grad? Jetiman 3 813 02.08.2015 11:29
Letzter Beitrag: Jetiman
  Uhr / Zeit für Arduino cncteile 13 2.349 02.08.2015 08:34
Letzter Beitrag: rkuehle
  DS1307 Uhrzeit nach Start TheGent86 16 2.386 21.07.2015 07:57
Letzter Beitrag: HaWe
  Code lässt sich nicht uploaden! German_Arduino_User 2 1.267 30.01.2015 19:56
Letzter Beitrag: German_Arduino_User
  Funk Wandschalter Code raus bekommen reini12 0 755 13.09.2014 22:42
Letzter Beitrag: reini12
  LCD 16x2 zeigt plötzlich nichts mehr!?? Wolfgang_2801 1 1.682 24.10.2013 20:24
Letzter Beitrag: rkuehle

Gehe zu:


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