Arduino distilasyon projesi
  • Değerli arkadaşlar merhaba,

    Size danışmak istediğim husus, Arduino ve bir takım sensorler vasıtasıyla, bir distilasyon otomasyonu yaptım, sistem kısaca şu şekilde; sıcaklık sensoru düzenli olarak sıcaklık bilgisi alıyor bakır hortumdan, bu sürece WarmUp süreci diyorum, ardından, distilasyon başlıyor sürecine giriyor ve bu süreçte 15 sn kadar Buzzer ile ile ikaz veriyorum, ardından distilasyon süreci başlıyor, bu süreçte gene anlık sıcaklık bilgisi alıyorum, ve başladığından beri olan süreci millis() fonksiyonunu kullanarak LCD ekrana yazdırıyorum, ayrıca bir sensör daha aktif bu esnada water level sensoru ola ki distile edilen sıvı kabı doldurduğunda taşmasın diye, buzzer ile tekrar sesli uyarı alıyorum, Buraya kadar hiç bir problem yok ve kodumu aşağıda paylaşıyorum, lakin sormak istediğim, bir türlü distilasyon başladığı anda yada basitçe sıcaklık 50 c olduğu zamandan itibaren geçen zamanı nasıl yazdırabilirim LCD'ye? Açıldığı andan itibaren sayaç dakika cinsiyle yazıyor, distilasyon süreci başladıktan sonra mevcut süre , anlık sıcaklık bilgisi vs. yazarken bir de sıfırdan yeni bir sayacı nasıl dahil edebilirim koduma? Bu hususta yardımlarınızı bekliyor olacağım, şimdiden teşekkürler.



    #include < OneWire.h >
    #include < LiquidCrystal.h >
    #include < DallasTemperature.h >
    #define ONE_WIRE_BUS 7
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    float tempC = 0;
    float tempF = 0;
    int speakerPin = 13;
    int waterLevelValue=0;
    int waterLevelPin=A0;

    void setup() {
    sensors.begin();
    lcd.begin(16,2);
    lcd.clear();
    analogWrite(3, 0);
    Serial.begin(9600);
    }

    void loop() {
    sensors.requestTemperatures();
    tempC = sensors.getTempCByIndex(0);
    delay(500);
    waterLevelValue=analogRead(waterLevelPin);
    delay(300);
    unsigned long gecen_zaman = millis();
    int saniye = gecen_zaman / 1000;
    int onda_dakika = saniye / 60;
    int dakika = ceil(onda_dakika);
    Serial.print("Sicaklik: ");
    Serial.print(tempC);
    Serial.print(" water Level: ");
    Serial.print(waterLevelValue);
    Serial.print(" ");
    Serial.print("Gecen Zaman: ");
    Serial.print(dakika);
    Serial.println(" dk ");
    if ( tempC < 40 )
    {warmup(); }
    if ( tempC >= 40 && tempC < 45 )
    { distillation_starts(); }
    if (tempC > 45 && tempC <85)<br />{ distillation(); }
    if (waterLevelValue >= 170 )
    { water_level(); }

    }


    void warmup() {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("C: ");
    lcd.print(tempC);
    lcd.print((char)223);
    unsigned long gecen_zaman = millis();
    int saniye = gecen_zaman / 1000;
    int onda_dakika = saniye / 60;
    int dakika = ceil(onda_dakika);
    lcd.setCursor(10,0);
    lcd.print(dakika);
    lcd.print(" dk.");
    lcd.setCursor(2,1);
    lcd.print("Warming Up");
    }


    void distillation_starts() {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("C: ");
    lcd.print(tempC);
    lcd.print((char)223);
    unsigned long gecen_zaman = millis();
    int saniye = gecen_zaman / 1000;
    int onda_dakika = saniye / 60;
    int dakika = ceil(onda_dakika);
    lcd.setCursor(10,0);
    lcd.print(dakika);
    lcd.print(" dk.");
    lcd.setCursor(2,1);
    lcd.print("Dstl. Starts.");
    tone(speakerPin, 250);
    delay(10000);
    noTone(speakerPin);
    }
    void distillation() {
    lcd.clear(),
    lcd.setCursor(0,0);
    lcd.print("C: ");
    lcd.print(tempC);
    lcd.print((char)223);
    unsigned long gecen_zaman = millis();
    int saniye = gecen_zaman / 1000;
    int onda_dakika = saniye / 60;
    int dakika = ceil(onda_dakika);
    lcd.setCursor(10,0);
    lcd.print(dakika);
    lcd.print(" dk.");
    lcd.setCursor(2,1);
    lcd.print("Distillation. ");
    }

    void water_level() {
    lcd.clear(),
    lcd.setCursor(0,0);
    lcd.print("C: ");
    lcd.print(tempC);
    lcd.print((char)223);
    unsigned long gecen_zaman = millis();
    int saniye = gecen_zaman / 1000;
    int onda_dakika = saniye / 60;
    int dakika = ceil(onda_dakika);
    lcd.setCursor(10,0);
    lcd.print(dakika);
    lcd.print(" dk.");
    lcd.setCursor(2,1);
    lcd.print("Water Level ");
    tone(speakerPin, 290);
    delay(1000);
    noTone(speakerPin);
    }

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.