Arama butonu
Bu konudaki kullanıcılar: 1 misafir
2
Cevap
388
Tıklama
0
Öne Çıkarma
Seri port ekranı açılmadan sd karta veri yazma
M
7 yıl
Teğmen
Konu Sahibi

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.

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);
}
}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



Z
7 yıl
Binbaşı

sensorlerin data vermek icin belli hizlari vardir, en fazla saniyede 10 okuma yapiyor olabilir. sensorun datasheetinden kontrol edip onaylayin.

seri konsal kismini anlamadim ..



M
7 yıl
Teğmen
Konu Sahibi

iilginiz içün teşekkür ederim. olay şu ki ardunio beslemeyi 9 volt ile yaptığımda kodlarım çalışmıyor. Sd karta veri yazma işlemi gercekleşmiyor.



< Bu ileti mobil sürüm kullanılarak atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.