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:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Float in char/int - sd logger
24.07.2014, 14:08
Beitrag #1
Question Float in char/int - sd logger
Hi ....

also ich hab hier shcon so einiges ausprobiert, bin selber leider nicht gelernter programmierer und wurschtel mich hier sein jahren step by step durch,...

also ich habe einen dht22, einen mq2 und eine diy sd card modul

die daten erfassen, schon lange kein problem m ehr ... aber


float h umzuwandeln um sie auf sd zu schreiben????


hier mal der code, zz mit dem versuch es in einen char zu übergeben -> datensalat auf sd card

Code:
#include <DHT.h>

#include <SD.h>

#define DHTPIN 2 // Sensor

#define DHTTYPE DHT22 // DHT Typ definieren

DHT dht1 (DHTPIN, DHTTYPE);

#include <SPI.h>

const int chipSelect = 4;

const int analogInPin = A0;

char i = 0;

int sensorValue = 0;


void setup()
    {
  Serial.begin(9600);
  
  Serial.println("Startup");  
  
  Serial.print("Initializing SD card...");
  
  pinMode(10, OUTPUT);
  
  if (!SD.begin(chipSelect))
      {
  Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
      }
      
  Serial.println("card initialized.");
  
  Serial.println("");
  
  delay(1000);
  
    }


void loop()
    {
  String dataString = "";
  
  sensorValue = analogRead(analogInPin);
  
  float h = dht1.readHumidity();  
  
  float t = dht1.readTemperature();
  
  if (isnan(t) || isnan(h))
      {
  Serial.println ("Fehler - Lesen von Luftfeuchte bzw. Temperatur");
  Serial.println("Gaswert soll: < 100");
  Serial.print("Gaswert ist:  < ");    
  Serial.println(sensorValue);
  Serial.println("___________________");
  Serial.println("");  
      }
      
else
      {
  Serial.print("Feuchte:        ");
  Serial.print(h);
  Serial.println(" %   ");
  Serial.print("Temperatur:     ");
  Serial.print(t);
  Serial.println(" C");
  Serial.println("Gaswert soll: < 100");
  Serial.print("Gaswert ist:  < ");    
  Serial.println(sensorValue);
  Serial.println("___________________");
  Serial.println("");
  delay(1000);                    
      }

  char i[sizeof(float)];
  
  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  
  if (dataFile)
      {
    dataFile.println(i);
    dataFile.close();
    Serial.println(i);
      }  

  else
      {
    Serial.println("Fehler - Lesen von SD: 'datalog.txt'");
      }
  
  Serial.println("Gespeichert - SD: 'datalog.txt'");
  Serial.println("");
  
  delay(5000);

  }



habe auch versucht per string das zu übernehmen, aber am ende reichts mir zu wissen wie ichs bitte genau machen soll und nicht was ich wie falsch gemacht habe Tongue

wäre super wenn mir da jemand helfen könnte

vielen dank im vorraus...

gruß aus berlin...

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.07.2014, 19:12 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2014 19:14 von SkobyMobil.)
Beitrag #2
RE: Float in char/int - sd logger
Hallo,
"float h umzuwandeln um sie auf sd zu schreiben"

Ich weiß nicht so recht, was Du möchtest:

SdDatLog = SD.open("DatLog.txt", FILE_WRITE);
if (SdDatLog)
{
SdDatLog.print(h,1);
SdDatLog.print(" ");
SdDatLog.println("Feuchte");

SdDatLog.close();
}
Gruß und Spaß
Andreas
P.S. welche Lib für SD nutzt Du denn.?
Bei den Beispielen ist alles genau erklärt
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.07.2014, 09:13
Beitrag #3
RE: Float in char/int - sd logger
he benutze die sd.h lib und das geht bei mir so nicht wie du das schreibst, wobei, wozu is n die 1 da bei dir? also println(h,1) ???

bei mir hab ichs so nur lösen können mit meinem nicht fachwissen

Code:
byte a = h;
  byte b = t;
  byte c = sensorValue;
  dataString += String(a);
  dataString += ",";
  dataString += String(b);
  dataString += ",";
  dataString += String(c);
  dataString += ";";

trotzdem fehlen mir ja jetzt die nachkommastellen bei h und t, so komm ich aber immerhin schonmal weiter...

weiss nicht wieso das so is Sad

wenn ich das so mache wie du sagst...

Code:
f_dht_mq2_sd.ino: In function 'void loop()':
f_dht_mq2_sd:96: error: no matching function for call to 'File::println(String&, int)'
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:67: note: candidates are: size_t Print::println(const __FlashStringHelper*)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:68: note:                 size_t Print::println(const String&)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:69: note:                 size_t Print::println(const char*)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:70: note:                 size_t Print::println(char)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:71: note:                 size_t Print::println(unsigned char, int)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:72: note:                 size_t Print::println(int, int)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:73: note:                 size_t Print::println(unsigned int, int)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:74: note:                 size_t Print::println(long int, int)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:75: note:                 size_t Print::println(long unsigned int, int)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:76: note:                 size_t Print::println(double, int)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:77: note:                 size_t Print::println(const Printable&)
C:\Dokumente und Einstellungen\Besitzer\Desktop\downloads\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\cores\arduino/Print.h:78: note:                 size_t Print::println()

danke soweit

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.07.2014, 09:56
Beitrag #4
RE: Float in char/int - sd logger
Moin,

ich würde zum Umwandeln die dtostrf - Funktion benutzen.
Hier: http://www.mikrocontroller.net/topic/86391 gibt es eine gute Erklärung dazu.
Die Funktion läuft bei float und double Inputs.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.07.2014, 10:16
Beitrag #5
RE: Float in char/int - sd logger
moin? Big Grin
moin! aus niedersachsen Smile

danke für den tip werds gleich probieren....

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.07.2014, 11:12
Beitrag #6
RE: Float in char/int - sd logger
Hallo,
Du möchtest doch auf CD loggen?
und hast das vor?
float h umzuwandeln um sie auf sd zu schreiben????

"h" ist doch der Wert der Luftfeuchtig als float?
z.B. 75.345765432544%

x.print(h) ist 75.345765432544
x.print(h,1) ist 75.3
x.print(h,2) ist 75.34

intern wird aber mit der ganzen Zahl gerechnet
was ich nun nicht begreife ist, warum willst Du daraus "char" machen?
Das macht doch so richtig keinen Sinn beim speichern auf SD?

Daher hatte ich gepostet, wie ich es mache.
Wenn Du aus float char machen willst, dann kannst Du, wie erwähnt, dtostrf nutzen.
Da habe ich Dich wohl nicht richtig verstanden.
Gruß und Spaß
Andreas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.07.2014, 12:50
Beitrag #7
RE: Float in char/int - sd logger
ne naja mein kompiler sagte mir ganz am anfang immer als ich das einfach so einschreiben wollte, das nur int und char geht, dann fings an...
kann float nich in char or int an sd übergeben und so weiter, der wollte also ne int oder char haben also hab ich das versucht ohne erfolg... und nun mit dem weg den ich versucht habe... gehts, leider bin ich grad noch nich da um rkuehle's weg aus zu probieren...
mach ich aber kann auch sein das ich alte libs benutze guck ich nachher nochmal, danke für die erklärung soweit Smile
hilft mir grad zum verstehen, bin gespannt obs geht, wobei ja deine methode bei meinem compiler mit dem h,2 wieder aneckt... naja ich guck ma weiter danke soweit Wink Big Grin

Nicht denken,...
...nachdenken... Rolleyes
http://capsicum-felicitas.de.tl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Data Logger Daten auf SD Card schreiben Crichton 12 274 22.11.2016 18:32
Letzter Beitrag: Crichton
  Adafruit SD-master / logger shield: Fehler beim 2. Kompilieren kl-ing 3 329 06.06.2016 16:07
Letzter Beitrag: Bitklopfer
  Rechnen mit float und unsigned long Rudi 3 300 03.06.2016 12:41
Letzter Beitrag: hotsystems
  char zu int scritch 1 437 04.04.2016 16:19
Letzter Beitrag: rkuehle
  invalid conversion from 'const char*' to 'char' toto1975 8 869 31.03.2016 12:49
Letzter Beitrag: hotsystems
  char* inhalt in eine Datei auf SD-Karte schreiben MartinK 0 339 30.03.2016 16:42
Letzter Beitrag: MartinK
  Problem mit char array Retian 12 994 03.01.2016 22:34
Letzter Beitrag: hotsystems
  float in eeprom goldfisch 4 667 28.12.2015 18:54
Letzter Beitrag: Bitklopfer
  Float über I2C zwischen 2 Arduinos UNO Marduino_UNO 9 1.616 19.10.2015 09:09
Letzter Beitrag: Retian
  Umrechnung float Geodaten in Grad'Min'Sec.secfrac HaWe 0 602 04.10.2015 11:42
Letzter Beitrag: HaWe

Gehe zu:


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