Skip to content

Commit baf17e5

Browse files
author
sasilva1998
committed
errores de clase
1 parent f38bf31 commit baf17e5

File tree

1 file changed

+126
-128
lines changed

1 file changed

+126
-128
lines changed

ov2640.py

Lines changed: 126 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -8,155 +8,155 @@
88
import gc
99

1010
class ov2640(object):
11-
def __init__(self, sclpin=22, sdapin=21, cspin=15, sckpin=14, mosipin=13, misopin=12, resolution=OV2640_320x240_JPEG, IMAGEDECODE=OV2640_YUV422):
11+
def __init__(self, sclpin=22, sdapin=21, cspin=15, sckpin=14, mosipin=13, misopin=12, resolution=OV2640_320x240_JPEG, IMAGEDECODE=OV2640_YUV422):
1212

13-
gc.enable()
13+
gc.enable()
1414

1515
#I2C pins
16-
self.sclpin=sclpin
17-
self.sdapin=sdapin
18-
self.cspin=cspin
16+
self.sclpin=sclpin
17+
self.sdapin=sdapin
18+
self.cspin=cspin
1919

2020
#SPI pins
2121
self.sckpin=sckpin
2222
self.mosipin=mosipin
2323
self.misopin=misopin
2424

25-
self.standby=False #variable para control de estado de camara
25+
self.standby=False #variable para control de estado de camara
2626

2727
#iniciacion de buses para la comunicacion
28-
self.hspi = machine.SPI(1, baudrate=80000000, polarity=0, phase=0, sck=machine.Pin(self.sckpin), mosi=machine.Pin(self.mosipin), miso=machine.Pin(self.misopin))
29-
self.i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21), freq=1000000)
30-
self.hspi.init(baudrate=2000000)
28+
self.hspi = machine.SPI(1, baudrate=80000000, polarity=0, phase=0, sck=machine.Pin(self.sckpin), mosi=machine.Pin(self.mosipin), miso=machine.Pin(self.misopin))
29+
self.i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21), freq=1000000)
30+
self.hspi.init(baudrate=2000000)
3131

3232
#cs pin para la comunicacion spi, tener en cuenta que este puede ser cualquier gpio
33-
self.cspin = machine.Pin(self.cspin, machine.Pin.OUT)
34-
self.cspin.value(1)
33+
self.cspin = machine.Pin(self.cspin, machine.Pin.OUT)
34+
self.cspin.value(1)
3535

3636
#deteccion de la camara
37-
addrs = self.i2c.scan()
38-
print('ov2640_init: devices detected on on i2c:')
39-
for a in addrs:
40-
print('0x%x' % a)
41-
time.sleep(1)
37+
addrs = self.i2c.scan()
38+
print('ov2640_init: devices detected on on i2c:')
39+
for a in addrs:
40+
print('0x%x' % a)
41+
time.sleep(1)
4242

4343

44-
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
45-
# initiate system reset
46-
self.i2c.writeto_mem(SENSORADDR, 0x12, b'\x80')
44+
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
45+
# initiate system reset
46+
self.i2c.writeto_mem(SENSORADDR, 0x12, b'\x80')
4747

48-
# let it come up
49-
time.sleep_ms(100)
48+
# let it come up
49+
time.sleep_ms(100)
5050

51-
# jpg init registers
52-
cam_write_register_set(self.i2c, SENSORADDR, OV2640_JPEG_INIT)
53-
cam_write_register_set(self.i2c, SENSORADDR, IMAGEDECODE)
54-
cam_write_register_set(self.i2c, SENSORADDR, OV2640_JPEG)
51+
# jpg init registers
52+
cam_write_register_set(self.i2c, SENSORADDR, OV2640_JPEG_INIT)
53+
cam_write_register_set(self.i2c, SENSORADDR, IMAGEDECODE)
54+
cam_write_register_set(self.i2c, SENSORADDR, OV2640_JPEG)
5555

56-
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
57-
self.i2c.writeto_mem(SENSORADDR, 0x15, b'\x00')
56+
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
57+
self.i2c.writeto_mem(SENSORADDR, 0x15, b'\x00')
5858

59-
cam_write_register_set(i2c, SENSORADDR, OV2640_1600x1200_JPEG)
60-
61-
cam_spi_write(b'\x00', b'\x55', self.hspi, self.cspin)
62-
res = cam_spi_read(b'\x00', self.hspi, self.cspin)
63-
print(res)
64-
print("ov2640 init: register test return bytes %s" % ubinascii.hexlify(res))
65-
if (res == b'\x55'):
66-
print("ov2640_init: register test successful")
67-
else:
68-
print("ov2640_init: register test failed!")
69-
time.sleep_us(10)
70-
71-
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
72-
# check the camera type
73-
time.sleep_us(50)
74-
parta = self.i2c.readfrom_mem(SENSORADDR, 0x0a, 1)
75-
time.sleep_us(50)
76-
partb = self.i2c.readfrom_mem(SENSORADDR, 0x0b, 1)
77-
if ((parta != b'\x26') or (partb != b'\x42')):
78-
print("ov2640_init: device type does not appear to be ov2640, bytes: %s/%s" % \
79-
(ubinascii.hexlify(parta), ubinascii.hexlify(partb)))
80-
else:
81-
print("ov2640_init: device type looks correct, bytes: %s/%s" % \
82-
(ubinascii.hexlify(parta), ubinascii.hexlify(partb)))
83-
time.sleep_us(50)
84-
85-
86-
def capture_to_file(self, fn, overwrite):
87-
# bit 0 - clear FIFO write done flag
88-
cam_spi_write(b'\x04', b'\x01', self.hspi, self.cspin)
89-
90-
# bit 1 - start capture then read status
91-
cam_spi_write(b'\x04', b'\x02', self.hspi, self.cspin)
92-
time.sleep_ms(10)
93-
94-
# read status
59+
cam_write_register_set(self.i2c, SENSORADDR, OV2640_1600x1200_JPEG)
60+
61+
cam_spi_write(b'\x00', b'\x55', self.hspi, self.cspin)
62+
res = cam_spi_read(b'\x00', self.hspi, self.cspin)
63+
print(res)
64+
print("ov2640 init: register test return bytes %s" % ubinascii.hexlify(res))
65+
if (res == b'\x55'):
66+
print("ov2640_init: register test successful")
67+
else:
68+
print("ov2640_init: register test failed!")
69+
time.sleep_us(10)
70+
71+
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
72+
# check the camera type
73+
time.sleep_us(50)
74+
parta = self.i2c.readfrom_mem(SENSORADDR, 0x0a, 1)
75+
time.sleep_us(50)
76+
partb = self.i2c.readfrom_mem(SENSORADDR, 0x0b, 1)
77+
if ((parta != b'\x26') or (partb != b'\x42')):
78+
print("ov2640_init: device type does not appear to be ov2640, bytes: %s/%s" % \
79+
(ubinascii.hexlify(parta), ubinascii.hexlify(partb)))
80+
else:
81+
print("ov2640_init: device type looks correct, bytes: %s/%s" % \
82+
(ubinascii.hexlify(parta), ubinascii.hexlify(partb)))
83+
time.sleep_us(50)
84+
85+
86+
def capture_to_file(self, fn, overwrite):
87+
# bit 0 - clear FIFO write done flag
88+
cam_spi_write(b'\x04', b'\x01', self.hspi, self.cspin)
89+
90+
# bit 1 - start capture then read status
91+
cam_spi_write(b'\x04', b'\x02', self.hspi, self.cspin)
92+
time.sleep_ms(10)
93+
94+
# read status
95+
res = cam_spi_read(b'\x41', self.hspi, self.cspin)
96+
cnt = 0
97+
#if (res == b'\x00'):
98+
# print("initiate capture may have failed, return byte: %s" % ubinascii.hexlify(res))
99+
100+
# read the image from the camera fifo
101+
while True:
95102
res = cam_spi_read(b'\x41', self.hspi, self.cspin)
96-
cnt = 0
97-
#if (res == b'\x00'):
98-
# print("initiate capture may have failed, return byte: %s" % ubinascii.hexlify(res))
99-
100-
# read the image from the camera fifo
101-
while True:
102-
res = cam_spi_read(b'\x41', self.hspi, self.cspin)
103-
mask = b'\x08'
104-
if (res[0] & mask[0]):
105-
break
106-
#print("continuing, res register %s" % ubinascii.hexlify(res))
107-
time.sleep_ms(10)
108-
cnt += 1
109-
#print("slept in loop %d times" % cnt)
110-
111-
# read the fifo size
112-
b1 = cam_spi_read(b'\x44', self.hspi, self.cspin)
113-
b2 = cam_spi_read(b'\x43', self.hspi, self.cspin)
114-
b3 = cam_spi_read(b'\x42', self.hspi, self.cspin)
115-
val = b1[0] << 16 | b2[0] << 8 | b3[0]
116-
print("ov2640_capture: %d bytes in fifo" % val)
117-
gc.collect()
118-
119-
bytebuf = [ 0, 0 ]
120-
picbuf = [ b'\x00' ] * PICBUFSIZE
121-
l = 0
122-
bp = 0
123-
if (overwrite == True):
124-
#print("deleting old file %s" % fn)
125-
try:
126-
uos.remove(fn)
127-
except OSError:
128-
pass
129-
while ((bytebuf[0] != b'\xd9') or (bytebuf[1] != b'\xff')):
130-
bytebuf[1] = bytebuf[0]
131-
if (bp > (len(picbuf) - 1)):
132-
#print("appending buffer to %s" % fn)
133-
appendbuf(fn, picbuf, bp)
134-
bp = 0
135-
136-
bytebuf[0] = cam_spi_read(b'\x3d', self.hspi, self.cspin)
137-
l += 1
138-
#print("read so far: %d, next byte: %s" % (l, ubinascii.hexlify(bytebuf[0])))
139-
picbuf[bp] = bytebuf[0]
140-
bp += 1
141-
if (bp > 0):
142-
#print("appending final buffer to %s" % fn)
103+
mask = b'\x08'
104+
if (res[0] & mask[0]):
105+
break
106+
#print("continuing, res register %s" % ubinascii.hexlify(res))
107+
time.sleep_ms(10)
108+
cnt += 1
109+
#print("slept in loop %d times" % cnt)
110+
111+
# read the fifo size
112+
b1 = cam_spi_read(b'\x44', self.hspi, self.cspin)
113+
b2 = cam_spi_read(b'\x43', self.hspi, self.cspin)
114+
b3 = cam_spi_read(b'\x42', self.hspi, self.cspin)
115+
val = b1[0] << 16 | b2[0] << 8 | b3[0]
116+
print("ov2640_capture: %d bytes in fifo" % val)
117+
gc.collect()
118+
119+
bytebuf = [ 0, 0 ]
120+
picbuf = [ b'\x00' ] * PICBUFSIZE
121+
l = 0
122+
bp = 0
123+
if (overwrite == True):
124+
#print("deleting old file %s" % fn)
125+
try:
126+
uos.remove(fn)
127+
except OSError:
128+
pass
129+
while ((bytebuf[0] != b'\xd9') or (bytebuf[1] != b'\xff')):
130+
bytebuf[1] = bytebuf[0]
131+
if (bp > (len(picbuf) - 1)):
132+
#print("appending buffer to %s" % fn)
143133
appendbuf(fn, picbuf, bp)
144-
print("read %d bytes from fifo, camera said %d were available" % (l, val))
145-
return (l)
146-
147-
def standby(self):
148-
# register set select
149-
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
150-
# standby mode
151-
self.i2c.writeto_mem(SENSORADDR, 0x09, b'\x10')
152-
self.standby = True
153-
154-
def wake(self):
155-
# register set select
156-
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
157-
# standby mode
158-
self.i2c.writeto_mem(SENSORADDR, 0x09, b'\x00')
159-
self.standby = False
134+
bp = 0
135+
136+
bytebuf[0] = cam_spi_read(b'\x3d', self.hspi, self.cspin)
137+
l += 1
138+
#print("read so far: %d, next byte: %s" % (l, ubinascii.hexlify(bytebuf[0])))
139+
picbuf[bp] = bytebuf[0]
140+
bp += 1
141+
if (bp > 0):
142+
#print("appending final buffer to %s" % fn)
143+
appendbuf(fn, picbuf, bp)
144+
print("read %d bytes from fifo, camera said %d were available" % (l, val))
145+
return (l)
146+
147+
def standby(self):
148+
# register set select
149+
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
150+
# standby mode
151+
self.i2c.writeto_mem(SENSORADDR, 0x09, b'\x10')
152+
self.standby = True
153+
154+
def wake(self):
155+
# register set select
156+
self.i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
157+
# standby mode
158+
self.i2c.writeto_mem(SENSORADDR, 0x09, b'\x00')
159+
self.standby = False
160160

161161
def cam_write_register_set(i, addr, set):
162162
for el in set:
@@ -187,8 +187,6 @@ def appendbuf(fn, picbuf, howmany):
187187
print("error writing file")
188188
print("write %d bytes from buffer" % howmany)
189189

190-
191-
192190
def cam_spi_read(address, hspi, cspin):
193191
cspin.value(0)
194192
maskbits = b'\x7f'

0 commit comments

Comments
 (0)