POT
POT | |
Syntax: | POT(<n>) |
Parameter | |
n: 0 oder >0 | |
Einordnung | |
Typ: | numerische Funktion |
Kontext: | Peripheriekontrolle |
Aufgabe: | ermittelt den Zustand eines Potentiometers (Paddle) |
Abkürzung: | keine (TSB: pO) |
Token: | $64 $5c (100 92) |
Verwandte Befehle | |
JOY - PENX - PENY |
Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort POT.
Typ: numerische Funktion Syntax: POT(<n>)
POT eröffnet dem Programmierer die Möglichkeit, analoge Werte in digitale umzuwandeln, wobei der C64 nicht Spannungen, sondern Widerstandswerte erwartet. Diese Widerstände, am besten regelbare in Form von Potentiometern (Paddles) von z.B. 500 kOhm, kann man über die beiden Controlports mit dem Rechner verbinden. Jeder Port bietet Anschlüsse für zwei Potis (jeweils Pins 5 und 9 der Ports), deren Informationen zwei Analog-Digital-Wandlern im C64 (genauer: im Soundchip SID des C64) zugeführt werden. Pin7 stellt jeweils die erforderliche Spannung von +5 V zur Verfügung.
Simons' Basic verzichtet auf die Option, ein zweites Paddle-Paar an Port 2 abzufragen, und gibt mit POT nur die Vorgabeeinstellung frei (Paddles/Potentiometer an Port 1). Mit ein paar POKEs könnte auch das zweite Paddle-Paar erfasst werden, dazu müsste man CIA 1 ($DC00 und $DC02, Bits 7 und 6) manipulieren.
Ein Wert von 0 in der Klammer von POT liest den Wert der Speicherstelle POTX ($D419) aus, ein Wert von 1 (oder größer) selektiert POTY ($D41A).
Beispiel[Bearbeiten | Quelltext bearbeiten]
Motorsteuerung (Positionsregelung per Potentiometer):
900 DIM b(7),c(7) 910 FOR i=0 TO 7: b(i)=2^i: c(i)=255-b(i): NEXT i 1000 LOOP 1010 PRINT AT(1,16)"Sollwert der Drehung: "; 1020 FETCH "0123456789",3,soll 1030 EXIT IF soll>max 1040 EXIT IF soll<min 1050 LOOP 1060 y=POT(1) 1065 EXIT IF soll=y 1070 IF soll<y THEN bit=0 1080 IF soll>y THEN bit=1 1090 aus=aus OR b(bit) 1095 POKE $DD01,aus 1100 y$=RIGHT$(" "+STR$(y),3) 1110 PRINT AT(1,18)"Istwert der Drehung: ";y$ 1120 aus=aus AND c(bit) 1130 POKE $DD01,aus 1140 END LOOP 1150 PRINT AT(1,16) DUP(" ",26) 1160 END LOOP
Kommentar: Hier wird mit den Potentiometern ein Roboterarm, der über den Userport ($DD01) mit dem C64 verbunden ist, in eine gewünschte Richtung bewegt (Zeilen 1050-1140).
Der Programmausschnitt ist übernommen und angepasst aus dem Buch "Experimente zur Robotik" von Roland Schulé, Franzis Verlag 1988, ISBN 3-7723-9461-2.
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE