Su akış sensörü ve I2c lcd ile toplam litre gösterimi kod yardım ?

korkmaz_design

Yönetici
Yönetici
Yönetici
Katılım
21 Ara 2006
Mesajlar
2,412
Puanları
419
merhaba
liktedi projeyi yaptım sadece trafik lambası kısmını bağlamadım ama(yazılım bilgim yok)toplam litreyi bulmak istiyorum 1,5lt su sişesini 1,8 litre gibi hesaplıyor lt/dk hesaplıyor

istediğim devreyi değiştirmeden toplam lt miktarı yazması ve ölçülen değerin doğru olması

yardımlarınızı bekliyorum
kolay gelsin
 
Konu Sah
korkmaz_design

korkmaz_design

Yönetici
Yönetici
Yönetici
Katılım
21 Ara 2006
Mesajlar
2,412
Puanları
419
Kod:
#include "Arduino.h"
#include <Wire.h>
#include <LiquidCrystal_I2C_AvrI2C.h>  //Lcd ekran kütüphanemizi ekliyoruz.


int KIRMIZI = 8; //Kırımızı trafik lambası pinimizi digital 8'e bağladık.
int SARI = 9;    //Sarı trafik lambası pinimizi digital 9'a bağladık.
int YESIL = 10;  //Yeşilı trafik lambası pinimizi digital 10'a bağladık.
#define Buton 3  // Buton pinimizi digital 3'e bağladık.


int sayac = 0;
int interval = 1000;
unsigned long previousMillis = 0;

volatile int flow_frequency;   // Sensör akış frekansı (sensör palsi)
float litre;                   // Toplam kullanılan litre.
unsigned char flowsensor = 2;  // Debimetre sinyal pinimizi digital 2'ye bağladık.
unsigned long currentTime;
unsigned long cloopTime;
int toplamdakika;

void flow () // Interrupt
{
flow_frequency++;
}


LiquidCrystal_I2C_AvrI2C lcd(0x27,16,2);                //Lcd ekran bağlantısı

void setup() {
 
lcd.begin();                                   //LCD ekranımızı başlatıyoruz.
lcd.clear();                                   //LCD ekranımızı temizliyoruz.

pinMode (YESIL, OUTPUT);
pinMode (SARI, OUTPUT);
pinMode (KIRMIZI, OUTPUT);

pinMode(Buton, INPUT);

// Sensör Giriş Ayarları

pinMode(flowsensor, INPUT);

digitalWrite(flowsensor, HIGH);

// İnterrupt/Kesme Ayarları
attachInterrupt(0, flow, RISING); //Hall effect sensörü her RISING oluşunda flow formülünü çalıştırır. Buradaki sıfıt interreupt kullanırken Arduino uno üzerindeki D2 pini temsil ediyor.
sei(); // interrupts açık
currentTime = millis();
cloopTime = currentTime;

lcd.setCursor(0, 0);               
lcd.print(" Debimetre V1");
lcd.setCursor(0, 1);
lcd.print(" Mehmet Ali TOR");
delay(2000);
}


void loop() {

currentTime = millis();
// saniyede geçen pals sayısı sayılıp litre - saat hesabı alınması
if(currentTime >= (cloopTime + 1000))
{
cloopTime = currentTime; // saniyeyi güncelle

litre = (flow_frequency / 7.5 / 60); // saniyede geçen litre
//flow_frequency = 0; // sayıcıyı sıfırlar, eğer sayacı sıfırlarsak ekranda her defasında litre/saniye değerini görürüz. Ancak sıfırlamazsak saniyede geçen debi toplanarak gider ve toplam kullanılan suyu görürüz.
}


if ((millis() - previousMillis) >= interval){
previousMillis = millis();

toplamdakika = sayac/60; // milisaniye değerini 60'a bölerek toplam geçen dakikayı buluyoruz.

sayac++;
 
}


if (digitalRead(Buton) == LOW){ //Eğer butona basıldıysa

flow_frequency = 0; // Sensör palsini sıfırla
sayac = 0;          // Zaman sayacını sıfırla


lcd.setCursor(0, 0);
lcd.print("  Su ve Zaman        ");
lcd.setCursor(0, 1);
lcd.print("  Resetlendi         ");

}

else {
lcd.setCursor(0, 0);               
lcd.print("Su   : ");
lcd.print(litre, 1); // toplam kullanılan suyu gösterir, virgülden sonraki 2 basamağı gösterir.
lcd.print(" lt");
lcd.setCursor(0, 1);
lcd.print("Zaman: ");
lcd.print(toplamdakika); //toplam kullanımda geçen süreyi verir.
lcd.println("   dk    ");
delay(100);
}

if (litre <= 1){
digitalWrite (KIRMIZI, LOW);
digitalWrite (SARI, LOW);
digitalWrite (YESIL, HIGH);
}
else if (1 < litre && litre <= 2){
digitalWrite (KIRMIZI, LOW);
digitalWrite (SARI, HIGH);
digitalWrite (YESIL, LOW);
}
else {
digitalWrite (KIRMIZI, HIGH);
digitalWrite (SARI, LOW);
digitalWrite (YESIL, LOW);
}


}
 

bolubeyi

Profesyonel Üye
Katılım
27 Eyl 2008
Mesajlar
1,270
Puanları
421
Konum
Trabzon
litre = (flow_frequency / 7.5 / 60); // saniyede geçen litre

Bu koddaki 7.5 değerini deneme yanılma yöntemiyle değiştirip sistemi kalibre etmeye çalışın.
 

silvestir

Profesyonel Üye
Katılım
10 Ağu 2011
Mesajlar
2,769
Puanları
656
Su bitince dönmeye devam ediyordur, su bitmemeli.
 

GOLD47

Üye
Katılım
11 Tem 2017
Mesajlar
3
Puanları
1
Yaş
25
Kod:
#include "Arduino.h"
#include <Wire.h>
#include <LiquidCrystal_I2C_AvrI2C.h>  //Lcd ekran kütüphanemizi ekliyoruz.


int KIRMIZI = 8; //Kırımızı trafik lambası pinimizi digital 8'e bağladık.
int SARI = 9;    //Sarı trafik lambası pinimizi digital 9'a bağladık.
int YESIL = 10;  //Yeşilı trafik lambası pinimizi digital 10'a bağladık.
#define Buton 3  // Buton pinimizi digital 3'e bağladık.


int sayac = 0;
int interval = 1000;
unsigned long previousMillis = 0;

volatile int flow_frequency;   // Sensör akış frekansı (sensör palsi)
float litre;                   // Toplam kullanılan litre.
unsigned char flowsensor = 2;  // Debimetre sinyal pinimizi digital 2'ye bağladık.
unsigned long currentTime;
unsigned long cloopTime;
int toplamdakika;

void flow () // Interrupt
{
flow_frequency++;
}


LiquidCrystal_I2C_AvrI2C lcd(0x27,16,2);                //Lcd ekran bağlantısı

void setup() {
 
lcd.begin();                                   //LCD ekranımızı başlatıyoruz.
lcd.clear();                                   //LCD ekranımızı temizliyoruz.

pinMode (YESIL, OUTPUT);
pinMode (SARI, OUTPUT);
pinMode (KIRMIZI, OUTPUT);

pinMode(Buton, INPUT);

// Sensör Giriş Ayarları

pinMode(flowsensor, INPUT);

digitalWrite(flowsensor, HIGH);

// İnterrupt/Kesme Ayarları
attachInterrupt(0, flow, RISING); //Hall effect sensörü her RISING oluşunda flow formülünü çalıştırır. Buradaki sıfıt interreupt kullanırken Arduino uno üzerindeki D2 pini temsil ediyor.
sei(); // interrupts açık
currentTime = millis();
cloopTime = currentTime;

lcd.setCursor(0, 0);              
lcd.print(" Debimetre V1");
lcd.setCursor(0, 1);
lcd.print(" Mehmet Ali TOR");
delay(2000);
}


void loop() {

currentTime = millis();
// saniyede geçen pals sayısı sayılıp litre - saat hesabı alınması
if(currentTime >= (cloopTime + 1000))
{
cloopTime = currentTime; // saniyeyi güncelle

litre = (flow_frequency / 7.5 / 60); // saniyede geçen litre
//flow_frequency = 0; // sayıcıyı sıfırlar, eğer sayacı sıfırlarsak ekranda her defasında litre/saniye değerini görürüz. Ancak sıfırlamazsak saniyede geçen debi toplanarak gider ve toplam kullanılan suyu görürüz.
}


if ((millis() - previousMillis) >= interval){
previousMillis = millis();

toplamdakika = sayac/60; // milisaniye değerini 60'a bölerek toplam geçen dakikayı buluyoruz.

sayac++;
 
}


if (digitalRead(Buton) == LOW){ //Eğer butona basıldıysa

flow_frequency = 0; // Sensör palsini sıfırla
sayac = 0;          // Zaman sayacını sıfırla


lcd.setCursor(0, 0);
lcd.print("  Su ve Zaman        ");
lcd.setCursor(0, 1);
lcd.print("  Resetlendi         ");

}

else {
lcd.setCursor(0, 0);              
lcd.print("Su   : ");
lcd.print(litre, 1); // toplam kullanılan suyu gösterir, virgülden sonraki 2 basamağı gösterir.
lcd.print(" lt");
lcd.setCursor(0, 1);
lcd.print("Zaman: ");
lcd.print(toplamdakika); //toplam kullanımda geçen süreyi verir.
lcd.println("   dk    ");
delay(100);
}

if (litre <= 1){
digitalWrite (KIRMIZI, LOW);
digitalWrite (SARI, LOW);
digitalWrite (YESIL, HIGH);
}
else if (1 < litre && litre <= 2){
digitalWrite (KIRMIZI, LOW);
digitalWrite (SARI, HIGH);
digitalWrite (YESIL, LOW);
}
else {
digitalWrite (KIRMIZI, HIGH);
digitalWrite (SARI, LOW);
digitalWrite (YESIL, LOW);
}


}
merhaba bu projeyi yapacağım bağlantı şeması lazım bana size nasıl ulaşabilirim
 
Konu Sah
korkmaz_design

korkmaz_design

Yönetici
Yönetici
Yönetici
Katılım
21 Ara 2006
Mesajlar
2,412
Puanları
419
merhaba
malesef bende bulamadım youtube var diye kayıt etmemişim sadece burada yaplaştığım kod var
 

GOLD47

Üye
Katılım
11 Tem 2017
Mesajlar
3
Puanları
1
Yaş
25
merhaba
liktedi projeyi yaptım sadece trafik lambası kısmını bağlamadım ama(yazılım bilgim yok)toplam litreyi bulmak istiyorum 1,5lt su sişesini 1,8 litre gibi hesaplıyor lt/dk hesaplıyor

istediğim devreyi değiştirmeden toplam lt miktarı yazması ve ölçülen değerin doğru olması

yardımlarınızı bekliyorum
kolay gelsin
Butonun 1 bacağını 3 no ya bağladıktan sonra diğer bacağını nereye bağlıyoruz
 

Forum istatistikleri

Konular
119,282
Mesajlar
839,240
Kullanıcılar
432,517
Son üye
elektirikci64

Yeni konular

Üst