Forum kuralları gereği önce arama yaptım; fakat "Bu bölümde ara" kısmından arama yapmak istediğimde güvenlik kodu girmem isteniyor. Her girdiğimde ise yenisi geliyor. O sebeple tam bir arama yapamadım. Eğer kuralları deldiysem özür dilerim.
Konuya gelecek olursam, internette bulduğum bir hava durumu projesi var. Ben bu projeye Bluetooth eklemek istiyorum; ancak bir türlü beceremedim. Aranızda yardım edebilecek bir arkadaşım var ise ve yardım eder ise (: çok sevinirim. Şimdiden çok teşekkür ederim. Hayırlı forumlar...
#include "DHT.h" //DHT sensörleri kitaplığını taslağımıza dahil ediyoruz. #include <SFE_BMP180.h> //Basınç sensörü kitaplığını taslağımıza dahil ediyoruz. #include <Wire.h> //Wire kütüphanesini taslağımıza dahil ediyoruz. #include <LCD5110_Graph.h> //5110 grafik kütüphanesini taslağımıza dahil ediyoruz.
#define DHTPIN 2 //DHT22'nin veri pinini Arduino'daki hangi pine bağladığımızı belirtiyoruz. #define DHTTYPE DHT11 //Hangi DHT sensörünü kullandığımızı belirtiyoruz. #define ALTITUDE 189.0 //Bulunduğunuz şehrin rakım değeri. Ben Eskişehir'deyim, yani 788. //Yaşadığınız şehrin rakımına buradan bakın:
int lcdledi=12; int i=0; int gecenzaman=0; int basinckarsilastirma[24] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //İçinde 24 adet değişken saklayan bir Array yaratıyoruz. Bu değişkenlerin her biri saat başı basınç değerlerini tutacak. int firsttime =0; //Mini Hava İstasyonu'nun ilk defa açılıp açılmadığını kontrol etmek için oluşturduğumuz değişken.
int toplam=0; int ortalama=0; int fark=0; int tahmin; int yonelim;
void setup() { pinMode(A3, INPUT); pinMode(7, OUTPUT); pinMode(13, OUTPUT); pinMode(3, OUTPUT); digitalWrite(13, LOW); dht.begin(); //DHT22 ısı ve nem sensörünü ölçümlere başlattırıyoruz. bmp180.begin(); // BMP180 basınç sensörünü ölçümlere başlattırıyoruz. myGLCD.InitLCD(); //LCD başlatılıyor. myGLCD.setContrast(60); //Kontrast değeri belirleniyor. String a= String(i); i +=1; myGLCD.setFont(SmallFont); digitalWrite(lcdledi, LOW); delay(1000);
int deger; deger = analogRead(A1); Serial.println(deger); delay(50);
int seviye; seviye = analogRead(A0); Serial.println(seviye); delay(50);
int nem = dht.readHumidity(); //DHT22 sensöründen nem okunuyor ve nem değişkenine yazılıyor. int sicaklik = dht.readTemperature(); //DHT22 sensöründen sıcaklık okunuyor ve nem değişkenine yazılıyor. int basinc = readPressure(); //BMP180 sensöründen basınç okunuyor ve basinc değişkenine yazılıyor.
float sicaklikf = dht.readTemperature(); //Detaylı bir şekilde göstermek için bir de float (küsüratlı) şeklinde değişken yapıyoruz. float nemf = dht.readHumidity(); //Detaylı bir şekilde göstermek için bir de float (küsüratlı) şeklinde değişken yapıyoruz. float basincf = readPressure(); //Detaylı bir şekilde göstermek için bir de float (küsüratlı) şeklinde değişken yapıyoruz.
if (digitalRead(6) == LOW) { //ÇALIŞMA MODUNU BELİRLE. SWITCH AÇIKSA NORMAL MODDA ÇALIŞ. myGLCD.disableSleep(); //Ekranın güç tasarrufu modunu kapatıyoruz.
if (firsttime == 0) { //İlk açılışta intromuzu gösteriyoruz ve sensörlerin okunduğu bilgisini veriyoruz... //Aşağıda İntro Animasyonu var... myGLCD.clrScr(); for (int i = 84; i >= 7; i--) { myGLCD.setFont(TinyFont); myGLCD.print("MINI HAVA ISTASYONU", i, 37); delay(20); myGLCD.update(); }
for (int i = 48; i >= 43; i--) { myGLCD.clrScr(); myGLCD.setFont(TinyFont); myGLCD.print("MINI HAVA ISTASYONU", 7, 37); myGLCD.print("SENSORLER OKUNUYOR", 8, i); delay(50); myGLCD.update(); }
delay(5000); //Sensörlerin okunması için gerekli zamanı sağlıyoruz. firsttime = 1; // Hava İstasyonu'nun açıldığını ve introyu bir daha göstermeye gerek olmadığını belirtiyoruz.
if (yonelim == 1) { //Eğer basınç yükselme eğilimindeyse, yukarı doğru ok animasyonu gösteriyoruz.
for (int c = 0; c < 4; c++) { //İlk for döngüsü animasyonu 4 kere tekrar etmemizi sağlıyor.
for (int i = 20; i > 10; i--) { //İkinci for döngüsü animasyonun ilk hareketini. myGLCD.drawBitmap(64, i, uparrow, 24, 24); myGLCD.update(); delay(75); } for (int y = 10; y < 20; y++) { //Üçüncü for döngüsü animasyonun ikinci hareketini yapıyor. myGLCD.drawBitmap(64, y, uparrow, 24, 24); myGLCD.update(); delay(75); } } }
if (yonelim == 0) { //Eğer basınç değerleri aynı çizgide ilerliyorsa, sağa ve sola ok animasyonu gösteriyoruz.
for (int c = 0; c < 4; c++) { //İlk for döngüsü animasyonu 4 kere tekrar etmemizi sağlıyor.
for (int i = 62; i < 65; i++) { //İkinci for döngüsü animasyonun ilk hareketini. myGLCD.drawBitmap(i, 20, equal, 22, 17); myGLCD.update(); delay(125); } for (int y = 65; y > 62; y--) { //Üçüncü for döngüsü animasyonun ikinci hareketini yapıyor. myGLCD.drawBitmap(y, 20, equal, 22, 17); myGLCD.update(); delay(125); } } }
if (yonelim == -1) { //Eğer basınç düşme eğilimindeyse, aşağı doğru ok animasyonu gösteriyoruz.
for (int c = 0; c < 4; c++) { //İlk for döngüsü animasyonu 4 kere tekrar etmemizi sağlıyor.
for (int i = 10; i < 20; i++) { //İkinci for döngüsü animasyonun ilk hareketini. myGLCD.drawBitmap(64, i, downarrow, 24, 24); myGLCD.update(); delay(75); } for (int y = 20; y > 10; y--) { //Üçüncü for döngüsü animasyonun ikinci hareketini yapıyor. myGLCD.drawBitmap(64, y, downarrow, 24, 24); myGLCD.update(); delay(75); } } }
++gecenzaman; //'gecenzaman' değişkenin 1 artmasını söylüyoruz. //Yukarıdaki birçok delay komutu sebebiyle 'gecenzaman' isimli değişkenin 1 artması için 20 saniye geçmesi gerekiyor. //Bu sayede Arduino açık olduğundan bu yana geçen zamanı hesaplayabiliriz. 'gecenzaman' değişkeni 180 sayısına ulaşırsa //1 saat geçmiş, 360'a ulaşırsa 2 saat geçmiş olur.. Böyle devam ettirerek hesaplayabiliriz.
} else { // EĞER SWITCH KAPALI KONUMA GETİRİLİRSE GÜÇ TASARRUFU ÇALIŞIR.. GÜÇ TASARRUFU MODUNDA ÖLÇÜMLER DEVAM EDER. myGLCD.enableSleep(); digitalWrite(7, LOW); ++gecenzaman; delay(20000); }