SG90 ve LM 35 ile ilgili yardim
  • Arkadaşlar merhaba;
    Elimde lm 35 ile sg90 motor var bununla hava giris klepesini acip kapatmam gerekiyor bunu nasil yapabilirim istedigimin kisaca ozeti şu sekilde
    Sicaklik 0-40 derece arasindayken servo 180 derecede pozisyonunda olacak, 40-60 derece arasi dogru oranrili bir sekilde servo 0 derece pozisyonuna donecek.ve bu soylediklerim sonsuz dongu olacak
    Simdiden tesekkur ediyorum
    Not: Bağlanti ve lm 35 i okumada sorun yok motor ve termistoru calistirdim sadece orantiyi nasil yapacagimi bilmiyorum
  • burada yani sitede/forumda anlaşılsın diye yazıyorum elimizde hazır kod yok bu nedenle kullanıcının projesınde bazı ılerlemelerı kendılıgınden kodların bır kısmını yazmasını beklıyoruz. mesela bu projede lm35 okuma denemesi yaptınız mı sg90 servo motor denemesi yaptınız mı bunları belirtin ve bu ıkı kodu bırleştirmeye çalışın ve bu kendı yazdıgınız kodun ustune biz ne yapmanız gerektıgını belirtebiliyoruz o zaman. diğer turlu buraya kodu yapırştırdığımızda satır satır arkadaşa ızah etmemız gerekıyor herşeyı baştan ve gereksız bır zaman kaybı gıbı oluyor bızım ıcın ve kullanıcı için. yanı once kullanıcı araştıracak kodunu yazmaya çalışacak bizde takıldıgı yerde yol gostermeye çalışacağız. durum budur.
  • Okoman hocam cevap icin tesekkur ediyorum vardiyali calistigimdan suan bilgisayar karsisinda degilim gece saat 01:00 gibi yazdigim kodlari paylasacagim servoyu potansiyometre ile saga sola donduruyorum ve lm35 ten gelen sicakligi okuyup 1602 lcd ye yazdiriyorum sadece dedigim gibi 40-60 derece isiyla serconun 180-0 derece orantisini nasil kuracagimi çözemedim pottan gelen sinyal yerine lm 35 ten geleni kullanacagim ama nasil orada takildim. Gece kodlari yazdigimda tekrar yardimci olursaniz cok sevinirim. Tekrar tesekkur ederim
    Kolay gelsin...
  • #include < LiquidCrystal.h>

    int lm35Pin = A0;
    #include < Servo.h>

    Servo myservo; // create servo object to control a servo


    int val; // variable to read the value from the analog pin

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    int cikis_1 = 8; // 1.çıkış
    int dimmer = 9; // 2.çıkış

    void setup()
    {
    myservo.attach(6); // servo 6. pine baglandi
    Serial.begin(9600);
    pinMode( cikis_1, OUTPUT);
    pinMode( dimmer, OUTPUT);

    Serial.println (A0);
    delay (1000);

    lcd.begin(16, 2);
    analogReference(INTERNAL);
    lcd.print("BUHAR SICAKLIK:");

    }
    void loop()
    {

    int sicaklikVolt = analogRead(lm35Pin);
    float sicaklikC = sicaklikC = sicaklikVolt / 9.31;

    Serial.println (sicaklikC);
    delay (100);


    lcd.setCursor(0, 1);
    lcd.print(sicaklikC);
    lcd.setCursor(5,1);
    lcd.print("\337");
    delay(100);


    if (sicaklikC < 28 ) digitalWrite ( dimmer , HIGH ); // yeşil ledi yak
    else if( (sicaklikC >=28) && ( sicaklikC < 29) ) digitalWrite ( dimmer , LOW );


    {

    };
    val = analogRead(A0);
    val = map(val, 0, 1023, 180, 0);
    myservo.write(val);
    delay(1000);
    Serial.println (val);
    delay (100);
    }
  • sıcaklık 40-60 derece arasında servo 0-180 derece dönecek ama sıcaklık 40 derece olasıya kadar hiçbirşey yapmayacak myservo.write değeri nasıl olmalı nasıl bir değişken tanımlamalıyım
  • if( (sicaklikC >=40) && ( sicaklikC <= 60) ) {val = map(val, 40, 60, 180, 0); myservo.write(val); }
  • #include < LiquidCrystal.h>

    int lm35Pin = A0;
    #include < Servo.h>

    Servo myservo; // create servo object to control a servo


    int val; // variable to read the value from the analog pin

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
    int cikis_1 = 8; // 1.çıkış
    int dimmer = 9; // 2.çıkış

    void setup()
    {
    myservo.attach(6); // servo 6. pine baglandi
    Serial.begin(9600); // saniyede 9600 defa 0. analog girişi oku
    pinMode( cikis_1, OUTPUT); // 8 nolu pin çıkış olarak belirle
    pinMode( dimmer, OUTPUT); // 9 nolu pin çıkış olarak belirle

    Serial.println (A0);
    delay (1000);

    lcd.begin(16, 2);
    analogReference(INTERNAL);
    lcd.print("BUHAR SICAKLIK:");

    }
    void loop()
    {

    int sicaklikVolt = analogRead(lm35Pin);
    float sicaklikC = sicaklikC = sicaklikVolt / 9.31;

    Serial.println (sicaklikC);
    delay (100);


    lcd.setCursor(0, 1);
    lcd.print(sicaklikC);
    lcd.setCursor(5,1);
    lcd.print("\337");
    delay(1000);


    if (sicaklikC < 28 ) digitalWrite ( dimmer , HIGH ); // yeşil ledi yak
    else if( (sicaklikC >=28) && ( sicaklikC < 29) ) digitalWrite ( dimmer , LOW );


    {

    };
    val = analogRead(A0);
    if( (sicaklikC >=40) && ( sicaklikC <= 60) )<br /> {val = map(val, 40, 60, 0, 180);

    myservo.write(val); }
    delay(15);

    }


    hocam kodlar bu şekilde düzenlendi ama olmadı motor başlangıçta motor 90 derecede oluyor. daha sonra 40 C sıcaklığa geldiğinde 180 derece konumuna geliyor ve bir daha haraket etmiyor
  • komutları ogrenmeye çalışın mesela map komutunu bir çalışın servo ıle ılgılı parametrelerini ters çevirin
    setup kısmında servoyu 40 getırın

    şu nedir
    val = analogRead(A0);
    kalmış orada tek başına kodunuza hakim olun biraz

Howdy, Stranger!

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

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