Arduino ServoTimer2 Kütüphanesi Nasıl Kullanılır?

Arduino’nun dahili Servo kütüphanesini hepimiz en az bir kez kullanmışızdır. Kendisi gayet iyi çalışan, sevdiğimiz bir kütüphanedir. Ancak bazen bize küçük şakalar yapabiliyor. Nasıl mı?

Servo kütüphanesi Arduino’nun kullandığı mikrokontrolcünün 3 adet Timer‘ı (sayıcı/sayaç diyebiliriz) arasından Timer1’i kullanıyor. Kullandığımız bazı komut veya kütüphaneler arasında da Timer1’i kullanan olursa bir çakışma yaşanıyor ve Servo kütüphanesi aracılığıyla çalıştırdığımız servolarımız şaşırmaya, garip şeyler yapmaya başlıyor.

Bunun kolay bir çözümü yok. Mikrokontrolcüler ucuz ve basit yapılar ve pek çok kısıtlamaya sahipler. Yaşadığımız bu çakışma sorununu çözmek için ServoTimer2 adı verilen harici bir kütüphane geliştirilmiş. Bu kütüphane mikrokontrolcü üzerindeki Timer2 sayacını kullanıyor. Böylece başımıza gelen çakışmalardan kurtulmamız mümkün olabilir. Bu yazıda bu kütüphaneyi kullanmayı ve inceliklerini öğreneceğiz.

Öncelikle tanıdık bildik Servo kütüphanesinin nasıl kullanıldığını hatırlayalım;

Sketch kodunu kopyalamak için pencerenin sağ üst köşesindeki butona tıklayabilir veya buraya tıklayarak ZIP dosyası olarak indirebilirsiniz. Mete Hoca tarafından modifiye edilmiş ve kullanımı kolaylaştırılmış ServoTimer2 kütüphanesini buraya tıklayarak indirebilirsiniz.

Yukarıdaki kodu incelersek servo motorumuzun kontrolü için 0 ve 180 olarak derece değerleri girmemizin yeterli olduğunu görürüz.

ServoTimer2 kütüphanesi ise çok farklı bir mantıkla çalışıyor. Bu kütüphaneyi 0 ve 180 değerleri ile değil, 544 ve 2400 değerleri arasında değer göndererek kullanmak zorundayız.

Yukarıdaki sketch’i bir de ServoTimer2 kütüphanesi ile çalıştıralım;

Servomuz yine aynı şekilde hareket ediyor, ancak bambaşka bir yapı kullanıyoruz. Ancak biz servo motorlarımızı derece göndererek kullanmaya çok alışkınız. 544 ve 2400 arasındaki değerlerle uğraşmak kafa karıştırıcı olabilir.

Bunun da çözümü var;

Arduino’nun map() komutunu kullanarak hazırladığımız bu fonksiyon işimizi oldukça kolaylaştırdı.

NOT: ServoTimer2 kütüphanesi çok farklı bir yöntemle çalıştığı için kullandığımız farklı servo motorlarda farklı tepkiler verebilir. Her bir motor için geleneksel Servo kütüphanesi ile karşılaştırarak denemeler yapıp başlangıç ve bitiş değerlerini yeniden belirlemek gerekebilir.

Arduino’da iyi olmak için öncelikle elektronikte iyi olmak gerekir. Türkiye’nin en iyi temel elektronik eğitim seti ARDUINO ÖNCESİ TEMEL ELEKTRONİK EĞİTİM VE DENEY SETİ‘ni keşfedin. Gereksiz bilgilerden arındırılmış basit ve eğlenceli anlatımla ELEKTRONİK öğrenin ve Arduino’ya METE HOCA farkıyla güçlü başlayın!