72 lines
1.5 KiB
Python
72 lines
1.5 KiB
Python
# SPDX-FileCopyrightText: Copyright (c) 2023 Limor Fried for Adafruit Industries
|
|
#
|
|
# SPDX-License-Identifier: Unlicense
|
|
"""
|
|
This demo is designed for the Raspberry Pi Pico.
|
|
|
|
It shows the camera image as ASCII art on the USB REPL.
|
|
"""
|
|
|
|
|
|
import sys
|
|
import time
|
|
import busio
|
|
import board
|
|
import digitalio
|
|
import adafruit_ov5640
|
|
|
|
print("construct bus")
|
|
bus = busio.I2C(board.GP9, board.GP8)
|
|
print("construct camera")
|
|
reset = digitalio.DigitalInOut(board.GP10)
|
|
cam = adafruit_ov5640.OV5640(
|
|
bus,
|
|
data_pins=(
|
|
board.GP12,
|
|
board.GP13,
|
|
board.GP14,
|
|
board.GP15,
|
|
board.GP16,
|
|
board.GP17,
|
|
board.GP18,
|
|
board.GP19,
|
|
),
|
|
clock=board.GP11,
|
|
vsync=board.GP7,
|
|
href=board.GP21,
|
|
mclk=board.GP20,
|
|
shutdown=None,
|
|
reset=reset,
|
|
size=adafruit_ov5640.OV5640_SIZE_QQVGA,
|
|
)
|
|
print("print chip id")
|
|
print(cam.chip_id)
|
|
|
|
|
|
cam.colorspace = adafruit_ov5640.OV5640_COLOR_YUV
|
|
cam.flip_y = True
|
|
cam.flip_x = True
|
|
cam.test_pattern = False
|
|
|
|
buf = bytearray(cam.capture_buffer_size)
|
|
chars = b" .':-+=*%$#"
|
|
remap = [chars[i * (len(chars) - 1) // 255] for i in range(256)]
|
|
|
|
width = cam.width
|
|
row = bytearray(width)
|
|
|
|
print("capturing")
|
|
cam.capture(buf)
|
|
print("capture complete")
|
|
|
|
sys.stdout.write("\033[2J")
|
|
while True:
|
|
cam.capture(buf)
|
|
for j in range(0, cam.height, 2):
|
|
sys.stdout.write(f"\033[{j//2}H")
|
|
for i in range(cam.width):
|
|
row[i] = remap[buf[2 * (width * j + i)]]
|
|
sys.stdout.write(row)
|
|
sys.stdout.write("\033[K")
|
|
sys.stdout.write("\033[J")
|
|
time.sleep(0.1)
|