L293D 74HC595
- Войдите на сайт для отправки комментариев
Вс, 06/03/2016 - 23:26
После несложных манипуляций с подключением библиотеки Shift595 и небольного редактирования библиотеки AccelStepper была переписана функция setOutputPins.
На входе в функцию setOutputPins приходит это: 0b0101 (что в дальнейшем летит в регистр и включает соответственно указанные ноги).
До редактирования:
void AccelStepper::setOutputPins(uint8_t mask)
{
uint8_t numpins = 2;
if (_interface == FULL4WIRE || _interface == HALF4WIRE)
numpins = 4;
else if (_interface == FULL3WIRE || _interface == HALF3WIRE)
numpins = 3;
uint8_t i;
for (i = 0; i < numpins; i++)
digitalWrite(_pin[i], (mask & (1 << i)) ? (HIGH ^ _pinInverted[i]) : (LOW ^ _pinInverted[i]));
}
После:
void AccelStepper::setOutputPins(uint8_t mask)
{
uint8_t numpins = 2;
if (_interface == FULL4WIRE || _interface == HALF4WIRE)
numpins = 4;
else if (_interface == FULL3WIRE || _interface == HALF3WIRE)
numpins = 3;
uint8_t i;
for (i = 0; i < numpins; i++)
//Shifter.clearRegisters();
Shifter.setRegisterPin(_pin[i], (mask & (1 << i)) ? (HIGH ^ _pinInverted[i]) : (LOW ^ _pinInverted[i]));
}
Изменение работает и движок крутиться, но только немного не с той скоростью с которой крутился без сдвиговых регистров (медленнее), после изменения скорости вращения двигателя со сдвиговыми регистрами через setMaxSpeed и setAcceleration ничего кроме замедления добиться не получаеться, в чем может быть проблема?