code.py
 1  # SPDX-FileCopyrightText: 2019 John Edgar Park for Adafruit Industries
 2  #
 3  # SPDX-License-Identifier: MIT
 4  
 5  # Turtle Gizmo Hilbert
 6  #==| Turtle Gizmo Setup start |========================================
 7  import board
 8  import busio
 9  import displayio
10  from adafruit_st7789 import ST7789
11  from adafruit_turtle import Color, turtle
12  displayio.release_displays()
13  spi = busio.SPI(board.SCL, MOSI=board.SDA)
14  display_bus = displayio.FourWire(spi, command=board.TX, chip_select=board.RX)
15  display = ST7789(display_bus, width=240, height=240, rowstart=80,
16                   backlight_pin=board.A3, rotation=180)
17  turtle = turtle(display)
18  #==| Turtle Gizmo Setup end |=========================================
19  
20  def hilbert2(step, rule, angle, depth, t):
21      if depth > 0:
22          a = lambda: hilbert2(step, "a", angle, depth - 1, t)
23          b = lambda: hilbert2(step, "b", angle, depth - 1, t)
24          left = lambda: t.left(angle)
25          right = lambda: t.right(angle)
26          forward = lambda: t.forward(step)
27          if rule == "a":
28              left()
29              b()
30              forward()
31              right()
32              a()
33              forward()
34              a()
35              right()
36              forward()
37              b()
38              left()
39          if rule == "b":
40              right()
41              a()
42              forward()
43              left()
44              b()
45              forward()
46              b()
47              left()
48              forward()
49              a()
50              right()
51  
52  turtle.penup()
53  
54  turtle.goto(-108, -108)
55  turtle.pendown()
56  turtle.pencolor(Color.PURPLE)
57  hilbert2(7, "a", 90, 5, turtle)
58  
59  while True:
60      pass