@CHDKLover
Der Ansatz ist korrekt, funktioniert so aber nicht; die Picaxes schlucken keine geklammerten Bedingungen/Ausdrücke (zumindest nicht die kleineren Typen wie der 20M bzw. alle ausser den X1 und X2 Typen) etc. Um Dein Beispiel lauffähig zu kriegen müsste es wie folgt umgebaut werden:
Syntax: [ Download ] [ Verstecken ]
Benutze uBasic Syntax Highlighting
main:
'Warten auf Tastendruck
DO LOOP UNTIL pin0=1 OR pin1=1 OR pin2=1 OR pin3=1 OR pin4=1 OR pin5=1 OR pin6=1 OR pin7=1
'Taste merken
let b0 = pin0
let b0 = 2*pin1 + b0
let b0 = 4*pin2 + b0
let b0 = 8*pin3 + b0
let b0 = 16*pin4 + b0
let b0 = 32*pin5 + b0
let b0 = 64*pin6 + b0
let b0 = 128*pin7 + b0
'Warten bis Taste losgelassen
DO LOOP UNTIL pin0=0 AND pin1=0 AND pin2=0 AND pin3=0 AND pin4=0 AND pin5=0 AND pin6=0 AND pin7=0
'gemerkte Teste auswerten
high 1
SELECT CASE b0
CASE 1
pause 100
case 2
pause 150
case 4
pause 200
case 8
pause 250
case 16
pause 300
case 32
pause 350
case 64
pause 400
else
'undefined
endselect
low 1
goto main
Erstellt in 0.008 Sekunden, mit GeSHi 1.0.8.9
Der Nachteil ist, dass keine Dauerfunktion (also Halten einer Taste, sinnvoll z.B. beim zoomen) möglich ist, zudem ist der Speicherbedarf etwas höher: 163 von 256 Bytes, die einzel-if Lösung benötigt mit 96 Bytes deutlich weniger; das ist allerdings unrelevant, solange der Speicher nicht benötigt wird.
Die Picaxes sind dennoch recht flexibel, auch wenn sie auf Spaghetti-Code stehen, keine Klammern mögen, nur Ganzzahlen wollen und strikt von links nach rechts rechnen...
Optimierungsmöglichkeiten gibt's hier viele, z.B. in Bezug auf die Batterielaufzeit; längere Pausen können z.B. mit nap gelöst werden, am elegantesten wäre das Ganze jedoch als Interrupt-Lösung: einfach eine Dauer-Stromsparschleife fahren und bei Tastendruck in die Auswerteschleife gehen - der 20M kann aber leider im Interrupt-Betrieb nur 5 Eingänge verwenden...