-
Notifications
You must be signed in to change notification settings - Fork 0
/
wiringPi.py
128 lines (104 loc) · 3.02 KB
/
wiringPi.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
from __future__ import print_function
import wiringpi as wiringpi
import time
from shapes import *
"""
MR = GPIO18, pin12; Master Clear, active low
DS = GPIO17, pin11; Serial data input
OE = GPIO27, pin13; Output Enable, active low
ST_CP = GPIO22, pin15; latch 22pF ceramic capacitor to GND
SH_CP = GPI23, pin16; clock
"""
GPIOflag = True
ppl=140
if not GPIOflag:
print("Using physical pin numbers")
wiringpi.wiringPiSetup() #physical pin numbering
masterResetPin = 12
outputEnablePin = 13
serialDataPin = 11
latchPin = 15
clockPin = 16
if GPIOflag:
print("Using GPIO pin numbers")
wiringpi.wiringPiSetupGpio()
masterResetPin = 18
outputEnablePin = 27
serialDataPin = 17
latchPin = 22
clockPin = 23
channels_in_use = [masterResetPin, outputEnablePin, serialDataPin, latchPin, clockPin]
for channel in channels_in_use:
wiringpi.pinMode(channel, 1) # Set pins to OUTPUT
wiringpi.digitalWrite(channel, 0)
print("channel: ", channel, " set up.")
def reset():
wiringpi.digitalWrite(masterResetPin, 1)
wiringpi.delay(1)
wiringpi.digitalWrite(masterResetPin, 1)
def latch():
wiringpi.digitalWrite(latchPin, 1)
#time.sleep(0.01)
#wiringpi.delayMicroseconds(10)
wiringpi.digitalWrite(latchPin, 0)
def shiftOut(Point):
"""
Sends point coodinates out to an 8-bit DAC. X as high byte, Y as low byte.
Args:
Point: Point object
Returns: None
"""
x=Point.get_constrained_x()
y=Point.get_constrained_y()
binary_representation = bin(x)[2:].zfill(8)+bin(y)[2:].zfill(8)
for bit in binary_representation:
wiringpi.digitalWrite(serialDataPin, int(bit))
wiringpi.delayMicroseconds(10)
wiringpi.digitalWrite(clockPin, 1)
wiringpi.digitalWrite(clockPin, 0)
latch()
def shiftShape(shape):
for p in shape.get_points():
shiftOut(p)
def shiftShape2(shape):
for p in shape.get_points():
shiftOut2(p)
def shiftOut2(Point):
x=Point.get_constrained_x()
y=Point.get_constrained_y()
wiringpi.shiftOut(serialDataPin,clockPin,1,y)
wiringpi.shiftOut(serialDataPin,clockPin,1,x)
latch()
reset()
p0=Point(0,0)
p1=Point(0,255)
p2=Point(255,255)
p3=Point(255,0)
pc=Point(127,127)
l=Shape(pc)
try:
print("In the main loop...")
l=Line(p0, p1, ppl)
l+=Line(p1, p2, ppl)
l+=Line(p2, p3, ppl)
l+=Line(p3, p0, ppl)
l+=Line(p0, p2, ppl)
l+=Line(p1, p3, ppl)
l=imageToShape("testimage.tif")
while l.get_n_points() > 900:
l.remove_random_point()
while True:
#l = imageToShape("testimage.tif")
#c0 = Circle(pc, 20, 12)
#c=Circle(pc,127, 60)
for i in xrange(0, 10):
#pA = Point(0,i)
#pB = Point(i,i)
#c = Square(l, i+1,i+1, i+4)
#c = c*c0
#b=Bezier(p0,c.get_random_point(), c.get_random_point(), c.get_random_point(), 60)
shiftShape2(l)
except KeyboardInterrupt:
wiringpi.digitalWrite(outputEnablePin, 1)
reset()
print("Exiting...")