1
#include "MotorShift.h"
3
void MotorShift::setup (int clockPin, int latchPin, int dataPin)
5
this->dataPin = dataPin;
6
this->clockPin = clockPin;
7
this->latchPin = latchPin;
9
pinMode(latchPin, OUTPUT);
10
pinMode(clockPin, OUTPUT);
11
pinMode(dataPin, OUTPUT);
14
void MotorShift::setCoil(int number, bool powered, uint16_t *data)
16
bitWrite(*data, number, powered == POWERED);
19
void MotorShift::setMotor(int number, bool powered, bool direction, uint16_t *data)
21
/* Motor drivers start at bit 8 (2nd register in the chain),
22
* Each driver has two bits, LOw = direction, HIGH = enable */
24
bitWrite(*data, 8 + (2 * number), true); //direction == FORWARD);
25
bitWrite(*data, 8 + (2 * number) + 1, true); //powered == POWERED);
28
void MotorShift::clear()
30
digitalWrite(dataPin, LOW);
31
for (int i = 0; i < 16; i++) {
32
digitalWrite(clockPin, LOW);
33
digitalWrite(clockPin, HIGH);
37
void MotorShift::shift(uint16_t data)
39
digitalWrite(latchPin, LOW);
41
for (int i = 15; i >= 0; i--) {
42
digitalWrite(clockPin, LOW);
43
digitalWrite(dataPin, bitRead(data, i) ? HIGH : LOW);
44
digitalWrite(clockPin, HIGH);
47
digitalWrite(latchPin, HIGH);
b'\\ No newline at end of file'