Step Motor kontrolü hakkında soru

Kodla Büyü

demidembo

Aktif Üye
Mesajlar
204
Arkadaşlar bir işin içinden çıkamadım. Step motor ve dc fark etmez. Arduino ile kontrol ediyorum.

Soru şöyle; şart gerçekleşince motoru bir tur(360 derece) veya belli bir saniye kadar hareket ettirip durdurmak istiyorum. Örneğin mesafe 50 cm den fazla iken bir tur dönsün dursun.

Loop içerisinde, mesafe 50 cm den fazla olduğu müddetçe, sürekli şart gerçekleşmiş oluyor ve sürekli dönüyor. Ben bir kere döndürüp durdurmak istiyorum. servo ile oluyor ama diğer motorlarda nasıl yapabilirim acaba?
 
Loop dışında bir fonksiyon tanımla bu fonksiyonu bir tur dönecek biçimde ayarla, loop içerisinde if içerisine şart gerçekleşince fonksiyonu çağırarak yapabilirsiniz.
ters çevirmek içinse for içerisini,
for (int i = 0; i < 512; i++)
{
adim4();
adim3();
adim2();
adim1();
}
şeklinde yapıver.


//Step motor kontrolü

int motorPin1 = 2;
int motorPin2 = 3;
int motorPin3 = 4;
int motorPin4 = 5;

int bekle = 2;

void adim1() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekle);
}

void adim2() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekle);
}

void adim3() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(bekle);
}

void adim4() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(bekle);
}

void setup() {

pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);

}

void loop() {

if şartını yaz{
for (int i = 0; i < 512; i++)
{
adim1();
adim2();
adim3();
adim4();
}


}

}
 
Arkadaşlar bir işin içinden çıkamadım. Step motor ve dc fark etmez. Arduino ile kontrol ediyorum.

Soru şöyle; şart gerçekleşince motoru bir tur(360 derece) veya belli bir saniye kadar hareket ettirip durdurmak istiyorum. Örneğin mesafe 50 cm den fazla iken bir tur dönsün dursun.

Loop içerisinde, mesafe 50 cm den fazla olduğu müddetçe, sürekli şart gerçekleşmiş oluyor ve sürekli dönüyor. Ben bir kere döndürüp durdurmak istiyorum. servo ile oluyor ama diğer motorlarda nasıl yapabilirim acaba?
Bir değişken ile kontrol edin hocam, Türkçe ifadesini yazıyorum siz arduino diline çevirisiniz.
"Değişken = 0 ;
eğer ((şart sağlanırsa) ve (değişken sıfır ise)) {motor çalışsın ve değişken 1 olsun }
"
 
Loop dışında bir fonksiyon tanımla bu fonksiyonu bir tur dönecek biçimde ayarla, loop içerisinde if içerisine şart gerçekleşince fonksiyonu çağırarak yapabilirsiniz.
ters çevirmek içinse for içerisini,
for (int i = 0; i < 512; i++)
{
adim4();
adim3();
adim2();
adim1();
}
şeklinde yapıver.


//Step motor kontrolü

int motorPin1 = 2;
int motorPin2 = 3;
int motorPin3 = 4;
int motorPin4 = 5;

int bekle = 2;

void adim1() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekle);
}

void adim2() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(bekle);
}

void adim3() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(bekle);
}

void adim4() {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(bekle);
}

void setup() {

pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);

}

void loop() {

if şartını yaz{
for (int i = 0; i < 512; i++)
{
adim1();
adim2();
adim3();
adim4();
}


}

}
Bir değişken ile kontrol edin hocam, Türkçe ifadesini yazıyorum siz arduino diline çevirisiniz.
"Değişken = 0 ;
eğer ((şart sağlanırsa) ve (değişken sıfır ise)) {motor çalışsın ve değişken 1 olsun }
"
Teşekkürler hocam deneyeceğim.
 
int sayac=0;
long uzaklik=0;

void setup() {

}
void loop() {
if(sayac=0)&&(uzaklik>50){
//step motoru döndür
sayac =1;
}
}
 
Hocam Arduino ile encoder kullanıp DC motor tur sayısı ile istenen şekilde ayarlanabilir.
 
Geri
Üst