Arduinonun herhangi çıkışından PWM elde etme

PWM çıkışları arduinolarda limitlidir. Mesela ihtiyacınız olan 7 servo motorunu kontrol etmek istiyorsunuz ama arduinonuzun 6 adet PWM çıkışı varsa programlama ile bunun üstesinden gelebilirsiniz.  Başka bir artısı ise projemizde kullandığımız servolarımız çok enerji harcamasını üstesinde gelebilirsiniz .

Aklınıza nasıl sorusu geldiğini ümit ederek anlatayım. Arduino servo motoru kontrolünde her zaman servo motorun değerini gönderir mesela servo motora 90 değerini gönderirseniz, her zaman bu değeri servoya göndererek servo motorun o değerde sabit kalmasını sağlar. Eğer servo motoru sağa yada sola hareket ettirirseniz , servo motorunuz tekrar eski haline gelecektir. Programla yaptığınız PWM kontrolünde ise isteğinize göre bunu ayarlıyabilirsiniz.

Programımız

int servo = 9; //servo pini
 
int angle; //hedef açı
int pwm;
 
void setup()
{
  pinMode(servo, OUTPUT);
}
 
void loop ()
{
  for (angle = 0; angle <= 180; angle += 5) { 
servoPulse(servo,angle ); } 
delay(2000); 
for (angle = 180; angle >= 0; angle -= 5)  {
    servoPulse(servo, angle);  }
    delay(2000);
}
 
void servoPulse (int servo, int angle)
{
//aşağıdaki çarrpım değerini değiştirerek daha kararlı hareketler yaptırabilirsiniz.
  pwm = (angle*11) + 500;      
  digitalWrite(servo, HIGH);
  delayMicroseconds(pwm);
  digitalWrite(servo, LOW);
  delay(50);                   
}

Boş zamanlarda arduino ile uğraşan kendi halinde bir Öğretmen.

  

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.