Ich komm mal wieder nicht klar mit eigentlich einfachsten Sachen. Ich habe mir mal eine Funktion geschrieben zum Entprellen von einem GPIO. Nun wollte ich die für was anderes übernehmen, hat sich aber als ungeeignet erwiesen.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
Ein Problem was mir vorher nie aufgefallen war, es funktioniert nur für einen einzigen GPIO global, man darf die Funktion nicht mit verschiedenen GPIO im Code nutzen.
Zweitens sind es diesmal keine GPIO sondern bereits entprellte Software Buttons. Jetzt hab ich mir gedacht ich jage das durch ChatGPT, soll ja mittlerweile ganz brauchbar sein. Es hat vorgeschlagen die Buttons zu tracken, dazu sollte ich für jeden Funktionsaufruf einen Index als zweites Argument mitgeben. Das wollte ich nicht, stattdessen soll es ein Zeiger sein, anhand dessen Adresse eine eindeutige Identifizierung möglich ist.
Nun stehen die Buttons leider in einem Struct. Also erstmal neue globale Variablen angelegt und somit Redundanz - egal sei's drum.
Herausgekommen ist nun sowas. Es ist leider zu kompliziert und ich verstehs nicht.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
Es kommen aber noch Anforderungen hinzu. Einerseits soll sich der Software-Button wie jede Taste einer PC-Tastatur anfühlen, also sofort anschlagen als Single und nach kurzer Verzögerung als Longpress. Zusätzlich soll aber eine "feststeckende" Taste erkannt und automatisch ignoriert werden. Nach Ablauf der Totzeit soll sie wieder erlaubt sein.
Was den Singlepress angeht, so soll dieser erst nach 50 ms gültig sein. Schnelles tippen soll aber ebenfalls erlaubt sein. Keine Ahnung wie das mit dem Longpress vereinbar ist. Ich möchte später ein Tastenpaar auswerten; eine Taste wird gedrückt gehalten, währendessen die andere mehrmals getippt.
Einige Anforderungen widersprechen sich. Ich habe nun so viel gelesen und einen Knoten im Kopf.
Aber die Fähigkeit der Leser sinkt, heute muss man wohl Kindersprech in Teletubbisvideos für ein nicht weiter erklärtes 'shield', dass die Internas versteckt, anbieten damit man die Leser auf Legoniveau nicht überfordert.
Gibt's eine Arduino Library die das alles kann? Muss aber für Software-Buttons sein, nicht für GPIO