Kart üzerinde 1 adet L298N motor sürücü entegresi mevcuttur. Kanal başına 2A'e kadar akım verebilmektedir. Motor voltajı 6-15V arası kullanılabilmektedir. Besleme gerilimi 5V ise kart üzerindeki Vcc-5V jumpere kısa devre yapılarak kullanılmaktadır. Kartın kullanılmayan tüm pinleri kart üzerindeki 4'lü konnektörlere çevrilerek genel kullanım için bırakılmıştır.
Bu kart L298N H-Bridge entegresi barındırmaktadır. İki adet DC Fırçalı motoru sürebilirsiniz.
Robot, araba gibi uygulamalar yapıyorsanız kabloları bağlarken artı ve eksi uçlarını aynı şekilde bağlamaya çalışın. Bu şekilde yön konusunda hata yapma oranınız azalır. İki motor beklediğiniz yöne dönmezse bir motorun kablolarını ters bağlayın.
Arduino’nun 5V bağlantı pinine shield üzerinden besleme sağlayabilirsiniz. Bu şekilde motorları beslemek için kullandığınız batarya veya güç kaynağı ile farklı bir beslemeye ihtiyaç duymazsınız.
Başlangıç olarak 5 adet dijital çıkışa ihtiyaç vardır. Pinlerden 2’si PWM (pulse width modulation veya darbe genlik modülasyonu) özellikli olmalıdır. PWM pinleri arduino üzerinde (“~”) işareti ile gösterilmektedir.
Resimde 11,10,9,6,5 ve 3 numaralı pinlerin PWM özellikli olduğu görülmektedir.
Son olarak Arduino dijital pinlerini sürücüye bağlayalım. Biz örneğimizde iki motor bağlıyoruz. Bu yüzden D9,D8,D7 ve D6 pinlerini IN1,IN2,IN3 ve IN4 e bağlıyoruz.
sürücüde 7 ve 12 numarada görülen Jumper ı çıkarark arduino D10 pinini pin7 ye, arduino D5 i de pin12 ye bağlıyoruz.
Motor yönü Arduino pinlerinde oluşturulan HIGH veya LOW sinyalleri ile kontrol edilmektedir.
şeklinde olursa motor bir yöne dönecektir.
şekilnde olursa da tam tersi yöne dönecektir.
Ancak motorların dönmeye başlaması için pin7 (1.Motor ) ve pin12(ikinci motor) HIGH durumunda olmalıdır. Direk olarak 5V verdiğimizde motorlar tam güç dönecektir.
PWM sinyali ile motorların hızını ayarlayabilirsiniz.
// Bağlantıları kontrol edin// motor 1int enA = 10;int in1 = 9;int in2 = 8;// motor 2int enB = 5;int in3 = 7;int in4 = 6;void setup(){ // Bütün motor pinleri çıkış pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT);}void demoOne(){ // Motorlar sabit hızda aynı yöne dönüyorlar. // Motor 1 aktif digitalWrite(in1, HIGH); digitalWrite(in2, LOW); // Motor 1 için 0~255 arasında bir hız değeri verelim. 255 en üst sınır analogWrite(enA, 200); // Motor 2 aktif digitalWrite(in3, HIGH); digitalWrite(in4, LOW); // Motor 2 için 0~255 arasında bir hız değeri verelim. 255 en üst sınır analogWrite(enB, 200); delay(2000); // yönleri değiştirelim digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(2000); // motorlar duruyor digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW);}void demoTwo(){ // Motor hızları sürekli artar ve azalır // İki motor da aktif digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); // Sıfırdan en yüksek hıza doğru hızlanır for (int i = 0; i < 256; i++) { analogWrite(enA, i); analogWrite(enB, i); delay(20); } // durana kadar yavaşlar for (int i = 255; i >= 0; --i) { analogWrite(enA, i); analogWrite(enB, i); delay(20); } // motorlar duruyor digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); }void loop(){ demoOne(); delay(1000); demoTwo(); delay(1000);}