1+ import displayio
2+ import terminalio
3+ import board
4+ import digitalio
5+ import time
6+ from adafruit_hx8357 import HX8357 # TFT Featherwing display driver
7+ import adafruit_stmpe610 # TFT Featherwing V1 touch driver
8+ from adafruit_display_text import label
9+ from adafruit_bitmap_font import bitmap_font
10+ from adafruit_button .sprite_button import SpriteButton
11+
12+ # 3.5" TFT Featherwing is 480x320
13+ displayio .release_displays ()
14+ DISPLAY_WIDTH = 480
15+ DISPLAY_HEIGHT = 320
16+
17+ # Initialize TFT Display
18+ spi = board .SPI ()
19+ tft_cs = board .D9
20+ tft_dc = board .D10
21+ display_bus = displayio .FourWire (spi , command = tft_dc , chip_select = tft_cs )
22+ display = HX8357 (display_bus , width = DISPLAY_WIDTH , height = DISPLAY_HEIGHT )
23+ display .rotation = 0
24+ _touch_flip = (False , True )
25+
26+ # Initialize 3.5" TFT Featherwing Touchscreen
27+ ts_cs_pin = digitalio .DigitalInOut (board .D6 )
28+ touchscreen = adafruit_stmpe610 .Adafruit_STMPE610_SPI (
29+ board .SPI (),
30+ ts_cs_pin ,
31+ calibration = ((231 , 3703 ), (287 , 3787 )),
32+ size = (display .width , display .height ),
33+ disp_rotation = display .rotation ,
34+ touch_flip = _touch_flip ,
35+ )
36+
37+ TEXT_WHITE = 0xFFFFFF
38+
39+ # --| Button Config |--
40+ BUTTON_WIDTH = 7 * 16
41+ BUTTON_HEIGHT = 2 * 16
42+ BUTTON_MARGIN = 5
43+
44+ # Defiine the button
45+ button = SpriteButton (
46+ x = BUTTON_MARGIN ,
47+ y = BUTTON_MARGIN ,
48+ width = BUTTON_WIDTH ,
49+ height = BUTTON_HEIGHT ,
50+ label = "MENU" ,
51+ label_font = terminalio .FONT ,
52+ label_color = TEXT_WHITE ,
53+ bmp_path = "icons/gradient_button_0.bmp" ,
54+ selected_bmp_path = "icons/gradient_button_1.bmp" ,
55+ transparent_index = 0 ,
56+ )
57+
58+ main_group = displayio .Group ()
59+ main_group .append (button )
60+ display .root_group = main_group
61+
62+ while True :
63+ p = touchscreen .touch_point
64+ if p :
65+ if button .contains (p ):
66+ if not button .selected :
67+ button .selected = True
68+ time .sleep (0.25 ) # Wait a bit so we can see the button color change
69+ print ("Button Pressed" )
70+ else :
71+ button .selected = False # When touch moves outside of button
72+ else :
73+ button .selected = False # When button is released
0 commit comments