Merhabalar
elimde 2 buton ve 1 servo motor var (sg90)
bu servoyu ilk butona bastığımda +10 derece ikinci butona bastığımda -10 derece dönmesini istiyorum ama bu sürekli olucak yani ilk butona 1 kere bastım 10 derece 1 kere daha bastım bi 10 derece daha ilerlemesini istiyorum c++ diline göre yazıyorum kodu fakat bir türlü bunu başaramadım yazdığım koda göre ilk butona bastığımda daha doğrusu basılı tuttuğum süre boyunca o sağa diğer butona basılı tuttuğum sürece sola dönüyor ben çektiğimde olduğu yerde kalıyor kafam karışmaya başladı artk çözüm bulamıyorum bana ne gibi bir öneri sunarsınız teşekkür ederim
Srounu buldum başkalarına lazım olur diye koda eeprom da ekledim burdan bulabilirsiniz kullanınlan mikrodenetleyci atmega329p
elimde 2 buton ve 1 servo motor var (sg90)
bu servoyu ilk butona bastığımda +10 derece ikinci butona bastığımda -10 derece dönmesini istiyorum ama bu sürekli olucak yani ilk butona 1 kere bastım 10 derece 1 kere daha bastım bi 10 derece daha ilerlemesini istiyorum c++ diline göre yazıyorum kodu fakat bir türlü bunu başaramadım yazdığım koda göre ilk butona bastığımda daha doğrusu basılı tuttuğum süre boyunca o sağa diğer butona basılı tuttuğum sürece sola dönüyor ben çektiğimde olduğu yerde kalıyor kafam karışmaya başladı artk çözüm bulamıyorum bana ne gibi bir öneri sunarsınız teşekkür ederim
Kod:
#include <Arduino.h>
#include <Servo.h>
Servo myservo;
int pos = 0;
int buton1=2;
int buton2=3;
**** setup()
{
myservo.attach(5);
pinMode(buton1,INPUT);
pinMode(buton2,INPUT);
}
**** loop()
{
if (digitalRead(buton1)==0&&(pos<180))
{
pos=pos+1;
myservo.write(pos);
delay(5);
}
if (digitalRead(buton2)==0&&(pos>0))
{
pos=pos-1;
myservo.write(pos);
delay(5);
}
}
Kod:
#include <EEPROM.h>//EEPROM(kaydedici)'un kütüphanesini ekliyoruz.
#include <Servo.h>//servo'nun kütüphanesini ekliyoruz.
Servo servo;//servoya isim veriyoruz.
int pos = 0;//servonun başlangıç açısını belirliyoruz.
**** setup()
{
servo.attach(9); //servoyu 9 nolu PWM çıkışına bağladım.
pinMode(2,INPUT); //1.butonu 2 nolu digital çıkışa bağladım.
pinMode(3,INPUT); //2.butonu 3 nolu digital çıkışa bağladım.
Serial.begin(9600); //seri ekranda pos deperini okuyorum.
pos=EEPROM.read(0); //EEPROM'un 0'ıncı bölgesine kaydettiğimiz değeri pos değerinin içine attım.
Serial.print("Servo aci degeri = ");
}
**** loop()
{
if (digitalRead(2)==1)
{
while(digitalRead(2));//buton basılı olduğu sürece burada dönecek butondan elimizi çektikten sonra bir alt satıra inip diğer işlemler yapılacak
pos=pos+10;if(pos>180)pos=180;
servo.write(pos);
delay(100);
EEPROM.write(0,pos);
Serial.println(pos);
}
if (digitalRead(3)==1)
{
while(digitalRead(3));//buton basılı olduğu sürece burada dönecek butondan elimizi çektikten sonra bir alt satıra inip diğer işlemler yapılacak
pos=pos-10;if(pos<0)pos=0;
servo.write(pos);
delay(100);
EEPROM.write(0,pos);
Serial.println(pos);
}
}
Son düzenleme:
