Skip to content

Commit cd0fd8f

Browse files
author
sasilva1998
committed
unos archivos de testeo
1 parent 301bd08 commit cd0fd8f

File tree

2 files changed

+241
-0
lines changed

2 files changed

+241
-0
lines changed

tests/camarauso.py

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
from ov2640_constants import *
2+
from ov2640_lores_constants import *
3+
from ov2640_hires_constants import *
4+
import machine
5+
import time
6+
import ubinascii
7+
import uos
8+
import gc
9+
10+
gc.enable()
11+
12+
def appendbuf(fn, picbuf, howmany):
13+
try:
14+
f = open(fn, 'ab')
15+
c = 1
16+
for by in picbuf:
17+
if (c > howmany):
18+
break
19+
c += 1
20+
f.write(bytes([by[0]]))
21+
f.close()
22+
except OSError:
23+
print("error writing file")
24+
print("write %d bytes from buffer" % howmany)
25+
26+
def capture_to_file(fn, overwrite):
27+
# bit 0 - clear FIFO write done flag
28+
cam_spi_write(b'\x04', b'\x01', hspi, cspin)
29+
30+
# bit 1 - start capture then read status
31+
cam_spi_write(b'\x04', b'\x02', hspi, cspin)
32+
time.sleep_ms(10)
33+
34+
# read status
35+
res = cam_spi_read(b'\x41', hspi, cspin)
36+
cnt = 0
37+
#if (res == b'\x00'):
38+
# print("initiate capture may have failed, return byte: %s" % ubinascii.hexlify(res))
39+
40+
# read the image from the camera fifo
41+
while True:
42+
res = cam_spi_read(b'\x41', hspi, cspin)
43+
mask = b'\x08'
44+
if (res[0] & mask[0]):
45+
break
46+
#print("continuing, res register %s" % ubinascii.hexlify(res))
47+
time.sleep_ms(10)
48+
cnt += 1
49+
#print("slept in loop %d times" % cnt)
50+
51+
# read the fifo size
52+
b1 = cam_spi_read(b'\x44', hspi, cspin)
53+
b2 = cam_spi_read(b'\x43', hspi, cspin)
54+
b3 = cam_spi_read(b'\x42', hspi, cspin)
55+
val = b1[0] << 16 | b2[0] << 8 | b3[0]
56+
print("ov2640_capture: %d bytes in fifo" % val)
57+
gc.collect()
58+
59+
bytebuf = [ 0, 0 ]
60+
picbuf = [ b'\x00' ] * PICBUFSIZE
61+
l = 0
62+
bp = 0
63+
if (overwrite == True):
64+
#print("deleting old file %s" % fn)
65+
try:
66+
uos.remove(fn)
67+
except OSError:
68+
pass
69+
while ((bytebuf[0] != b'\xd9') or (bytebuf[1] != b'\xff')):
70+
bytebuf[1] = bytebuf[0]
71+
if (bp > (len(picbuf) - 1)):
72+
#print("appending buffer to %s" % fn)
73+
appendbuf(fn, picbuf, bp)
74+
bp = 0
75+
76+
bytebuf[0] = cam_spi_read(b'\x3d', hspi, cspin)
77+
l += 1
78+
#print("read so far: %d, next byte: %s" % (l, ubinascii.hexlify(bytebuf[0])))
79+
picbuf[bp] = bytebuf[0]
80+
bp += 1
81+
if (bp > 0):
82+
#print("appending final buffer to %s" % fn)
83+
appendbuf(fn, picbuf, bp)
84+
print("read %d bytes from fifo, camera said %d were available" % (l, val))
85+
return (l)
86+
87+
def cam_spi_write(address, value, hspi, cspin):
88+
cspin.value(0)
89+
modebit = b'\x80'
90+
d = bytes([address[0] | modebit[0], value[0]])
91+
#print("bytes %s" % ubinascii.hexlify(d))
92+
#print (ubd.hex())
93+
hspi.write(d)
94+
cspin.value(1)
95+
96+
def cam_spi_read(address, hspi, cspin):
97+
cspin.value(0)
98+
maskbits = b'\x7f'
99+
wbuf = bytes([address[0] & maskbits[0]])
100+
hspi.write(wbuf)
101+
buf = hspi.read(1)
102+
cspin.value(1)
103+
return (buf)
104+
105+
def cam_write_register_set(i, addr, set):
106+
for el in set:
107+
raddr = el[0]
108+
val = el[1]
109+
if (raddr == 0xff and val == b'\xff'):
110+
return
111+
i.writeto_mem(SENSORADDR, raddr, val)
112+
113+
sdapin=21
114+
sclpin=22
115+
cspin=15
116+
standby = False
117+
118+
hspi = machine.SPI(1, baudrate=80000000, polarity=0, phase=0, sck=machine.Pin(14), mosi=machine.Pin(13), miso=machine.Pin(12))
119+
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21), freq=1000000)
120+
121+
# first init spi assuming the hardware spi is connected
122+
hspi.init(baudrate=2000000)
123+
124+
# chip select -- active low
125+
cspin = machine.Pin(15, machine.Pin.OUT)
126+
cspin.value(1)
127+
128+
addrs = i2c.scan()
129+
print('ov2640_init: devices detected on on i2c:')
130+
for a in addrs:
131+
print('0x%x' % a)
132+
time.sleep(1)
133+
134+
i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
135+
# initiate system reset
136+
i2c.writeto_mem(SENSORADDR, 0x12, b'\x80')
137+
138+
# let it come up
139+
time.sleep_ms(100)
140+
141+
# jpg init registers
142+
cam_write_register_set(i2c, SENSORADDR, OV2640_JPEG_INIT)
143+
cam_write_register_set(i2c, SENSORADDR, OV2640_QVGA)
144+
cam_write_register_set(i2c, SENSORADDR, OV2640_JPEG)
145+
146+
i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
147+
i2c.writeto_mem(SENSORADDR, 0x15, b'\x00')
148+
149+
cam_write_register_set(i2c, SENSORADDR, OV2640_1600x1200_JPEG)
150+
151+
cam_spi_write(b'\x00', b'\x55', hspi, cspin)
152+
res = cam_spi_read(b'\x00', hspi, cspin)
153+
print(res)
154+
print("ov2640 init: register test return bytes %s" % ubinascii.hexlify(res))
155+
if (res == b'\x55'):
156+
print("ov2640_init: register test successful")
157+
else:
158+
print("ov2640_init: register test failed!")
159+
time.sleep_us(10)
160+
161+
i2c.writeto_mem(SENSORADDR, 0xff, b'\x01')
162+
# check the camera type
163+
time.sleep_us(50)
164+
parta = i2c.readfrom_mem(SENSORADDR, 0x0a, 1)
165+
time.sleep_us(50)
166+
partb = i2c.readfrom_mem(SENSORADDR, 0x0b, 1)
167+
if ((parta != b'\x26') or (partb != b'\x42')):
168+
print("ov2640_init: device type does not appear to be ov2640, bytes: %s/%s" % \
169+
(ubinascii.hexlify(parta), ubinascii.hexlify(partb)))
170+
else:
171+
print("ov2640_init: device type looks correct, bytes: %s/%s" % \
172+
(ubinascii.hexlify(parta), ubinascii.hexlify(partb)))
173+
time.sleep_us(50)
174+
175+
i2c.writeto_mem(SENSORADDR, 0xff, b'\x00')
176+
i2c.writeto_mem(SENSORADDR, 0x7c, b'\x00')
177+
i2c.writeto_mem(SENSORADDR, 0x7d, b'\x00')
178+
i2c.writeto_mem(SENSORADDR, 0x7c, b'\x05')
179+
i2c.writeto_mem(SENSORADDR, 0x7d, b'\x80')
180+
i2c.writeto_mem(SENSORADDR, 0x7d, b'\x80')
181+
time.sleep_us(50)
182+
183+
nbytes = capture_to_file("/image.jpg",True)

tests/modoscamara.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#brillo 2
2+
time.sleep_us(50)
3+
i2c.writeto_mem(0x60, 0xff, b'x00')
4+
i2c.writeto_mem(0x60, 0x7c, b'x00')
5+
i2c.writeto_mem(0x60, 0x7d, b'x04')
6+
i2c.writeto_mem(0x60, 0x7c, b'x09')
7+
i2c.writeto_mem(0x60, 0x7d, b'x40')
8+
i2c.writeto_mem(0x60, 0x7d, b'x00')
9+
time.sleep_us(50)
10+
11+
#negativo
12+
i2c.writeto_mem(0x60, 0xff, b'x00')
13+
i2c.writeto_mem(0x60, 0x7c, b'x00')
14+
i2c.writeto_mem(0x60, 0x7d, b'x58')
15+
i2c.writeto_mem(0x60, 0x7c, b'x05')
16+
i2c.writeto_mem(0x60, 0x7d, b'x80')
17+
i2c.writeto_mem(0x60, 0x7d, b'x80')
18+
time.sleep_us(50)
19+
20+
#normal
21+
i2c.writeto_mem(0xff, 0x00);
22+
i2c.writeto_mem(0x7c 0x00);
23+
i2c.writeto_mem(0x7d, 0x00);
24+
i2c.writeto_mem(0x7c 0x05);
25+
i2c.writeto_mem(0x7d, 0x80);
26+
i2c.writeto_mem(0x7d, 0x80;
27+
28+
#brillo 0
29+
write_SCCB(0xff, 0x00);
30+
write_SCCB(0x7c, 0x00);
31+
write_SCCB(0x7d, 0x04);
32+
write_SCCB(0x7c, 0x09);
33+
write_SCCB(0x7d, 0x20);
34+
write_SCCB(0x7d, 0x00);
35+
36+
37+
38+
i2c.writeto_mem(SENSORADDR, 0xff, b'x00')
39+
i2c.writeto_mem(SENSORADDR, 0x7c, b'x00')
40+
i2c.writeto_mem(SENSORADDR, 0x7d, b'x04')
41+
i2c.writeto_mem(SENSORADDR, 0x7c, b'x09')
42+
i2c.writeto_mem(SENSORADDR, 0x7d, b'x20')
43+
i2c.writeto_mem(SENSORADDR, 0x7d, b'x00')
44+
time.sleep_us(50)
45+
i2c.writeto_mem(SENSORADDR, 0xff, b'\x00')
46+
i2c.writeto_mem(SENSORADDR, 0x7c, b'\x00')
47+
i2c.writeto_mem(SENSORADDR, 0x7d, b'\x00')
48+
i2c.writeto_mem(SENSORADDR, 0x7c, b'\x05')
49+
i2c.writeto_mem(SENSORADDR, 0x7d, b'\x80')
50+
i2c.writeto_mem(SENSORADDR, 0x7d, b'\x80')
51+
52+
i2c.writeto_mem(SENSORADDR, 0xff, b'\x00')
53+
i2c.writeto_mem(SENSORADDR, 0x7c, b'\x00')
54+
i2c.writeto_mem(SENSORADDR, 0x7d, b'\x18')
55+
i2c.writeto_mem(SENSORADDR, 0x7c, b'\x05')
56+
i2c.writeto_mem(SENSORADDR, 0x7d, b'\x80')
57+
i2c.writeto_mem(SENSORADDR, 0x7d, b'\x80')
58+
time.sleep_us(50)

0 commit comments

Comments
 (0)