• 19-05-2020, 13:30:41
    #1
    Merhabalar arduino ve sıcaklık sensörü aracılığıyla sıcaklığı ölçüp dereceyi displayde yazdırıyorum. Örneğin displayde görülen değer 25 dereceyi geçince arduinonun 4 numaralı çıkışındaki motor çalışsın, 25 derecenin altına düşünce dursun istiyorum. Display ekrana yazdırma vs kısmını ayarladım. Displayde yazan değeri nasıl okutup eğer>25, 4. porta çıkış ver kısmını yazabilirim? Yardımcı olur musunuz ?
  • 19-05-2020, 13:37:00
    #2
    Hocam displayden değeri okumanıza gerek yok,
    örneğin sıcaklık değerini int derece değişkeninde tutuyorsunuz diyelim

    if (derece > 25) {
    digitalWrite (5, HIGH);
    }
    else {
    digitalWrite (5, LOW);
    }

    bunu yazmanız yeterli. Tabi kodları atarsanız daha sağlıklı yardımcı olurum
  • 19-05-2020, 13:38:08
    #3
    kodu paylaşır mısınız?
  • 19-05-2020, 13:40:41
    #4
    truvacreative adlı üyeden alıntı: mesajı görüntüle
    Hocam displayden değeri okumanıza gerek yok,
    örneğin sıcaklık değerini int derece değişkeninde tutuyorsunuz diyelim

    if (derece > 25) {
    digitalWrite (5, HIGH);
    }
    else {
    digitalWrite (5, LOW);
    }

    bunu yazmanız yeterli. Tabi kodları atarsanız daha sağlıklı yardımcı olurum
    ThirtySeven adlı üyeden alıntı: mesajı görüntüle
    kodu paylaşır mısınız?
    // include the library code:
    #include <LiquidCrystal.h>
    #include "DHT.h"
    
    // set the DHT Pin
    #define DHTPIN 8
    
    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    #define DHTTYPE DHT11
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup() {
    // set up the LCD's number of columns and rows:
    lcd.begin(16, 2);
    dht.begin();
    
    // Print a message to the LCD.
    lcd.print("Sıcaklık: Nem:");
    }
    
    void loop() {
    delay(500);
    // set the cursor to column 0, line 1
    // (note: line 1 is the second row, since counting begins with 0):
    lcd.setCursor(0, 1);
    // read humidity
    float h = dht.readHumidity();
    //read temperature in Fahrenheit
    float f = dht.readTemperature(true);
    
    if (isnan(h) || isnan(f)) {
    lcd.print("ERROR");
    return;
    }
    
    lcd.print(f);
    lcd.setCursor(7,1);
    lcd.print(h);
    }
    Kodlar bu şekilde genel bir düzenleme yapacağım fahrenheit değilde derece olarak çıkış alacağım.
  • 19-05-2020, 13:50:48
    #5
    motoru 5. pine bağlayamazsınız hocam, 5'de display bağlı. Motorun sağa dönüş pinini 6. pine, sola dönüş pinini 7. pine bağlanmş varsayarak
    buyrun;

    // include the library code:
    #include <LiquidCrystal.h>
    #include "DHT.h"
    
    // set the DHT Pin
    #define DHTPIN 8
    
    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    #define DHTTYPE DHT11
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup() {
    // set up the LCD's number of columns and rows:
    lcd.begin(16, 2);
    dht.begin();
    lcd.print("Sıcaklık: Nem:");
    
    
    pinMode (6, OUTPUT); //6. pinde motorun sağa dönüş pini
    pinMode (7, OUTPUT); //7. pinde motorun sola dönüş pini
    }
    
    void loop() {
    delay(500);
    lcd.setCursor(0, 1);
    float h = dht.readHumidity();
    float f = dht.readTemperature(true);
    
    if (isnan(h) || isnan(f)) {
    lcd.print("ERROR");
    return;
    }
    
    lcd.print(f);
    lcd.setCursor(7,1);
    lcd.print(h);
    
    if (f > 25) {
    digitalWrite(6, HIGH); //eğer sıcaklık 25 f'in üstündeyse motor sağa doğru döner
    digitalWrite(7, LOW); // motorun sola dönüşü kapalıdır.
    }
    else {
    digitalWrite(6, LOW);
    digitalWrite(7, LOW);
    }
    
    }
  • 19-05-2020, 13:54:13
    #6
    dereceyi neden fahrenayt olarak okutuyorsunuz. doğrudan santigrat olark okutabilirsiniz
    .
    sizin kodunuza göre söyleyeyim. f değeriniz sıcaklık
    önce f yi santigrat a çevirip sonra
    if(f>=25)
    {
    motor kodları
    }
    şeklinde çözebilirsiniz.
    ŞURAYI inceleyebilirsiniz.
  • 19-05-2020, 13:54:51
    #7
    yukarıdaki arkadaşın dediği gibi sıcaklık değerini okuduğunuz değişkeni 25 derece için kontrol etmeniz gerek.
  • 19-05-2020, 14:29:37
    #8
    BaRBaRYaN adlı üyeden alıntı: mesajı görüntüle
    dereceyi neden fahrenayt olarak okutuyorsunuz. doğrudan santigrat olark okutabilirsiniz
    .
    sizin kodunuza göre söyleyeyim. f değeriniz sıcaklık
    önce f yi santigrat a çevirip sonra
    if(f>=25)
    {
    motor kodları
    }
    şeklinde çözebilirsiniz.
    ŞURAYI inceleyebilirsiniz.
    readTemperature(true) olunca fahrenheit okuyordu readTemperature() olarak güncelledim. Bu durumda derece göstermesi gerekiyor. Malzeme siparişleri muhtemelen yarın gelmiş olacak ozaman deneyeceğim



    // Kütüphane kodları
    #include <LiquidCrystal.h>
    #include "DHT.h"
    
    // Sıcaklı ve nem sensörü dht11'in pinini belirler.
    #define DHTPIN 8
    
    // Displayin kütüphaneden veri okuması için gerekli pin başlatma numaraları
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    #define DHTTYPE DHT11
    DHT dht(DHTPIN, DHTTYPE);
    
    void setup() {
    // Displayin sütun ve satır sayısını belirler.
    lcd.begin(16, 2);
    dht.begin();
    // Vantilatör takılan motorun çıkış pini
    pinMode(7,OUTPUT);
    // Ekrandaki göstergeler
    lcd.print("Sıcaklık: Nem:");
    }
    
    void loop() {
    
    delay(500);
    // Gösterge 1.satırda, Sayım değerleri ise 2.satırda göster
    lcd.setCursor(0, 1);
    // Nem Ölçümü
    float n=dht.readHumidity();
    // Derece Ölçümü
    float s=dht.readTemperature();
    // Derece 25'ten fazlaysa motoru çalıştır
    if (s>25) {
    digitalWrite (7, HIGH);
    }
    else {
    digitalWrite (7, LOW);
    }
    // Eğer NaN değer alınırsa ekranda hata yazacak.
    if (isnan(n) || isnan(s)) {
    lcd.print("HATA");
    return;
    }
    
    lcd.print(s);
    lcd.setCursor(7,1);
    lcd.print(n);
    }
    Son hali bu şekilde
  • 19-05-2020, 14:46:44
    #9
    hocam malzemesiz de bazı şeyleri deneyebilirsiniz.
    bunun için size 2 farklı site önereyim
    ...
    1 TINKERCAD
    3 boyutlu çizim ve arduino ile ilgili devreleri çizip deneyebilirsiniz. kodları bilgisayarınıza indirip arduino ya yükleyebilirsiniz. veya malzeme olmadan da devlerinizi deneyebilirsiniz. (tüm komponentleri desteklemiyor ama temel bir çok komponent var)

    2. CIRCUITO.IO
    Sürükle bırak mantığı ile mikrodenetleyiciyi seçip elemanları üzerine bıraktığınızda bağlantılarını bile kendi yaparak size deneyebileceğiniz temel kodları ve kütüphaneleri de ekleyerek indirilebilir bir paket halinda sunuyor.