Доброе время суток всем.
программированием никогда не занимался . лет 20 назад в школе паскаль изучал… а тут под старость появилась необходимость.
около 2-3 недель по урокам из интернета изучал программирование ардуино. так что о коде не судите строго - как понял - так написал…
нужно разобраться непосредственно с режимом ТАРГЕТ
ниже скетч - по сути движение ШД по нему меня устраивает, но как обычно есть проблемма…
при подаче питания и загрузке контролера в этом скетче таргетирование происходит по заранее установленным на потенциометрах V и U
если я правильно понимаю , когда я этот скетч вставлю в мой большой скетч, то что бы изменить угол и скорость - мне нужно будет сначала выйти из режима ТАРГЕТ затем покрутить потенциометры и снова войти в режим …
а вот как изменить скетч режима ТАРГЕТ (скетч в этом посте) что бы скорость и угол можно было менять “на горячую” т.е. ШД двигается туда сюда -мы крутим потенциометры и он юзается уже с другой скоростью и углом…
честно - моих скудных трехнедельных познаний сдесь не хватает… даже и не знаю в каком направлении копать…
* ШД крутится туда сюда со скоростью speed
* на угол tar
УГОЛ И СКОРОСТЬ можно установить потенциометрами POT_V и POT_U
*/
#define DRIVER_STEP_TIME 1 // меняем задержку на 1 мкс для драйвера ШД
#define PIN_POT_V A5 // дефайним пин потенциометра для СКОРОСТЬ
#define PIN_POT_U A4 // дефайним пин потенциометра для УГОЛ ТАРГЕТИРОВАНИЯ
#include <GyverStepper.h>
//GStepper<STEPPER4WIRE> stepper(2048, 5, 3, 4, 2);
GStepper<STEPPER2WIRE> stepper(800, 8, 9, 10);
float speed;
uint32_t tar;
void setup() {
//----------потенциометры скорости V, угла таргетирования U----------
pinMode(PIN_POT_V, INPUT); // определяем пин пот. скорости как ВЫХОД (подключение левый пин VCC, средний пин - А5, правый пин GND)
pinMode(PIN_POT_U, INPUT); // определяем пин пот. угла ВЫХОД (подключение левый пин VCC, средний пин - А4, правый пин GND)
//-------------------------------------------------------------------
speed = map(analogRead(PIN_POT_V), 0, 1023, 100, 6000); //определяем диапазоны потенцтометра скорости в шаг/сек
tar = map(analogRead(PIN_POT_U), 0, 1023, 100, 800); //определяем диапазоны пот. угла в шагах (в описании градусы но мне удобнее шаги)
// режим следования к целевй позиции
stepper.setRunMode(FOLLOW_POS);
// установка макс. скорости в шагах/сек
stepper.setMaxSpeed(speed);
// установка ускорения в шагах/сек/сек
stepper.setAcceleration(500);
}
void loop() {
// просто крутим туды-сюды
if (!stepper.tick()) {
stepper.brake();
static bool dir;
dir = !dir;
stepper.setTarget(dir ? -tar : tar);
}
}