Arduino Sd karta veri yazma sorunu.

Bu konuyu okuyanlar

mrtfb123

Öğrenci
Katılım
18 Kasım 2015
Mesajlar
37
Reaksiyon puanı
0
Puanları
6
merhaba arkadaşlar sensörlerden aldığım bilgileri sd karta yazdıyorum fakat bu işlemi seri port ekranını açmadan yapamıyor. Seri port ekranını açınca yazma işlemi gerçekleştiriyor. Ben 9 v pille yazma işlemi yapmak istiyorum. Fakat yapamıyorum. Kodlarım şu şekilde. Ekstra olarakta saniyede 10 değerden fazla alamıyorum en az 25 değer almak istiyorum.
Kod:
double dewPoint(double celsius, double humidity)
{
  // (1) Saturation Vapor Pressure = ESGG(T)
  double RATIO = 373.15 / (273.15 + celsius);
  double RHS = -7.90298 * (RATIO - 1);
  RHS += 5.02808 * log10(RATIO);
  RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1 / RATIO ))) - 1) ;
  RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
  RHS += log10(1013.246);

  // factor -3 is to adjust units - Vapor Pressure SVP * humidity
  double VP = pow(10, RHS - 3) * humidity;

  // (2) DEWPOINT = F(Vapor Pressure)
  double T = log(VP / 0.61078); // temp var
  return (241.88 * T) / (17.558 - T);
}
#include "DHT.h"
#include <DS3231.h>
#include <SD.h>
#include "Adafruit_BMP085.h" 
Adafruit_BMP085 bmp;
#define DHTPIN 2
#define DHTTYPE DHT22
const int chipSelect = 4;
DHT sensor(DHTPIN, DHTTYPE);
DS3231  rtc(SDA, SCL);
void setup()
{
Serial.begin(2000000);
rtc.begin();
rtc.setTime(12, 0, 0);   
rtc.setDate(1, 1, 2014);
sensor.begin();
SD.begin(chipSelect);
bmp.begin();
}
void loop()
{
float humidity = sensor.readHumidity();
float S_C = sensor.readTemperature();
float S_F = sensor.readTemperature(true);
float I_F = sensor.computeHeatIndex(S_F, humidity);
float I_C = sensor.convertFtoC(I_F);
float p = bmp.readPressure();
float y = bmp.readAltitude();
File sdcard_file = SD.open("veri.txt", FILE_WRITE);
if (sdcard_file) {
sdcard_file.print(rtc.getDateStr());
sdcard_file.print(" ");
sdcard_file.print(rtc.getTimeStr());
sdcard_file.print("  Sıcaklık C:");
sdcard_file.print(S_C);
sdcard_file.print("  Nem:%");
sdcard_file.print(humidity);
sdcard_file.print("  Isı C: ");
sdcard_file.print(I_C);
sdcard_file.print("  Çığ Devrilme Noktası(*C):");
sdcard_file.print(dewPoint(S_C, humidity));
sdcard_file.print("  Basınç = ");
sdcard_file.print(p);
sdcard_file.print(" Pa");
sdcard_file.print(" Yükseklik = ");
sdcard_file.print(y);
sdcard_file.println(" metre ");
sdcard_file.close();
Serial.print(rtc.getDateStr());
Serial.print(" ");
Serial.print(rtc.getTimeStr());
Serial.print("  Sıcaklık C:");
Serial.print(S_C);
Serial.print("  Nem:%");
Serial.print(humidity);
Serial.print("  Isı C: ");
Serial.print(I_C);
Serial.print("  Çığ Devrilme Noktası(*C):");
Serial.print(dewPoint(S_C, humidity));
Serial.print("  Basınç = ");
Serial.print(p);
Serial.print(" Pa");
 Serial.print(" Yükseklik = ");
Serial.print(y);
Serial.println(" metre ");
delay(10);
}
}
 

Regtoy

Öğrenci
Katılım
21 Mart 2018
Mesajlar
2
Reaksiyon puanı
0
Puanları
1
Yaş
30
Serial.begin(2000000); yazdığın satır gerçekleşmeden diğer satırlara geçmeyeceği için problem yaşıyorsun dolayısı ile o satırı kaldırıp denermisin tabi bu arada serial printleri commente al hata vermesin
 

mrtfb123

Öğrenci
Katılım
18 Kasım 2015
Mesajlar
37
Reaksiyon puanı
0
Puanları
6
denedim onuda gene alamadım bu sefer port ekranını açtım oraya yazmadı ama sd karta yazdırdı. port ekranını açmadan yazma işlemi yapmadı yine.
 

Regtoy

Öğrenci
Katılım
21 Mart 2018
Mesajlar
2
Reaksiyon puanı
0
Puanları
1
Yaş
30
kontrol etmek adına void loop içerisine bir adet led yakma ve söndürme eklermisin en azından başına yakma sonuna söndürme olacak şekilde led bağla ve kontrol et loop kısmına giriyormu daha sonra oraya gelmiyorsa sırayla setup içerisindeki tanımlamaların altına teker teker ekleyerek dene bu arada kartın ne uno/mega ayrıca kartın orjinalmi klonmu belirtirsen sevinirim belki kodda aradığımız sorun kartının önyükleyicisinden kaynaklı olabilir yada kart modelinden
 

mrtfb123

Öğrenci
Katılım
18 Kasım 2015
Mesajlar
37
Reaksiyon puanı
0
Puanları
6
kartım klon uno loop ve setuplara sorunsuz giriyor.
 
Üst