Arduino Polska Forum

Pełna wersja: Zapis danych z czujników na karcie SD
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witajcie męczę się kilka dni już z zapisem danych z czujnika DS18B20 na karcie sd i dostaję informacje przy kompilacji że zmienna "float" nie może zostać zapisana po zmianie na int zapisuje ale pokazuje w cały świat. Oto fragment kodu:
Kod:
#include <SPI.h>
#include <SD.h>
#include <OneWire.h>
#include <DS18B20.h>
#include <iostream>
#include <stdio.h>

const int chipSelect = 10;
#define ONEWIRE_PIN 2
byte address[8] = {0x28, 0x1, 0x4F, 0x2C, 0x6, 0x0, 0x0, 0x1C};
OneWire onewire(ONEWIRE_PIN);
DS18B20 sensors(&onewire);

void setup() {

// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial)

sensors.begin();
sensors.request(address);
{
 
}

Serial.print("Initializing SD card...");

// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
  Serial.println("Card failed, or not present");
  // don't do anything more:
  return;
}
Serial.println("card initialized.");
}

void loop() {
delay(2000);
if (sensors.available())
{
  float temperature = sensors.readTemperature(address);
  sensors.request(address);
}

File dataFile = SD.open("datalog.txt", FILE_WRITE);

// if the file is available, write to it:
if (dataFile) {
  dataFile.println(address);
  dataFile.close();
  // print to the serial port too:
  Serial.println(address);
  Serial.println();
}
// if the file isn't open, pop up an error:
else {
  Serial.println("error opening datalog.txt");
}


}


serdeczne dzięki za pomoc
Niestety w swoich zasobach nie miałem DTH22 jedynie DTH11 przerobiłem troszkę twój programik pod DTH11 i zapis na karcie jest poprawny niezależnie czy daję mu do zapisu dane byte , int czy float .Zerknij może na coś wpadniesz .

Jedyne co rzuca mi się w oczy to zdeklaruj " float temperature " przed setup aby była widoczna dla całego programu i zapisz na kartę " temperature " a nie " adress " bo nie wiem w jakiej formie DTH wysyła dane .

Kod:
#include <SPI.h>
#include <SD.h>
#include <DHT11.h>
DHT11 dht11(3);
float temp, humi;

void setup() {

Serial.begin(9600);

Serial.print("Initializing SD card...");

 if (!SD.begin(10)) {
   Serial.println("Card failed, or not present");
   return;
 }
Serial.println("card initialized.");
}

void loop() {

 int err;
 
 if((err=dht11.read(humi, temp))==0)
 {
   Serial.print("temperature:");
   Serial.print(temp);
   Serial.print(" humidity:");
   Serial.print(humi);
   Serial.println();

File dataFile = SD.open("datalog.txt", FILE_WRITE);

if (dataFile) {
 dataFile.print("wilgotnosc : ");
 dataFile.print(humi);
 dataFile.print("  ");
 dataFile.print("temperatura : ");
 dataFile.print(temp);
 dataFile.println("  ");
 dataFile.close();
      }
   }
}