Тормозит шаговый мотор при повороте энкодера
- Войдите на сайт для отправки комментариев
Пт, 10/11/2017 - 15:40
#include <iarduino_Encoder_tmr.h>
iarduino_Encoder_tmr enc(11,12);
#include <CustomStepper.h>
CustomStepper stepper(4, 5, 6, 7);
void setup(){
Serial.begin(9600);
enc.begin();
}
void loop(){
int i=enc.read();
if(i){
if(i==encLEFT ){Serial.println("<");
stepper.setDirection(CCW);
stepper.rotateDegrees(3);
}
if(i==encRIGHT){Serial.println(">");
stepper.setDirection(CW);
stepper.rotateDegrees(3);
}
stepper.run();
}
//stepper.run();
}
Здравствуйте. При повороте энкодера шаговфый мотор тормозит. Как я поняла происходит это из-за задержек?
Если раскоментировать строку с //stepper.run();, а сверху убрать, то программа не работает.
Как исправить?
Прочитала
Библиотека iarduino_Encoder_tmr использует второй аппаратный таймер,
Как остановить работу энкодера пока не будет осуществлен поворот шагового мотора?
#include <iarduino_Encoder_tmr.h> iarduino_Encoder_tmr enc(11,12); #include <CustomStepper.h> CustomStepper stepper(4, 5, 6, 7); int qw=0; void setup(){ Serial.begin(9600); enc.begin(); } void loop(){ if (qw==0){ int i=enc.read(); if(i){ if(i==encLEFT ){ Serial.println("<"); stepper.setDirection(CCW); stepper.rotateDegrees(30); qw=1; } if(i==encRIGHT){Serial.println(">"); stepper.setDirection(CW); stepper.rotateDegrees(30); qw=1; } } } if (qw==1){ stepper.run(); if (stepper.isDone()){qw=0;} } }Работает. Правильно ли я сделала? Или оптимальнее сделать иначе?
Как остановить работу энкодера пока не будет осуществлен поворот шагового мотора?
пусть энкодер током бьёца, пока мотор проворачивается.
а на прерывания энкодер прицепить , попробуйте...