- Katılım
- 21 Ara 2006
- Mesajlar
- 2,532
- Puanları
- 419
#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şabilirimKod:#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); } }
Youtubeda ki video gizlenmiş görüntülenmiyor artıkmerhaba
malesef bende bulamadım youtube var diye kayıt etmemişim sadece burada yaplaştığım kod var
Butonun 1 bacağını 3 no ya bağladıktan sonra diğer bacağını nereye bağlıyoruzmerhaba
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
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?