Follow along with the video below to see how to install our site as a web app on your home screen.
Not: This feature may not be available in some browsers.
Aslında olayı baştan anlatayım. Arduino öğrenmeye bu dönem başladık malum pandemi döneminde verimli bir şekilde ders göremedik. Arduinoda ldr be servo motor kontrolünü pek bilmiyorum açıkçası kod kısmında yardımcı olursan sevinirim.Tam olarak neresinde takıldın yazarsan kod kısmında yardımcı oluruz. Yapmak istediğin projenin benzerleri birçok yerde var:
https://www.instructables.com/id/Light-Controlled-Servo/
https://www.instructables.com/id/Control-Servo-with-Light/
https://forum.arduino.cc/index.php?topic=398449.0
Verdiğim linklerde kodlar da var ama anlamadığın kısımları burdanAslında olayı baştan anlatayım. Arduino öğrenmeye bu dönem başladık malum pandemi döneminde verimli bir şekilde ders göremedik. Arduinoda ldr be servo motor kontrolünü pek bilmiyorum açıkçası kod kısmında yardımcı olursan sevinirim.
şeklinde yazabilirsin.
Verdiğim linklerde kodlar da var ama anlamadığın kısımları burdanKod:şeklinde yazabilirsin.[/quote] bağlantıyı yapıp servo motoru çalıştırdım fakat ışık gekdiğinde 1 dk boyunca çalışması için gereken kodu yazamadım :( yardımcı olursan sevinirim
Servoyu yapabildiysen bravo öncelikle, şimdi ldr'ye ışık gelip gelmediğini kontrol etmen gerekiyor. Bunun için önce bir deneme yapmamız gerek ki hangi ışık değerlerini kullanmamız gerektiğini anlayalım.bağlantıyı yapıp servo motoru çalıştırdım fakat ışık gekdiğinde 1 dk boyunca çalışması için gereken kodu yazamadımyardımcı olursan sevinirim
#include <Servo.h>
Servo myservo; //Servomuzun adı
int photocellPin = 0; //ldr pini
int photocellReading; //ldr'ın ne kadar okuduğunu bize söylüyor
**** setup()
{
Serial.begin(9600);
myservo.attach(11); //servo pinini 11 olarak almış sende farklıysa değişitirebilirsin
}
**** loop()
{
Serial.print("Parlaklık = "); //print "Parlaklık = "
Serial.println(photocellReading); //ldr ne okuduysa onu yazar
photocellReading = analogRead(photocellPin); //ldr okumasını yapıyor burda, eskiden tanımladığımız pini göndermemiz gerekli fonksiyona
photocellReading = map(photocellReading, 0, 1023, 0, 179); //servo değer alırken 1 ila 180 arası değerleri okuyor, biz de "map" fonksiyonunu kullanarak 1 ile 1024 arası olan standart ldr okuma değerlerini 1 ile 180 arasına orantılı olarak sıkıştırıyoruz
{
if (photocellReading <= 89); //okuduğu değerin üst noktasını belirtiyor bu, bunu kendi değerlerine bakıp değiştirebilirsin
myservo.write(50); //servoyu tam tersi yöne döndürür bu, sen bakma burada 60 saniyelik bir delay vermen lazım çalışır durumda bırakıp
else if(photocellReading >= 91) //normal değerlerdeyse de buraya giriyor
myservo.write(130); //bu da servoyu dumduz donduruyor
delay(15);
}
}
Servoyu yapabildiysen bravo öncelikle, şimdi ldr'ye ışık gelip gelmediğini kontrol etmen gerekiyor. Bunun için önce bir deneme yapmamız gerek ki hangi ışık değerlerini kullanmamız gerektiğini anlayalım.
Ldr değerini sürekli yazdıran bir loop'a sok (while ile yapabilirsin mesela). Normal ışıkta değerlere bak, not et, bir de üzerine fenerle ışık tut ve değerleri not et. Daha sonra gerekli değerleri yerlerine yazarsan, pinleri de doğru yazdıysan alttaki kodun işe yaraması lazım
Kodların senin projenle birebir örtüşmediğinin farkındayım, biraz da sana bırakmak istiyorum olayı.Kod:#include <Servo.h> Servo myservo; //Servomuzun adı int photocellPin = 0; //ldr pini int photocellReading; //ldr'ın ne kadar okuduğunu bize söylüyor **** setup() { Serial.begin(9600); myservo.attach(11); //servo pinini 11 olarak almış sende farklıysa değişitirebilirsin } **** loop() { Serial.print("Parlaklık = "); //print "Parlaklık = " Serial.println(photocellReading); //ldr ne okuduysa onu yazar photocellReading = analogRead(photocellPin); //ldr okumasını yapıyor burda, eskiden tanımladığımız pini göndermemiz gerekli fonksiyona photocellReading = map(photocellReading, 0, 1023, 0, 179); //servo değer alırken 1 ila 180 arası değerleri okuyor, biz de "map" fonksiyonunu kullanarak 1 ile 1024 arası olan standart ldr okuma değerlerini 1 ile 180 arasına orantılı olarak sıkıştırıyoruz { if (photocellReading <= 89); //okuduğu değerin üst noktasını belirtiyor bu, bunu kendi değerlerine bakıp değiştirebilirsin myservo.write(50); //servoyu tam tersi yöne döndürür bu, sen bakma burada 60 saniyelik bir delay vermen lazım çalışır durumda bırakıp else if(photocellReading >= 91) //normal değerlerdeyse de buraya giriyor myservo.write(130); //bu da servoyu dumduz donduruyor delay(15); } }
Arada ufak takılmalar olmasın ona dikkat et, atıyorum ışığı verdin, 60 saniye bekledin, sonra hemen verdi ama ufak bir gecikme oluyor, o olmasın ona dikkat et. 60 saniye olduğu için çok sırıtmaz sen onu 5 saniye olarak test et kodunu çok daha efektrif yapar bu.
Eğer yine olmuyorsa ki kaç gündür yapıyorsun sanırım kodlarını at ben sana nerde yanlış yaptığınla beraber düzgün kodları atarım.
#include <Servo.h>
int x=0;
int val;
int a;
int b;
int d=1000;
Servo sg9;
**** setup() {
sg9.attach(7);
}
**** loop() {
val=analogRead(A0);
a=map(val,0,1023,0,180);
b=map(val,0,1023,0,0);
if(val>400){
for(x=0;x<30;x++){
sg9.write(a);
delay(d);
sg9.write(b);
delay(d);
}
x=0;
}