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) ) {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