| Line 5... |
Line 5... |
| 5 |
# |
5 |
# |
| 6 |
# Program uses MLAB Python modules library from https://github.com/MLAB-project/pymlab |
6 |
# Program uses MLAB Python modules library from https://github.com/MLAB-project/pymlab |
| 7 |
|
7 |
|
| 8 |
|
8 |
|
| 9 |
#uncomment for debbug purposes |
9 |
#uncomment for debbug purposes |
| 10 |
#import logging |
10 |
import logging |
| 11 |
#logging.basicConfig(level=logging.DEBUG) |
11 |
logging.basicConfig(level=logging.DEBUG) |
| 12 |
|
12 |
|
| 13 |
import sys |
13 |
import sys |
| 14 |
import time |
14 |
import time |
| 15 |
import spidev |
15 |
import spidev |
| 16 |
|
16 |
|
| Line 114... |
Line 114... |
| 114 |
def MoveWait(self, units): |
114 |
def MoveWait(self, units): |
| 115 |
' Move some distance units from current position and wait for execution ' |
115 |
' Move some distance units from current position and wait for execution ' |
| 116 |
self.Move(units) |
116 |
self.Move(units) |
| 117 |
while self.IsBusy(): |
117 |
while self.IsBusy(): |
| 118 |
pass |
118 |
pass |
| - |
|
119 |
time.sleep(0.8) |
| 119 |
|
120 |
|
| 120 |
def Float(self): |
121 |
def Float(self): |
| 121 |
' switch H-bridge to High impedance state ' |
122 |
' switch H-bridge to High impedance state ' |
| 122 |
self.spi.xfer([0xA0]) |
123 |
self.spi.xfer([0xA0]) |
| 123 |
|
124 |
|
| 124 |
def ReadStatusBit(self, bit): |
125 |
def ReadStatusBit(self, bit): |
| 125 |
' Report given status bit ' |
126 |
' Report given status bit ' |
| 126 |
self.spi.xfer([0x39]) # Read from address 0x19 (STATUS) |
127 |
self.spi.xfer([0x39]) # Get status command |
| 127 |
self.spi.xfer([0x00]) |
- |
|
| 128 |
data = self.spi.readbytes(2) # 1st byte |
128 |
data = self.spi.readbytes(1) # 1st byte |
| 129 |
#self.spi.xfer([0x00]) |
- |
|
| 130 |
#data1 = self.spi.readbytes(1) # 2nd byte |
129 |
data = data + (self.spi.readbytes(1)) # 1st byte |
| 131 |
#print hex(data0), hex(data1) |
130 |
print data |
| 132 |
if bit > 7: # extract requested bit |
131 |
if bit > 7: # extract requested bit |
| 133 |
OutputBit = (data[0] >> (bit - 8)) & 1 |
132 |
OutputBit = (data[0] >> (bit - 8)) & 1 |
| 134 |
else: |
133 |
else: |
| 135 |
OutputBit = (data[1] >> bit) & 1 |
134 |
OutputBit = (data[1] >> bit) & 1 |
| 136 |
return OutputBit |
135 |
return OutputBit |
| 137 |
|
136 |
|
| - |
|
137 |
|
| 138 |
|
138 |
|
| 139 |
def IsBusy(self): |
139 |
def IsBusy(self): |
| 140 |
""" Return True if tehre are motion """ |
140 |
""" Return True if tehre are motion """ |
| 141 |
if self.ReadStatusBit(1) == 1: |
141 |
if self.ReadStatusBit(1) == 1: |
| 142 |
return False |
142 |
return False |
| Line 151... |
Line 151... |
| 151 |
|
151 |
|
| 152 |
try: |
152 |
try: |
| 153 |
print "SPI configuration.." |
153 |
print "SPI configuration.." |
| 154 |
spi = spidev.SpiDev() # create a spi object |
154 |
spi = spidev.SpiDev() # create a spi object |
| 155 |
spi.open(0, 0) # open spi port 0, device (CS) 0 |
155 |
spi.open(0, 0) # open spi port 0, device (CS) 0 |
| 156 |
spi.mode = 1 |
156 |
spi.mode = 0b01 |
| 157 |
spi.lsbfirst = False |
157 |
spi.lsbfirst = False |
| 158 |
spi.bits_per_word = 8 |
158 |
spi.bits_per_word = 8 |
| 159 |
spi.cshigh = False |
159 |
spi.cshigh = False |
| 160 |
#spi.SPI_config(spi.I2CSPI_MSB_FIRST| spi.I2CSPI_MODE_CLK_IDLE_HIGH_DATA_EDGE_TRAILING| spi.I2CSPI_CLK_461kHz) |
160 |
#spi.SPI_config(spi.I2CSPI_MSB_FIRST| spi.I2CSPI_MODE_CLK_IDLE_HIGH_DATA_EDGE_TRAILING| spi.I2CSPI_CLK_461kHz) |
| 161 |
time.sleep(1) |
161 |
time.sleep(1) |
| Line 168... |
Line 168... |
| 168 |
|
168 |
|
| 169 |
for i in range(5): |
169 |
for i in range(5): |
| 170 |
print i |
170 |
print i |
| 171 |
X.MoveWait(DISTANCE) # move forward and wait for motor stop |
171 |
X.MoveWait(DISTANCE) # move forward and wait for motor stop |
| 172 |
print "Changing direction of rotation.." |
172 |
print "Changing direction of rotation.." |
| - |
|
173 |
time.sleep(1.1) |
| 173 |
X.MoveWait(-DISTANCE) # move backward and wait for motor stop |
174 |
X.MoveWait(-DISTANCE) # move backward and wait for motor stop |
| 174 |
print "Changing direction of rotation.." |
175 |
print "Changing direction of rotation.." |
| 175 |
|
- |
|
| - |
|
176 |
time.sleep(1.1) |
| 176 |
X.Float() # release power |
177 |
X.Float() # release power |
| 177 |
|
178 |
|
| 178 |
|
179 |
|
| 179 |
finally: |
180 |
finally: |
| 180 |
print "stop" |
181 |
print "stop" |