code.py
 1  # SPDX-FileCopyrightText: Copyright (c) 2022 Jeff Epler for Adafruit Industries
 2  #
 3  # SPDX-License-Identifier: Unlicense
 4  
 5  """
 6  This demo is designed for the Kaluga development kit version 1.3 with the
 7  ILI9341 display.
 8  """
 9  
10  import struct
11  import board
12  import esp32_camera
13  import qrio
14  
15  print("Initializing camera")
16  cam = esp32_camera.Camera(
17      data_pins=board.CAMERA_DATA,
18      external_clock_pin=board.CAMERA_XCLK,
19      pixel_clock_pin=board.CAMERA_PCLK,
20      vsync_pin=board.CAMERA_VSYNC,
21      href_pin=board.CAMERA_HREF,
22      pixel_format=esp32_camera.PixelFormat.RGB565,
23      frame_size=esp32_camera.FrameSize.R240X240,
24      i2c=board.I2C(),
25      external_clock_frequency=20_000_000,
26      framebuffer_count=2)
27  cam.vflip = True
28  cam.hmirror = True
29  
30  board.DISPLAY.auto_refresh = False
31  display_bus = board.DISPLAY.bus
32  
33  print(cam.width, cam.height)
34  qrdecoder = qrio.QRDecoder(cam.width, cam.height)
35  
36  print(qrdecoder.width, qrdecoder.height)
37  #raise SystemExit
38  
39  ow = (board.DISPLAY.width - cam.width) // 2
40  oh = (board.DISPLAY.height - cam.height) // 2
41  display_bus.send(42, struct.pack(">hh", ow, cam.width + ow - 1))
42  display_bus.send(43, struct.pack(">hh", oh, cam.height + ow - 1))
43  
44  while True:
45      frame = cam.take(1)
46      display_bus.send(44, frame)
47      for row in qrdecoder.decode(frame, qrio.PixelPolicy.RGB565_SWAPPED):
48          payload = row.payload
49          try:
50              payload = payload.decode("utf-8")
51          except UnicodeError:
52              payload = str(payload)
53          print(payload)
54      print(end=".")