Auslesen einer Waage und Messwert abspeicher auf SD nicht zuverlässig
hallo,
ich habe mithilfe eines arduino mega 2560 ein projekt realisiert.
leider funktioniert das auslesen meiner waage und das darauf folgende abspeichern des messwertes nicht zuverlässig genug.
hier der sketch
leider wird der gewogene wert erst beim zweiten mal wiegen übermittelt. und die messwerte werden nicht jedesmal auf die sd karte geschrieben, sondern wirkürlich.
ich weiß momentan nicht weiter und hoffe das mir hier jemand weiter helfen kann.
ich habe mithilfe eines arduino mega 2560 ein projekt realisiert.
leider funktioniert das auslesen meiner waage und das darauf folgende abspeichern des messwertes nicht zuverlässig genug.
hier der sketch
code: [select]
void wiegen ()
{
serial.println("anforderung zum wiegen wird gesendet");
serial3.print("s");
serial.println("wurde gesendet");
while (serial3.available()>0)
{
// erhalte daten
char inchar = (char)serial3.read();
// füge zu inputstring hinzu:
inputstring += inchar;
// wenn das eintreffende zeichen eine neue zeile ist, ist der empfange string komplett
if (inchar == '\n')
{
stringcomplete = true;
serial.print("string komplett");
}
}
delay(2000);
datei = sd.open("messung.txt", file_write);
if (datei)
{
serial.print("schreibe messwert in messwert.txt...");
datei.println(inputstring);
// close file:
datei.close();
serial.println("done.");
}
else
{
// fehlermeldung
serial.println("error opening te.txt");
}
serial.println(inputstring);
delay(2000);
// clear string:
inputstring= "";
}
leider wird der gewogene wert erst beim zweiten mal wiegen übermittelt. und die messwerte werden nicht jedesmal auf die sd karte geschrieben, sondern wirkürlich.
ich weiß momentan nicht weiter und hoffe das mir hier jemand weiter helfen kann.
leider funktioniert das auslesen meiner waage und das darauf folgende abspeichern des messwertes nicht zuverlässig genug.
leider sind string-objekte in der arduino-software fehlerhaft implementiert und führen bei bestimmten programmen nach kürzerer oder längerer laufzeit zum programmabsturz (programm läuft überhaupt nicht mehr weiter), dass es sich eigentlich nicht lohnt, string-objekte in seinen programmen zu benutzen. die programme sind wegen der fehlerhaften string-objekte immer latent fehlerhaft.
das mittel der wahl bei der c-programmierung sind char-arrays ("c-strings"), die auch von allen library-funktionen verwendet werden.
anyway, das nur nebenbei.
dein fehler dürfte sein, dass du nach der anforderung zum wiegen nicht auf das wiegeergebnis wartest.
wie lange braucht die waage, um nach der anforderung ein ergebnis zu liefern?
eine sekunde? zwei sekunden? drei sekunden?
ich gehe mal von zwei sekunden aus.
code:
serial3.print("s");
serial.println("wurde gesendet");
delay(2000); // warte auf das wiegeergebnis
serial.println("auf ergebnis wurde gewartet");
while (serial3.available()>0)
...
eine saubere programmierung ist das aber auch nicht. normalerweise trennt man etwas funktionell.
eine funktion zum senden der wiegeanforderung
eine funktion zum einlesen von antworten von der waage
und ohne delays.
Arduino Forum > International > Deutsch (Moderator: uwefed) > Auslesen einer Waage und Messwert abspeicher auf SD nicht zuverlässig
arduino
Comments
Post a Comment