Soru & Cevap

Ardunio ile 28byj-48 12 volt motoru uln2003 ile sürerken max hız

14.10.2020 - 05:35

28BYJ-48 12 volt motoru ULN2003 sürücü ile Arduino uno ile 12 volt harici güç kaynağı ile aşağıdaki kodla çalıştırıyorum. Sırınga pompasını ileri geri hareket ettirmek istiyorum. Motor hızı için int bekleme =2 değerini değiştiriyorum. Max hıza değeri 2 girince ulaşıyorum ama yeterli gelmiyor. Hızı artırmak için neler yapmalıyım. 

 

const int motorPin1 = 8;

const int motorPin2 = 9;

const int motorPin3 = 10;

const int motorPin4 = 11;

 

int bekleme =2

// bekleme süresini değiştirerek step motorun hızlı veya yavaş ilerlemesini sağlayabilirsiniz.

//1sn=1000

 

void adim1() {

digitalWrite(motorPin1, HIGH);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, LOW);

delay(bekleme);

}

 

void adim2() {

digitalWrite(motorPin1, LOW);

digitalWrite(motorPin2, HIGH);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, LOW);

delay(bekleme);

}

 

void adim3() {

digitalWrite(motorPin1, LOW);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin3, HIGH);

digitalWrite(motorPin4, LOW);

delay(bekleme);

}

 

void adim4() {

digitalWrite(motorPin1, LOW);

digitalWrite(motorPin2, LOW);

digitalWrite(motorPin3, LOW);

digitalWrite(motorPin4, HIGH);

delay(bekleme);

}

 

void setup() {

 

pinMode(motorPin1, OUTPUT);

pinMode(motorPin2, OUTPUT);

pinMode(motorPin3, OUTPUT);

pinMode(motorPin4, OUTPUT);

 

}

 

void loop() {

 

 

for (int i = 0; i < 2048 ; i++)

{

adim1();

adim2();

adim3();

adim4();

}

{

 

exit(0);

}

}

 

 

348 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-158072-1530701953.jpg
TGUNEYSU
15.10.2020 - 02:19

@ Nihat Yalvaç

Hem sayı++ hem de ++sayı uygulandıkları değişkeni artırsa da, sayı++ tarafından döndürülen sonuç, değişkenin artmadan önceki değeridir, oysa ++sayı tarafından döndürülen sonuç, artış uygulandıktan sonra değişkenin değeridir.

Burada dikkat edilecek nokta, bu kuralın yalnızca bir atama yapıldığı zaman geçerli olduğudur. Örnek:

int a = 5, b;

b = a++;

>>> a önce b ye atanır ve sonra a değeri +1 değiştirilir. Sonuç: a = 6,  b = 5

b = ++a;

>>> a değeri önce +1 değiştirilir ve sonra a b değişkenine atanır. Sonuç: a = 6,  b = 6

 


 

picture-158072-1530701953.jpg
TGUNEYSU
15.10.2020 - 02:03

https://lastminuteengineers.com/28byj48-stepper-motor-arduino-tutorial/

Linkteki detayları inceleyin. Motor sürüş sıranız doğru değil. 

Ayrıca, Arduino bilgi seviyeniz ve amacınıza göre, pinleri "digitalWrite(motorPin1, LOW);" gibi kodlarla çalıştırmak çok yavaştır.

Belki "https://www.arduino.cc/en/Reference/PortManipulation" sayfasındaki bilgilerle süratinizi artırabilirsiniz.

Veya şu linkteki "https://www.projehocam.com/assembly-dili-ile-arduino-kodlama/" detaylara bir bakın.

İyi çalışmalar.

Profile picture for user .tire.
.tire.
14.10.2020 - 05:51
arttırma operatörü ++sayı sayi++ aradaki fark ne??