/*Seri Monitör ile Stepmotor kontrolü:Seri monitörden girilen veriler ile stepmotorun
dönüşü sağlanacaktır.Girilen pozitif veri ile motor istenilen yöne dönerken, negatif
veri ile tam tersi yöne dönmelidir.*/
int ac_kapat = 8; // ENABLE pini, sürücüyü açıp kapatır. (LOW = aktif)
int adim = 9; // STEP pini (adım)
int yonKontrol = 10; // DIR pini (yön)
int girilenVeri = 0;
int newgirilen = 0;
void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT); //RESET pini
pinMode(6, OUTPUT); //SLEEP pini
pinMode(ac_kapat, OUTPUT);
pinMode(adim, OUTPUT);
pinMode(yonKontrol, OUTPUT);
digitalWrite(2, LOW); //MS1
digitalWrite(3, LOW); //MS2
digitalWrite(4, LOW); //MS3 hepsini low yaparak full step sağladım
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(ac_kapat, HIGH);
Serial.println("Adım sayısını giriniz:");
}
void loop() {
if (Serial.available() > 0) {
newgirilen = Serial.parseInt();
while (Serial.available() > 0) {
Serial.read();
}
if (newgirilen != girilenVeri || newgirilen==girilenVeri) { //ikinci koşulu peş
//peşe aynı sayı girilince algılamadığı için ekledim
girilenVeri=newgirilen;
Serial.print("Yeni komut: ");
Serial.println(girilenVeri);
if (girilenVeri == 0) { //girilen veri 0 ise
digitalWrite(ac_kapat, HIGH);// sürücüyü kaptıım
}
else {
digitalWrite(ac_kapat, LOW); // değil ise
if (girilenVeri > 0) { //girilen verinin işaretine göre yön seçiliyor
digitalWrite(yonKontrol, HIGH);
}
else {
digitalWrite(yonKontrol, LOW);
}
for (long i = 0; i < abs(girilenVeri); i++) { //girilen verinin mutalağı alı-
//narak yukarıda belirlenen yönde motor döndürülüyor
if (Serial.available() > 0) { //motorun her adımında yeni veri var mı diye
//kontrol ediliyor, var ise direkt döngüden çıkılıyor(return komutu ile)
return;
}
digitalWrite(adim, HIGH); //bu bölüm ile motorun bir adım atması sağlanıyor
delay(10);
digitalWrite(adim, LOW);
delay(10);
}
digitalWrite(ac_kapat, HIGH);//veride istenen adım sayısı tamamlanınca sürücü
//kapatılıyor
}
}
}
}
/*STEP pininin high-low olarak değişimiyle motor bir adım atar.DIR pini ile motorun
dönüş yönü tespit edilir.LOW saat yönünde , HIGH ise saat yönünde dönmeyi sağlar.
MS1,MS2,MS3 pinleri motorun adımını ayarlamayı sağlar. Pinlerin 0,0,0 olması full
adımı temsil eder.Ben de adımları full step olarak kullandım.Seri port üzerinden iste-
nilen adım sayısı veri olarak alınır ve motor sayının pozitif negatifliğine göre dön-
dürülür.Girilen veri tamamlanmadan yeni veri girilirse yeni veri algılanır ve uygula-
nır.0 girilmesi durumunda motor durur.*/