Arduino DC motor sürme ve hız kontrolü

Arduino DC motor sürme ve hız kontrolü :

Arduino ile dc motor sürmenin birden fazla yöntemi vardır.Bu yazımda dc motor sürmeyi  yöne ve  hız kontrolü yapmayı anlatacağım.Elimizde bir motor sürücü olmadan arduino çıkış pinleri çok az bir küçte çıkış vereceği için yüksek akım çeken motorlarınız çalışmaya bilir küçük ve az akım çeken motorlar için bu yöntem uygulanmaktadır.İlk olarak dc motorumuzun pinlerini dijital (pwm) çıkışlara takıyoruz.Aşağıdaki örnek kod ile 3 adet dc motoru sürüyoruz.

//1.MOTORUN PİNLERİ
int motorPinA1 =  2;    
int motorPinA2 =  3;  

//2.MOTORUN PİNLERİ
int motorPinB1 =  4;    
int motorPinB2 =  5;   

//3.MOTORUN PİNLERİ
int motorPinC1 =  6;    
int motorPinC2 =  7;    


void setup()   {  

  
  
  //Motor pinleri  
  pinMode(motorPinA1, OUTPUT); 
  pinMode(motorPinA2, OUTPUT);  
  pinMode(motorPinB1, OUTPUT); 
  pinMode(motorPinB2, OUTPUT);  
  pinMode(motorPinC1, OUTPUT); 
  pinMode(motorPinC2, OUTPUT);  
}


void loop()                     
{

   rotateRightFull(motorPinA1,motorPinA2);
     
}

//-----------------------SAĞA VE SOLA MOTOR DÖNÜŞLERİ---------------------------
/*
Paramatreler:
motorPin1:Sola Dönecek motorun pini
motorPin2:Sola dönecek motorun gnd pini
speedOfRotate:Dönüş hızı
   *Eğer motor sola dönecekse birinci pine güc verilir ikinci pin gnd  durumuna çekilir
   *Tersi yönde bir dönüş söz konusu ise bu işlemin tersi yapılarak ikinci pine güç verilir birinci pin gnd drumuna çekilir
*/

//Motoru sola döndürür
void rotateLeft(int motorPin1,int motorPin2,int speedOfRotate){
  analogWrite(motorPin1, speedOfRotate); 
  digitalWrite(motorPin2, LOW);    
    
}
//Motoru sağa döndürür
void rotateRight(int motorPin1,int motorPin2,int speedOfRotate){
  analogWrite(motorPin2, speedOfRotate); 
  digitalWrite(motorPin1, LOW);    
   
}

//------------------------SAĞA VE SOLA TAM GÜÇ MOTOR DÖNÜŞLERİ------------------
/*
  Pinlere tam güç verilerek motorların gelen tüm voltaj değeri ile sağa ve sola dönmesi sağlanır
*/

//Sola tam güç döndür
void rotateLeftFull(int motorPin1,int motorPin2){
  digitalWrite(motorPin1, HIGH); 
  digitalWrite(motorPin2, LOW);    
    
}
//Sağa tam güç döndür
void rotateRightFull(int motorPin1,int motorPin2){
  digitalWrite(motorPin2, HIGH);
  digitalWrite(motorPin1, LOW);    
 
}
//Tüm pinlerden gücü kes ve motorları sustur
void stopAllMotors()
{
digitalWrite(motorPinA1, LOW);
digitalWrite(motorPinA2, LOW);   
digitalWrite(motorPinB1, LOW);   
digitalWrite(motorPinB2, LOW);   
digitalWrite(motorPinC1, LOW);   
digitalWrite(motorPinC2, LOW);   
}
//---------------------------------------------------------------------------------