Bitirme projesi

Konuya 3-4 günde bir dönüş yaptığın için ben odaklanamamışım. Kumbara projesi diye cevap yazıyorum hep. Yukarıda attığım resimde de o yüzden servo, ldr filan var.
Neyse son attığın kodlarda dikkatimi çekti. Senin LCD ekranın 16x2. Yani 2 satır 16 sıra.
Bu iki satırı kodlarken ilk satır için "0", ikinci satır için "1" kullanman gerekiyor. Senin en son attığın kodlarda ikinci satır için "2" değerini kullandığın görülüyor. O 2'lerin hepsini "1" yap öyle dene.

Birde iflerin içinde LCD.clear(); kullanman gerekiyor. Kullanmazsaz her aldığı değeri bir önckinin üstüne yazar ve sende ekranda anlamsız şekiller görürsün.
Anladım hocam verdiğiniz bilgilerle hemen güncelleme yapıyorum. Biraz geç cevap veriyorum çok fazla ilgilenemiyorum bi yandan çalışıyorum bi yandan projenin iskelet kısmıyla uğraşıyorum kusura bakmayın
 
Hocam şimdi benim bir sorum var. Kodu tekrar bi düzenledim de şuan görüntüde karışma falan yok sadece sıcaklık benim girdiğim sıcaklığa geldiğinde ben tekrar sıcaklık değerini değiştiremiyorum o da sanırım sistemi başa döndürmek gibi bir komutla hallolur. Sorum şu, ben lcd sheild ı 8,9,4,5,6,7 pinlerine step motoru 0,1,2,3 pinlerine bağlıyorum. Gördüğüm her yerde step motor 8,9,10,11 e bağlanmış. PWM sinyalinden dolayı 0,1,2,3 pinlerinde çalışmama gibi bir durumu olabilir mi? Çünkü hala aynı şekilde sıcaklık istediğim değere geldiğinde step motorun içinde bi hareket oluyor ama dönmüyor. Step motoru harici şekilde yalnız bi kodla çalıştırdığımda 0,1,2,3 pinlerini denedim sıkıntısız çalışıyor
 
Hocam şükürler olsun motoru çalıştırdım. Pinlerle alakalıymış pinleri değiştirdim çalıştı. Biraz güçsüz çalışıyordu 12 v beslemeyle sorunsuz çalıştı sayenizde çok teşekkür ederim. Şimdi tek sorunum sistemi başa döndürmek. Çünkü sıcaklık dengelenince sürekli motor sağa dönüyor. Benim istediğim bir kez daha dönünce sıcaklık minimum sıcaklığın altına düşene kadar orda kalması düşünce sola dönmesi. Araştırma yapıp bunları da halletmeye çalışacağım. Yine de yardımcı olursanız çok minnettar olurum
 
Hocam şükürler olsun motoru çalıştırdım. Pinlerle alakalıymış pinleri değiştirdim çalıştı. Biraz güçsüz çalışıyordu 12 v beslemeyle sorunsuz çalıştı sayenizde çok teşekkür ederim. Şimdi tek sorunum sistemi başa döndürmek. Çünkü sıcaklık dengelenince sürekli motor sağa dönüyor. Benim istediğim bir kez daha dönünce sıcaklık minimum sıcaklığın altına düşene kadar orda kalması düşünce sola dönmesi. Araştırma yapıp bunları da halletmeye çalışacağım. Yine de yardımcı olursanız çok minnettar olurum
Son düzenlediğin kodlarını bir daha at bakalım.
 
Son düzenlediğin kodlarını bir daha at bakalım.

Kod:
#include <LiquidCrystal.h>
#include <DHT.h>
#include <X113647Stepper.h>


// set up the LCD's number of columns and rows:
const int numRows = 2;
const int numCols = 16;

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int i=25;
int e=40;
int tus = 0;
int adim = 5000; //90 Derecelik adım sayısı
X113647Stepper stepmotor(adim, 2, 3, 10, 11);
// set up the DHT11 temperature sensor
#define DHTTYPE DHT11 // specify the type of DHT sensor
#define DHTPIN A1 // specify the pin the DHT sensor is connected to
DHT dht(DHTPIN, DHTTYPE); // create a DHT instance


void setup() {
 lcd.begin(16, 2);
 lcd.setCursor(0,0);
 lcd.print(" Sicaklik Olcer");
 delay(1000);
 lcd.clear();

 Serial.begin(9600);
 delay(100);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Sicaklik=");
lcd.setCursor(0, 2);
lcd.print("Nem=");

  // initialize the DHT11 sensor
  dht.begin();

   stepmotor.setSpeed(500);
}

void loop() {
 
  // read the input from the LCD button shield
  Serial.println(analogRead(A0));
  tus = analogRead(A0);

  // read the temperature and humidity from the DHT11 sensor
  int temp = dht.readTemperature(); // read the temperature in Celsius
  int humi = dht.readHumidity(); // read the humidity in percent
  lcd.setCursor(9, 0);
lcd.print(temp);
lcd.setCursor(4, 2);
lcd.print(humi);
 
  if (tus >= 95  &&  tus <= 115)
  {
    tus = 99;
    i++;
    lcd.setCursor(12, 0);
    lcd.print(i);
    lcd.setCursor(12, 2);
    lcd.print(e);
    delay(400);

  }
    else if (tus >= 250 && tus <=  270) {
    tus = 260;
    i--;
    lcd.setCursor(12, 0);
    lcd.print(i);
    lcd.setCursor(12, 2);
    lcd.print(e);
    delay(400);
 
  }
  else if (tus >= 0 && tus <=  15){
    e= e+5;
    lcd.setCursor(12, 2);
    lcd.print(e);
    lcd.setCursor(12, 0);
  lcd.print(i);
    delay(400);

  }
  else if (tus >= 400 && tus <=  420){
    e= e-5;
  lcd.setCursor(12, 2);
  lcd.print(e);
  lcd.setCursor(12, 0);
  lcd.print(i);
    delay(400);

  }
    
  

  // compare the temperature from the sensor with the input from the button shield
  if (temp >= i) {
    stepmotor.step(adim);
    delay(1000);
  return 0;
  } else {
    // do something else if the temperature is not higher
  }

}
 
Hocam şükürler olsun motoru çalıştırdım. Pinlerle alakalıymış pinleri değiştirdim çalıştı. Biraz güçsüz çalışıyordu 12 v beslemeyle sorunsuz çalıştı sayenizde çok teşekkür ederim. Şimdi tek sorunum sistemi başa döndürmek. Çünkü sıcaklık dengelenince sürekli motor sağa dönüyor. Benim istediğim bir kez daha dönünce sıcaklık minimum sıcaklığın altına düşene kadar orda kalması düşünce sola dönmesi. Araştırma yapıp bunları da halletmeye çalışacağım. Yine de yardımcı olursanız çok minnettar olurum
Kodlarına baktım. Kodlama konusunda biraz daha kendini geliştirmen gerektiğine karar verdim.
Sıcaklığı sadece okuyup ekrana yazdırmışsın. Başka bir yerde hiç işleme tabi tutmamışsın.
Sistemin yapısını da anlayamadım. "tuş" değişkeni nedir? Buton ise bu butona neden basıyorsun? İf blokları içerisinde sadece bu tuş değişkeni değerine göre ekrana yazı yazdırmışsın. Ne sıcaklığa göre step motora işlem yaptırma var ne de başka bir şey.
i değişkeni nedir? e değişkeni nedir? Bunlara anlamlı bir isim vermezsen yada yanına açıklama yazmazsan bırak beni, 1 ay sonra sen bile hatırlamazsın ne olduklarını. step motor sıcaklığa göre dönecekse if(temp >= 20 && temp <= 40) gibi bir ifade kullanman gerek. Yada step motorun sıcaklık dengelendiğinde durmasını istiyorsan if(temp == dengederecesi) gibi bir ifade kullanman gerek.
Ayrıca daha önce de söylemiştim. lcd.setCursor(12, 2); kodunda "12, 2" olamaz. "0" 1.satır dır, "1" 2.satırdır. senin orada lcd.setCursor(12, 1); yazman gerek ki ekranın ikinci satırında bir şeyler görebilesin.

Konudaki ilk mesajını okudum. Biraz daha anlaşılır oldu benim için.

Şöyle bir yol izlemelisin;

C++:
if (tus >= 95  &&  tus <= 115) //eğer tuşlanan değer 95 ile 115 arasında ise...
  {
    tus = 99; //tuş değişkenine 99 ata...
// Tam burdan sonra sıcaklık kontrolüne girmen gerekiyor ki step motora ona göre hareket veresin.
      if(temp >= tus OR humi >= tus){ //Sıcaklık yada nem ayarlanan eşik değerin üzerine çıktıysa...
           stepmotor.step(adim); //Step motoru döndür.
           lcd.setCursor(12, 0); // 1.Satırın 12.Sırasına...
           lcd.print(temp); // ...Temp değişkenini yazdır.
           lcd.setCursor(12, 1); // 2.Satırın 12.Sırasına...
           lcd.print(humi); // humi değişkenini yazdır. 
           delay(400); // 400ms bekle
       }
  }
Ayrıca alt değeri tuşla mı gireceksin? yoksa sabit mi olacak?
 
Son düzenleme:
Kodlarına baktım. Kodlama konusunda biraz daha kendini geliştirmen gerektiğine karar verdim.
Sıcaklığı sadece okuyup ekrana yazdırmışsın. Başka bir yerde hiç işleme tabi tutmamışsın.
Sistemin yapısını da anlayamadım. "tuş" değişkeni nedir? Buton ise bu butona neden basıyorsun? İf blokları içerisinde sadece bu tuş değişkeni değerine göre ekrana yazı yazdırmışsın. Ne sıcaklığa göre step motora işlem yaptırma var ne de başka bir şey.
i değişkeni nedir? e değişkeni nedir? Bunlara anlamlı bir isim vermezsen yada yanına açıklama yazmazsan bırak beni, 1 ay sonra sen bile hatırlamazsın ne olduklarını. step motor sıcaklığa göre dönecekse if(temp >= 20 && temp <= 40) gibi bir ifade kullanman gerek. Yada step motorun sıcaklık dengelendiğinde durmasını istiyorsan if(temp == dengederecesi) gibi bir ifade kullanman gerek.
Ayrıca daha önce de söylemiştim. lcd.setCursor(12, 2); kodunda "12, 2" olamaz. "0" 1.satır dır, "1" 2.satırdır. senin orada lcd.setCursor(12, 1); yazman gerek ki ekranın ikinci satırında bir şeyler görebilesin.

Konudaki ilk mesajını okudum. Biraz daha anlaşılır oldu benim için.

Şöyle bir yol izlemelisin;

C++:
if (tus >= 95  &&  tus <= 115) //eğer tuşlanan değer 95 ile 115 arasında ise...
  {
    tus = 99; //tuş değişkenine 99 ata...
// Tam burdan sonra sıcaklık kontrolüne girmen gerekiyor ki step motora ona göre hareket veresin.
      if(temp >= tus OR humi >= tus){ //Sıcaklık yada nem ayarlanan eşik değerin üzerine çıktıysa...
           stepmotor.step(adim); //Step motoru döndür.
           lcd.setCursor(12, 0); // 1.Satırın 12.Sırasına...
           lcd.print(temp); // ...Temp değişkenini yazdır.
           lcd.setCursor(12, 1); // 2.Satırın 12.Sırasına...
           lcd.print(humi); // humi değişkenini yazdır.
           delay(400); // 400ms bekle
       }
  }
Ayrıca alt değeri tuşla mı gireceksin? yoksa sabit mi olacak?
Hocam ben makine mühendisliği öğrencisiyim ve Arduino üzerine ders almadım. Kendi çabamla ve buralardan aldığım destekle yapmaya çalışıyorum. Yeterli kodlama bilgisine sahip olmadığım için burada konu açtım ve yardım bekliyorum. Aynı şekilde yeterli bilgim olmadığı için deneme yanılma yoluyla yapıyorum bu yüzden i, e gibi harfleri kullandım.
Sistemi kodlar olmadan LCD sheild üzerinden değer gireceğimiz için i, e ve ölçülen sıcaklığı direkt olarak yazdırıp daha sonrasında motoru çalıştırmak için işleme tabi tutmadan ekrana yazdırmayı düşündüm. Dediğiniz 12, 1 ve 12, 2 mesajını dikkate alıp dediğiniz şekilde yazdım fakat ekranda hiç bir şey çıkmadı. Tekrar eskiye döndüm sizinle paylaştığım şekilde çalıştırdığım zaman ekranda değerleri görebiliyorum onda sorun yok. Tus isimli değişkene 99 değeri atandığında ekrandaki sıcaklık eşik değerim 1 artıyor veya tus degeri 260 olduğunda sıcaklık eşik değeri 1 azalıyor. Son halde sensörden okunan sıcaklık değeri sıcaklık eşik değerinden ( i değişkeni ) yüksek ise motor çalışıyor. Ben bu şekilde yazmaya çalıştım elimden geldiğince ve bilgim yettiğince. Tabiki hatalarım ve eksiklerim var belki de yaptığım işlem komple yanlış. Amaçladığım işlem şu, LCD üzerinden görerek sıcaklığı değiştireceğim mesela 24 yaptım. Ölçülen sıcaklık 24 e eşit olduğunda veya geçtiğinde motor sağa dönecek ve sağ konumda kalacak. Sıcaklık 24 ün altına tekrar düşene kadar. Altına düştüğünde sol konuma dönüp orda kalacak. Bunu nasıl yapacağımı şuan bilmiyorum
 
Hocam ben makine mühendisliği öğrencisiyim ve Arduino üzerine ders almadım. Kendi çabamla ve buralardan aldığım destekle yapmaya çalışıyorum. Yeterli kodlama bilgisine sahip olmadığım için burada konu açtım ve yardım bekliyorum. Aynı şekilde yeterli bilgim olmadığı için deneme yanılma yoluyla yapıyorum bu yüzden i, e gibi harfleri kullandım.
Sistemi kodlar olmadan LCD sheild üzerinden değer gireceğimiz için i, e ve ölçülen sıcaklığı direkt olarak yazdırıp daha sonrasında motoru çalıştırmak için işleme tabi tutmadan ekrana yazdırmayı düşündüm. Dediğiniz 12, 1 ve 12, 2 mesajını dikkate alıp dediğiniz şekilde yazdım fakat ekranda hiç bir şey çıkmadı. Tekrar eskiye döndüm sizinle paylaştığım şekilde çalıştırdığım zaman ekranda değerleri görebiliyorum onda sorun yok. Tus isimli değişkene 99 değeri atandığında ekrandaki sıcaklık eşik değerim 1 artıyor veya tus degeri 260 olduğunda sıcaklık eşik değeri 1 azalıyor. Son halde sensörden okunan sıcaklık değeri sıcaklık eşik değerinden ( i değişkeni ) yüksek ise motor çalışıyor. Ben bu şekilde yazmaya çalıştım elimden geldiğince ve bilgim yettiğince. Tabiki hatalarım ve eksiklerim var belki de yaptığım işlem komple yanlış. Amaçladığım işlem şu, LCD üzerinden görerek sıcaklığı değiştireceğim mesela 24 yaptım. Ölçülen sıcaklık 24 e eşit olduğunda veya geçtiğinde motor sağa dönecek ve sağ konumda kalacak. Sıcaklık 24 ün altına tekrar düşene kadar. Altına düştüğünde sol konuma dönüp orda kalacak. Bunu nasıl yapacağımı şuan bilmiyorum
Ne kadar vaktin kaldı?
Bir tane LCD Shield alıp bende deneme yapaağım. Bu 12,2 meselesi çok kafama takıldı. Daha önce böyle çalıştığını hiç görmemiştim.
Elimde step motor var mı bilmiyorum. Bakacağım. Daha önce step motorla hiç işim olmamıştı. Senin vesilenle onuda öğrenmiş olurum.
 
Ne kadar vaktin kaldı?
Bir tane LCD Shield alıp bende deneme yapaağım. Bu 12,2 meselesi çok kafama takıldı. Daha önce böyle çalıştığını hiç görmemiştim.
Elimde step motor var mı bilmiyorum. Bakacağım. Daha önce step motorla hiç işim olmamıştı. Senin vesilenle onuda öğrenmiş olurum.
Hocam vakit sıkıntım yok aslında dönem sonuna kadar vaktim var da ben iki hafta içinde bitirmeye çalışıyorum hazır memleketteyken yapayım diye. Ben birazdan sistemin fotoğrafını çekip yüklerim istersen sisteme LCD sheild çalışıyor. Dediğiniz doğrudur kesinlikle aksini iddia etmiyorum ama bu şekilde çalıştı nedenini anlamadım kodda başka sıkıntı vardır belki. Bir bilgi daha edindim şimdi yazıp deneyeceğim ona göre tekrar yazacağım hocam
 
Hocam vakit sıkıntım yok aslında dönem sonuna kadar vaktim var da ben iki hafta içinde bitirmeye çalışıyorum hazır memleketteyken yapayım diye. Ben birazdan sistemin fotoğrafını çekip yüklerim istersen sisteme LCD sheild çalışıyor. Dediğiniz doğrudur kesinlikle aksini iddia etmiyorum ama bu şekilde çalıştı nedenini anlamadım kodda başka sıkıntı vardır belki. Bir bilgi daha edindim şimdi yazıp deneyeceğim ona göre tekrar yazacağım hocam
Tamam ben yarın çok yağmur yağmazsa çıkıp alırım parçaları
 
Hocam ekranın görüntüsü bu şekilde. ve şükürler olsun kod kısmı tamamen bitti. Verdiğiniz bilgiler, yardımınız ve en önemlisi de çabanız için çok çok teşekkür ederim hocam. Allah razı olsun isterseniz kodu dmden sizinle paylaşabilirim
WhatsApp Image 2023-02-05 at 20.25.58.jpeg
 
Bir yere kadar getirip bırakınca birşey öğrenemezssin.

LCD için custom karakter oluştur mesela ° işareti nem için su damlası işareti gibi.
 
Bir yere kadar getirip bırakınca birşey öğrenemezssin.

LCD için custom karakter oluştur mesela ° işareti nem için su damlası işareti gibi.
Benim çabam motoru çalıştırmak idi. Onu başardık şükür. Bundan sonra ekstraları ekleyeceğim. Bu kez de motorun gücü yetmedi
 
Benim çabam motoru çalıştırmak idi. Onu başardık şükür. Bundan sonra ekstraları ekleyeceğim. Bu kez de motorun gücü yetmedi
Kodları bana atar mısın? Parçaları aldım deneme yapacağım.
 
Ekran satırı için bir deneme yaptım.
Aşağıdaki resimde görüleceği üzere ikinci satıra "5" değerini girdim. Çeşitli rakamlar denememe rağmen yazıyı her seferinde ikinci satıra yazdı.
Buda demek oluyor ki kütüphane de bir güncelleme yapılarak ikinci satır için girilen rakam "1" den büyükse "1'e" eşitlenmiş.
if(kursor >1){kursor = 1}

ikinci_satir.png


20230207_203202.jpg


Bunun dışında Step motora el değmeyecek kadar ısınıyor.
Üzerinde 5V yazıyor. yaklaşık 200mA çekiyor. Ama bu şekilde mili elle sıkıştırınca duryor.
Voltajı kademeli yükselterek ULN2003 devresi üzerindeki 5-12v yazısınada güvenerek 9v'a kadar çıkardım.
Ancak 9v da mil durdurulamıyor ve 500mA çekiyor. Isınmasa bu motor bir çok proje için kullanılabilir.
 
Ekran satırı için bir deneme yaptım.
Aşağıdaki resimde görüleceği üzere ikinci satıra "5" değerini girdim. Çeşitli rakamlar denememe rağmen yazıyı her seferinde ikinci satıra yazdı.
Buda demek oluyor ki kütüphane de bir güncelleme yapılarak ikinci satır için girilen rakam "1" den büyükse "1'e" eşitlenmiş.
if(kursor >1){kursor = 1}

22096 eklentisine bak

22097 eklentisine bak

Bunun dışında Step motora el değmeyecek kadar ısınıyor.
Üzerinde 5V yazıyor. yaklaşık 200mA çekiyor. Ama bu şekilde mili elle sıkıştırınca duryor.
Voltajı kademeli yükselterek ULN2003 devresi üzerindeki 5-12v yazısınada güvenerek 9v'a kadar çıkardım.
Ancak 9v da mil durdurulamıyor ve 500mA çekiyor. Isınmasa bu motor bir çok proje için kullanılabilir.
Hocam şuan motoru 12 v ile harici besliyorum. Beslemeden de dönüyor ama benim sistemde yeterli kayma olmadığı için camı itemiyor muhtemelen. Onu da çözmeye çalışıyorum şuan
 
Hocam şuan motoru 12 v ile harici besliyorum. Beslemeden de dönüyor ama benim sistemde yeterli kayma olmadığı için camı itemiyor muhtemelen. Onu da çözmeye çalışıyorum şuan
Camı itmek deyince 3d yazıcı canlandı kafamda. Öyle bir şey yapıyorsan Nema 17 step motor kullanman lazım. Bir de 12v beslemenin max verebildiği akım nedir?
 
Step motora adim attirmak istenirken voltaji yuksek verin. Adim attiktan sonra voltaji dusurun.

Motorun adim atip atmadigini kolayca bilemezsiniz fakat en azindan adimlama palsi verirken sargilara mesela 9v verip 1ms sonra voltaji 3..4v seviyelerine cekip sukunette dusuk voltajla beslemeye devam edin.
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,952
Mesajlar
118,756
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top