Das Waveshare RP2040-GEEK Entwicklungsboard basiert auf dem RP2040 Mikrocontroller, mit 1.14 Zoll 65K Farb-LCD, TF-Kartensteckplatz, USB-Debugging-Downloader,
im weißen Kunststoffgehäuse. Darüber hinaus ist es ausgestattet mit einem USB-A-Interface. Es bietet verschiedene Firmware für
SWD-Port, UART-Port und I2C-Port. An der vierpoligen I2C/ADC Buchse ist der GPIO 28 nach außen geführt. Wenn Sie das mitgelieferte vieradrige
Kabel verwenden, müssen Sie die Verbindung zur Tastaturplatine (blau - GP28, rot - VCC, schwarz - Masse, gelb ungenutzt) wie im Bild gezeigt
herstellen.
Hardware
- Pico-Geek (z.B. von Botland )
- Analoges Keyboard Modul mit fünf Tasten(z.B. von Funduino )
Software
- aktuelle Firmware CircuitPython for Pico RP2040 by Raspberry Pi
Die 5 Tasten besetzen nur einen analogen Port (GP28), der auf Eingabe geschaltet wird. Die Signalauswertung erfolgt über unterschiedliche
Widerstände auf der Tastaturplatine, wodurch die Tasten am analogen Eingangspin vom Mikrocontroller ausgewertet werden können. Die Werte
werden als 16-Bit-Zahl (0-65535) für Spannungen zwischen 0V und 3,3V eingelesen. Da wir keine analogen Messwerte auswerten wollen, brauchen wir
keine Referenz-Spannung und erfassen die 16-Bit-Zahl in einem relativ großen Bereich.
Wir benutzen folgenden kurzen Programmcode, um uns die Werte in der Thonny-IDE anzusehen:
1 import time 2 import board 3 import analogio 4 5 analogin = analogio.AnalogIn(board.GP28) 6 7 while True: 8 raw = analogin.value 9 print(raw) 10 time.sleep(0.2)
Bei meinen Versuchen ergaben sich folgende Werte:
Taste 1 : raw < 500
Taste 2 : raw > 2000 und raw < 5000
Taste 3 : raw > 5000 und raw < 7000
Taste 4 : raw > 10000 und raw < 15000
Taste 5 : raw > 20000 and raw < 30000
keine Taste gedrückt: raw > 60000
Machen Sie Ihre eigenen Tests und lassen sich im Display anzeigen, welche Taste gedrückt wurde.
Los gehts mit diesem Quellcode. Als erstes werden die Bibliotheken importiert, das Display initialisiert und der GP28 als analoger Eingang
(Zeile 23) geschaltet. Die Funktion ab Zeile 25 wertet aus, welche Taste gedrückt wurde. Hier setzen Sie Ihre Werte ein, falls die von den
angegebenen abweichen. Der Rest ist, damit es auf dem Display 'schön'
aussieht.
1 import time
2 import board
3 import busio
4 import displayio
5 import terminalio
6 import fourwire
7 from adafruit_st7789 import ST7789
8 from adafruit_display_text import label
9 import analogio
10
11 # Display initialisieren
12 lcd_cs=board.GP9
13 lcd_dc=board.GP8
14 lcd_reset=board.GP12
15 # Release any resources currently in use for the displays
16 displayio.release_displays()
17 spi = busio.SPI(board.GP10, board.GP11)
18 display_bus = fourwire.FourWire(spi, command=lcd_dc, chip_select=lcd_cs, reset=lcd_reset)
19 display = ST7789(display_bus, rotation=90, width=240, height=135, rowstart=40, colstart=53)
20 main = displayio.Group()
21 display.root_group = main
22
23 analogin = analogio.AnalogIn(board.GP28)
24
25 def taste(raw, pressed):
26 if raw < 500:
27 pressed = 1
28 if raw > 2000 and raw < 5000:
29 pressed = 2
30 if raw > 5000 and raw < 7000:
31 pressed = 3
32 if raw > 10000 and raw < 15000:
33 pressed = 4
34 if raw > 20000 and raw < 30000:
35 pressed = 5
36 if raw > 60000:
37 pressed = 0
38 #print("raw = {:5d}".format(raw))
39 return pressed
40
41 # Make a background color fill
42 color_bitmap = displayio.Bitmap(display.width, display.height, 3)
43 color_palette = displayio.Palette(3)
44 color_palette[0] = 0x660088
45 color_palette[1] = 0x000000
46 color_palette[2] = 0xffffff
47 bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
48 main.append(bg_sprite)
49
50 label = label.Label(font = terminalio.FONT, text="", color=0xffffff, scale=3, line_spacing=0.9)
51 text = displayio.Group(x=30, y= 60)
52 text.append(label)
53 main.append(text)
54
55 pressed = 0
56
57 while True:
58 raw = analogin.value
59 pressed = taste(raw, pressed)
60 if pressed == 0:
61 label.text = "Pico - Geek\n Tastatur"
62 else:
63 label.text = " Taste " + str(pressed)
64 time.sleep(0.2)
So weit für den Augenblick. Mir fällt bestimmt, genau wie Ihnen, demnächst eine Anwendung dazu ein.
Viel Spass und Erfolg beim Ausprobieren.
Viel Spass und Erfolg beim Ausprobieren.
