Arduino ile servo tester

Zafer ŞAHİN

Mahna Mahna ...
Katılım
29 Ağu 2013
Mesajlar
1,313
Tepkime puanı
2,193
Yaş
47
Konum
İstanbul
İlgi Alanı
Multikopter
Eveet, çok uzun bir aradan sonra yeni bir arduino konusu ile karşınızdayız :) . Arduino ile servo tester yapımı. Önce gerekli malzemeler

- Tercihan 10K değerinde bir potansiyometre
- Arduino
- Servo

Kodun bu versiyonu, temel olarak sadece potansiyometre ile servoyu sağa sola hareket ettiriyor. Merkezleme ve cam sileceği fonksiyonu, daha sonra.

Kod:
//Servo Tester - 0.1

#include <Servo.h>

Servo testServo;  //Servo nesnesi olustur

int potPin = 2; //Analog uca baplanacak olan potansiyometrenin orta pini
int potVal = 0; //Potansiyometre degerini okuyup saklayan degisken
int servoPin = 5; //Servonun sinyal pininin baglanacagi, arduinonun dijital ucu
int servoPulse = 0; //Servoya gonderilecek degeri saklayan degisken

void setup() {
    pinMode(servoPin, OUTPUT); //Servolarin pinini cikis icin ayarla
    testServo.attach(servoPin);  //Servo nesnesini ilgili pine bagla
}

void loop() {
    potVal = analogRead(potPin); // Potansiyometrenin takılı oldugu ucu oku
    servoPulse = map(potVal, 0, 1023, 800, 2200); //Potansiyometreden okunan 0-1023 arasindaki degeri, servoya gonderilecek 800 - 2200 milisaniye arasındaki degerle eslestir
    testServo.writeMicroseconds(servoPulse); // Servo nesnesine bulunan degeri yaz.
}

Devre şeması yakında ... :).
 
Arduino ile servo tester

Zafer SAHIN' Alıntı:
... Önce gerekli malzemeler

- Tercihan 10K değerinde bir potansiyometre
- Arduino
- Servo

Zafer bey, yakında yemek tarifleri kitabı gibi bir tarifler kitabı bekliyoruz! :bravo:
 
Arduino ile servo tester

Gecen hafta son dakikada Arduino siparisimi iptal etmistim malum sebeplerden :lollol: (baslayinca birakamama, her seyi kod olarak gorme...)

Ama aksama su $45 kitten siparis geciyorum. Bu kadar kod yayinlanirken en azindan test etmek lazim :thumbup: :halay:

Beni de yaktin Zafer bey :lollol: Ama bastan soyleyeyim, ben kod yazam, sadece derleyio test ederim :halay:
 
Arduino ile servo tester

Düğme ile modu değiştirilebilen servo test cihazı.

- İlk mod, potansiyometre ile servoyu hareket ettirir.
- İkinci mod, servoyu merkezler
- Üçüncü mod, servoyu devamlı olarak sağa sola hareket ettirir.

Üçüncü moddan sonra düğmeye basıldığında tekrar ilk moda geçer.

Şema burada

Bu RESMİ görmek için izniniz yok. Giriş yap veya üye ol


Kod da burada.

Kod:
//Servo Tester - 0.22

#include <Servo.h>

Servo testServo;  //Servo nesnesi olustur

int buttonPin = 12; //Secenek degistirme dugmesi
int buttonVal = 0; //Secenek degistirme dugmesi degeri
int modeVal = 0; // Hangi Modda olduğumuzu gosteren deger
int potPin = 2; //Potansiyometrenin orta pininin baglanacagi analog uc
int potVal = 0; //Potansiyometre degerini okuyup saklayan degisken
int servoPin = 5; //Servonun sinyal ucunun baglanacagi dijital pin
int servoPulse = 0; //Servoya gonderilecek degeri saklayan degisken

int iSweep = 800; // Sweep degerini global olarak saklamak icin degisken
boolean bSweep = false; //Sweep yonunu saklama icin degisken 

void setup() {
    pinMode(servoPin, OUTPUT); //Servolarin pinini cikis icin ayarla
    pinMode(buttonPin, INPUT); //Servolarin pinini cikis icin ayarla
    testServo.attach(servoPin);  //Servo nesnesini ilgili pine bagla
}

void loop() {
    buttonVal = digitalRead(buttonPin); // Dugmeye basili olup olmadigini oku
    modeVal = modeVal + buttonVal; // Mod degerini dugmeden okunan deger ile topla, basilmamis ise 0, yani ayni mod, basilmis ise 1 yani siradaki mod.
    if (buttonVal == 1) {
        delay(200); // 200 milisaniye beklenerek, dugme degerinin araliksiz olarak degismesi engellenir.
    }
    if (modeVal == 0) { //Pot ile servo hareket ettirilir. Cok hizli hareket ediyorsa biraz delay eklenir.
        stPot(0);
    } else if (modeVal == 1) { //Servo merkezlenir
        stCenter(); //
    } else if (modeVal == 2) { //Servo 800 - 2200 milisaniye arasında degisen degerler ile saga sola devamlı hareket eder. Cok hizli hareket ediyorsa biraz delay eklenir.
        stSweep(0);
    } else {
        modeVal = 0; // modeVal arttirilip 3 oldugunda tekrar ilk deger olan 0 a don
    }
}

void stPot(int sweepDelay) { //Pot ile servo hareket ettirilir
    potVal = analogRead(potPin); // Potansiyometrenin takılı oldugu ucu oku
    servoPulse = map(potVal, 0, 1023, 800, 2200); //Potansiyometreden okunan 0-1023 arasindaki degeri, servoya gonderilecek 800 - 2200 milisaniye arasındaki degerle eslestir
    testServo.writeMicroseconds(servoPulse); // Servo nesnesine bulunan degeri yaz.
    delay(sweepDelay); // Cok hizli hareket eden servolari bekletebilmek icin, istenirse 0 verilerek bekletme iptal edilir.
}

void stCenter() { //Servo merkezlenir
    testServo.writeMicroseconds(1500); // Servo nesnesine 1500 milisaniyelik merkezleme degerini yaz
}

void stSweep(int sweepDelay) { //Servo 800 - 2200 milisaniye arasında degisen degerler ile saga sola devamlı hareket eder. Cok hizli hareket ediyorsa biraz delay eklenir.
    testServo.writeMicroseconds(iSweep); // Servo nesnesine bulunan degeri yaz.
    delay(sweepDelay); // Cok hizli hareket eden servolari bekletebilmek icin, istenirse 0 verilerek bekletme iptal edilir.
    if (bSweep == false) { // 800 den 2200 e dogru ilerle
        iSweep += 1; //iSweep degerini 1 arttır
        if (iSweep >= 2200) { // iSweep degeri 2200 ise
            bSweep = true; // Sweep yonunu degistir
        }
    } else { // 2200 den 800 e dogru ilerle
        iSweep -= 1; //iSweep degerini 1 azalt
        if (iSweep <= 800) { // iSweep degeri 800 ise
            bSweep = false; // Sweep yonunu degistir
        }
    }
}
 
Arduino ile servo tester

Mehmet Kucuksari' Alıntı:
Gecen hafta son dakikada Arduino siparisimi iptal etmistim malum sebeplerden :lollol: (baslayinca birakamama, her seyi kod olarak gorme...)

Ama aksama su $45 kitten siparis geciyorum. Bu kadar kod yayinlanirken en azindan test etmek lazim :thumbup: :halay:

Beni de yaktin Zafer bey :lollol: Ama bastan soyleyeyim, ben kod yazam, sadece derleyio test ederim :halay:

Aynı dertten muzdaribim Mehmet bir de buna bulaşırsam yeni yeni uçmaya başladım buna takılır kalırım. ;)
 
Arduino ile servo tester

Celalettin Yazkan' Alıntı:
Aynı dertten muzdaribim Mehmet bir de buna bulaşırsam yeni yeni uçmaya başladım buna takılır kalırım. ;)
Amman abi uçmayı falan bırakma , bunlar kışlık hazırlık ve eğlence , bunlarla da haşır neşir oluruz ama havalar ısınınca sahalardayız... :evil:
 
Arduino ile servo tester

Servo tester vallahi benim de aklıma gelmişti :laugh: Bi tane de voltaj ölçer, bir de açıölçer yaptık mı başka küçük gadget kalmıyor sanırım :D Ha esc program kartları var ama çeşiti çok onların :D

O diil de, geçen sene başka bi projeyi bahane edip sırf meraktan bi uno bi mega almıştım, hatta Zafer abinin önerisiydi, bana kalsa o iş için pic alıp saçlarımı dökecektim. Mega içinde blink kodu yüklü yatıyor, uno birkaç kez işimi gördü. Bir senedir itina ile uzak durmakta olduğum arduino dünyasından daha fazla kaçamayacam sanırım. İki tane de pro mini söyledim, sardı gönderdi BG. İnşallah sonum hayrolur.
 
Arduino ile servo tester

Evet notumuzu aldık...

- voltaj ölçer yap.
- açı ölçer yap.
 
Arduino ile servo tester

Celalettin Yazkan' Alıntı:
Aynı dertten muzdaribim Mehmet bir de buna bulaşırsam yeni yeni uçmaya başladım buna takılır kalırım. ;)
Yok abi ben de senden farkli durumda degilim. Dedigim gibi ben aliyorum ama kod falan yazmayacagim. Sadece arkadaslarimizin emek verip paylastiklari kodlari yukleyip, test edip Tesekkur edecegim :laugh: :D