Tamam bu kodları deneyin bana dönüş yapın.Çalışıyorsa direk üzerinden ekleme yaapcağım. |
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın > < Resime gitmek için tıklayın >https://www.youtube.com/watch?v=TVo4gv9BP1s bağlantı şekillerini ve test videosunu attım yalnız başka yazılan kodları denedim.çalışıyor kodlar ama buton ve swich eklemek lazım ve motor hızını maximumda tutmak lazım.yardımın için teşekkür ederim #include <Stepper.h> const int stepsPerRevolution = 1700; // Her bir çevrim icin donusun sabitlenmesi. //Motor 200 adim oldugu icin yapildi. // Baslangic icin 8. pinden 11. pine kadar motora ayriliyor. Biz devremizde 8. ve 9. //pinleri kullandik. Sadece 8 ve 9 olarak da tanimlanabilir. Stepper myStepper(stepsPerRevolution, 8,9,10,11); int stepCount = 0; // adimlarin numarasi void setup() { } void loop() { // potansiyometreden okunan deger. int sensorReading = analogRead(A0); // %100 calisma orani icin potansiyometrenin degerinin ayarlanmasi //saglanmaktadir. int motorSpeed = map(sensorReading, 0, 1023, 0, 100); // motor hizi ayarlaniyor: if (motorSpeed > 0) { myStepper.setSpeed(motorSpeed); // adim 1/100 donusumu: myStepper.step(stepsPerRevolution/100); } } |
yalnız videoyu youtube ye atabildim linki https://www.youtube.com/watch?v=TVo4gv9BP1s&feature=youtu.be |
Üstteki kodları neden kullanmadınız ? Bu kodda analog veri kullanılmış |
üstteki kodları denedim çalışmadı.ama videoda çalışıyordu.anlam veremedim buton ve swiçler için analog kullanmak gerekmiyormu |
önerin varsa onu uygulayabiliriz analog girişleri kullanmak şart değil benim için |
Swıtch sadece motorun konumunu belırlemeyecek mı ? swıtch dedıgınız sınır anahtarı değil mi ? Eğer sınır anahtarı ise analog değil dijital pin kullanacağız.Ben şuanda üstteki kodları düzenleyıp atacağım siz arduino ıde den bakarsınız ben not defterine yazıyorum. |
doğrudur switchler motorun konumunu belirlemek için kullanılaçak. proksi switçh npn yada pnp switçh kullanabilirim. yada nomal kuru kontak no veya nc swıtch kullanabilirim bunların hepsi elimde mevcut |
Hocam gönderdiğiniz kodun devamını getiremedim |
Motor stop kodunu bulamadım. Kütüphaneyi kaldırıp yerine kodları yazma imkanımız varmı |
hocam DevCC++ ile stepper.h açtım içeriği şu şekilde. gönderdiğin kodun devamına ne eklemem gerekiyor. riça etsem kontrol edermisin. #ifndef Stepper_h #define Stepper_h // library interface description class Stepper { public: // constructors: Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2); Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4); Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, int motor_pin_3, int motor_pin_4, int motor_pin_5); // speed setter method: void setSpeed(long whatSpeed); // mover method: void step(int number_of_steps); int version(void); private: void stepMotor(int this_step); int direction; // Direction of rotation unsigned long step_delay; // delay between steps, in ms, based on speed int number_of_steps; // total number of steps this motor can take int pin_count; // how many pins are in use. int step_number; // which step the motor is on // motor pin numbers: int motor_pin_1; int motor_pin_2; int motor_pin_3; int motor_pin_4; int motor_pin_5; // Only 5 phase motor unsigned long last_step_time; // time stamp in us of when the last step was taken }; #endif |
Buton pin = 9 Başlangıç swıtch pin = 10 Bitiş Swıtch pin = 11 Motor pinleri kütüphanede ayarlanmış Çalışma şekli ; Motor 1.swıtche dokunurken butona basarsanız motor hareket eder.Motor bitiş noktasındaki 2. swıtche dokunursa motor geri dönmeye başlar.Eğer motor geri dönüşte tekrar 1.switche dokunursa durur ve tekrar start için hazırda bekler.(Analog sensör değil dijital çıkış veren swıtch kullanın) #include <Stepper.h> int butonDurumu = 0; // Değişken int buton = 9 ; // Buton int s1 = 10 ; // Baslangıc sınır anahtarı int s2 = 11 ; // Bıtıs sınır anahtarı const int stepadimi = 50; Stepper stepmotor(stepadimi, 8, 9, 10, 11); void setup() { stepmotor.setSpeed(60); pinMode(9,INPUT); pinMode(11,INPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); pinMode(10,INPUT); digitalWrite(13, LOW) ; digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(10, LOW); digitalWrite(9, LOW) ; } void loop() { if (digitalRead(buton) == HIGH) { // Eğer butona basılırsa motor hareket etmeye başlıyor delay(10); butonDurumu = 1 ; } if (butonDurumu == 1) { delay(10); stepmotor.step(stepadimi); } if (digitalRead(11) == HIGH && digitalRead(10) == LOW ) { // Eğer son sınır anahtarı 1 ise ilk sınır anahtarı 0 ise motor geri döner delay(10); butonDurumu = 2 ; } if (butonDurumu == 2) { delay(10); stepmotor.step(-stepadimi); butonDurumu = 3 ; } if (butonDurumu == 3 && digitalRead(10) == HIGH ) { //Eğer değişken 3 ise ve ilk sınır anahtarı basılırsa motor durur butonDurumu == 0 ; } } Kodu denedim çalışıyor. |
hocam teşekkür ederim yarın deneyecem. emeğine sağlık. |
Ufak bir kaç değişiklik yapman gerekiyor. Step motor pinlerini hazır koddan aldım buton ve swıtchlerle çakışıyor. Stepper stepmotor(stepadimi, 8, 9, 10, 11); Bu kodda 8,9,10,11 yerine yukarıda tanımlamalarda olmayan pınlerı kullan.Mesela 5-6-7-8 gibi veya direkt benim ayarladığım uçları da değişebilirsin. if (butonDurumu == 2) { delay(10); stepmotor.step(-stepadimi); butonDurumu = 3 ; } Yukarıdakı kodda delay suresını sonda ne kadar beklemesi gerekıyorsa onu yazman gerekıyor. |
#include <Stepper.h> int butonDurumu = 0; // Değişken int buton = 5 ; // Buton int s1 = 6 ; // Baslangıc sınır anahtarı int s2 = 7 ; // Bıtıs sınır anahtarı const int stepadimi = 50; Stepper stepmotor(stepadimi, 8, 9, 10, 11); void setup() { stepmotor.setSpeed(60); pinMode(5,INPUT); pinMode(7,INPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); pinMode(6,INPUT); digitalWrite(13, LOW) ; digitalWrite(12, LOW); digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, LOW) ; } void loop() { if (digitalRead(buton) == HIGH) { // Eğer butona basılırsa motor hareket etmeye başlıyor delay(10); butonDurumu = 1 ; } if (butonDurumu == 1) { delay(10); stepmotor.step(stepadimi); } if (digitalRead(7) == HIGH && digitalRead(6) == LOW ) { // Eğer son sınır anahtarı 1 ise ilk sınır anahtarı 0 ise motor geri döner delay(10); butonDurumu = 2 ; } if (butonDurumu == 2) { delay(500); stepmotor.step(-stepadimi); butonDurumu = 3 ; } if (butonDurumu == 3 && digitalRead(6) == HIGH ) { //Eğer değişken 3 ise ve ilk sınır anahtarı basılırsa motor durur butonDurumu == 0 ; } } son şekli hocam |
Aynen olayı çözmüşsünüz. |
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesajda bahsedilenler: @LaOtzi