Adafruit_Learning_System_Gu.../OV5640_Breakout/CircuitPython_Pico-ascii-mirror/code.py
2023-02-15 10:31:35 -06:00

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)