Arduino Otomatik Tente de motor kodları

Kodla Büyü

kais36

Site Gezgini
Mesajlar
66
Arkadaşlar Arduino da yağmur sensörü ile ULN2003 motor sürücüsüyle step motor 28BYJ-48 çalıştırmak istiyorum. Tente sistemi için. Çalışma şekli şöyle olması lazaım. Başlangıçta motor duracak. Yağmur sensörü ıslanınca motor diyelim ki 2000 adım atacak sonra duracak sensör kuruyunca 2000 adım geri saracak ve duracak. Fakat Mblockla ya sürekli ileri sarıyor ya da geri sarıyor. Kodlarını bir türlü oturtamadım. İkinci bir motora gerek var mı acaba? Olana kadar bekle blokunu kullanıyorum bu kez de bir kez ileri dönüp duruyor. Kodların resmi ekte.
 

Ekli dosyalar

  • yağmur.png
    yağmur.png
    31.3 KB · Görüntüleme: 103
Algoritmanızda sorun var. Yazdığınız kodda sensör yağmur olduğu müddetçe sürekli motoru ileriye doğru çalıştıracaktır. Halbuki yağmur olduğunda bir kez ileri, yağmur durduğunda bir geri sarmasını sağlamalısınız. Bunun için bir değişken kullanmalısınız.
Algoritmanız şöyle olmalı diye düşünüyorum;
1. Başlat
2. yagmurlu = false
3. Sensörü oku yagmur
4. Eğer yagmur > 400 ve yagmurlu = false ise
motor ileri hareket etsin
yagmurlu = true
eğer sonu
5. eğer yagmur <= 400 ve yagmurlu = true ise
motor geri hareket etsin
yagmurlu = false
eğer sonu
6. git 3
Tek eğer yerine iki eğer ve mevcut durumu ifade eden bir değişkene ihtiyacınız var.
 
Tentenin durumunu değikene al. Tente açıksa kapatacak kapalıysa açacak. Yağmur ve değişkene göre tenteyi aç kapat hocam.
 
Algoritmanızda sorun var. Yazdığınız kodda sensör yağmur olduğu müddetçe sürekli motoru ileriye doğru çalıştıracaktır. Halbuki yağmur olduğunda bir kez ileri, yağmur durduğunda bir geri sarmasını sağlamalısınız. Bunun için bir değişken kullanmalısınız.
Algoritmanız şöyle olmalı diye düşünüyorum;
1. Başlat
2. yagmurlu = false
3. Sensörü oku yagmur
4. Eğer yagmur > 400 ve yagmurlu = false ise
motor ileri hareket etsin
yagmurlu = true
eğer sonu
5. eğer yagmur <= 400 ve yagmurlu = true ise
motor geri hareket etsin
yagmurlu = false
eğer sonu
6. git 3
Tek eğer yerine iki eğer ve mevcut durumu ifade eden bir değişkene ihtiyacınız var.

Hocam bu yöntemi denedim ama yine tam sonuç alamadım. Eğer ile bir kere dönüyor. Sürekli ekleyince de sürekli dönüyor. Eğer ise sürekli gibi birşey olması lazım kodlarda sanki.
 

Ekli dosyalar

  • kod.png
    kod.png
    29.5 KB · Görüntüleme: 40
Hocam bu yöntemi denedim ama yine tam sonuç alamadım. Eğer ile bir kere dönüyor. Sürekli ekleyince de sürekli dönüyor. Eğer ise sürekli gibi birşey olması lazım kodlarda sanki.

Hocam ben de akıllı perde yaptım ldr ile. Aslında mantık aynı. Size bir fikir verebilir umarım. Sanki yagmur değişkenini ve eğerleri süreklinin arasına almanız lazım gibi
 

Ekli dosyalar

  • akıllı perde.jpg
    akıllı perde.jpg
    128.4 KB · Görüntüleme: 63
Son düzenleme:
if else kullanmak çok mantıklı olmaz. if çalışmazsa else mutlaka çalışacaktır o sebeple iki if kullanın. ve tentenin durumunı başta kapalı olarak düşünün her if içinde durumunu kontrol ledin.
mesele;
tente_durum = kapalı
sürekli tekrarla bloğu
eğer (tente= kapalı ve yagmur > 400)
tenteyi aç
tente_durum = açık yap
eğer (tente= çık ve yagmur < 400)
tenteyi kapat
tente_durum = kapalı yap
sürekli tekrarla bloğu sonu
 
En üstteki tente 0 olsun kodunun döngü dışına olması lazım. Yani o kod 1 kere çalışmalı. Bu haliyle döngü başında sürekli 0 oluyor.
 
Geri
Üst