PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastatur mit ccbasic ansteuern



Kay-Uwe
05.07.2004, 18:03
Hallo

wahrscheinlich entspricht meine Frage nicht dem Niveau diese Forums.
Trotzdem: Wie könnte ein Programm aussehen mit dem ich die Tastatur
so ansteuere, dass wenn man auf 1 drückt das Programm x
startet. Bsp.:

#Loop
if Taste = 1 then gosub x
goto Loop

#x

...

funkt natürlich nicht, nur was muss ich definieren und schreiben damit es
funktioniert? Verwende normale 12 Tasten Tastatur und wahrscheinl. mit ad[8].

Wie immer danke für jede Hilfe.
(hoffe, dass ich irgendwann so viel weiß um auch jemandem helfen zu können.)

Gruß Kay-Uwe

Gottfreak
05.07.2004, 20:54
du schließt eine "normale 12 Tasten Tastatur" an einen AD-Port an.
Ich nehme mal an, die einzelnen Tasten sind über unterschiedliche Widerstände an den Port angeschlossen und bilden mit einem Widerstand gegen die andere Seite der Versorgungsspannung einen Spannungsteiler, der deutlich unterschiedliche Spannungen je nach gedrückter Taste liefert. Oder wie willst du die rein hardwareseitig anschließen?
Wenn du das so machst, muss deine Abfrage etwas in der Art von
If taste >25 and taste<50 then gusub x
sein. Im Beispiel springt er, wenn am AD (Vcc/255)*25 bis (Vcc/255)*50 also knapp 0,5 bis 1 Volt anliegen. Die für die einzelnen Tasten charakteristischen Spannungen musst du aus deinem Aufbau errechnen/messen.
Definieren musst du nur am Anfang
define taste ad[8]
Während des Drückens der Taste wirst du Zwischenwerte kriegen. Du solltest also auf eine Veränderung reagieren indem du kurz wartest(dafür gibt es den Pause-Befehl) und dann den Wert abfragst.

Kay-Uwe
06.07.2004, 17:04
Hallo

dachte die ad[8] sind die Ports in der C-control für die normaler weise
die Tastatur gedacht ist. Oder welche Ports müssen angesprochen werden
bei dem in der C-contorl vorgefärtigten Portleiste für die Tastatur?
Und wie könnte ein Programm aussehen?

danke, Kay-Uwe

marcel
06.07.2004, 18:44
Hi,

ich hab bei unsrem Bot auch mehrere Programme in einem die mit Tastatur angesteuert werden können (Die Tastatur die beim Application board dabei ist hab ich hier verwendet)

Hier mal das Programm:


'################################################# ###########
'# BASIC Programm für den 1337bot #
'# Abschlussprojekt von Marcel Krüger und Kai Stroheker #
'# an der Erich Kästner Realschule Blankenloch #
'################################################# ###########

'AD Eingänge definieren
DEFINE SHARP_L AD[1]
DEFINE SHARP_R AD[2]
DEFINE LINE_L AD[3]
DEFINE LINE_R AD[4]
DEFINE LIGHT_L AD[5]
DEFINE LIGHT_R AD[6]
DEFINE keyboard AD[8]


'Digitalports definieren
DEFINE MOTOR_L_V PORT[1] 'Linker Motor, vorwärts
DEFINE MOTOR_L_R PORT[2] 'Linker Motor, rückwärts
DEFINE MOTOR_R_V PORT[3] 'Rechter Motor, vorwärts
DEFINE MOTOR_R_R PORT[4] 'Rechter Motor, rückwärts


'Auswahlmenü
#auswahl
GOSUB halt 'Motoren anhalten

BEEP 300,10,2
BEEP 400,10,2

PRINT
PRINT "===1337bot====================="
PRINT "Programmauswahl:"
PRINT "1: Linienfolgen"
PRINT "2: Ausweichen"
PRINT "3: Lichtfinden"
PRINT
PRINT "#: Zur Auswahl zurueckkehren"
PRINT "*: Programm komplett beenden"
PRINT "==============================="
PRINT
GOTO key_abfrage
auswahl


'Tastatur abfrage
#key_abfrage
SLOWMODE ON
WAIT keyboard
SLOWMODE OFF

IF keyboard = 90 THEN print "0" '0
IF keyboard = 68 THEN GOTO linienfolgen '1
IF keyboard = 152 THEN GOTO ausweichen '2
IF keyboard < 239 AND keyboard > 233 THEN GOTO lichtfinden '3
IF keyboard = 46 THEN print "4" '4
IF keyboard = 132 THEN print "5" '5
IF keyboard = 214 THEN print "6" '6
IF keyboard = 23 THEN print "7" '7
IF keyboard = 111 THEN print "8" '8
IF keyboard = 193 THEN PRINT "9" '9
IF keyboard = 0 THEN GOTO beenden '*
key_abfrage


Die Tastatur ist am AD[8]
Zuerst werden alle Ein und Ausgänge definiert, dann ein Menü ausgegeben und dann auf die Tastatur eingabe gewartet.

Das programm geht natürlich noch weiter, aber das ist der Abschnitt der hier eine rolle spielt.

Ich hoffe dir geholfen zu haben

Gruß
Marcel

Kay-Uwe
06.07.2004, 18:56
Hallo Marcel

danke, ich denke damit wird es funktionieren.
Nur wie kommts du auf diese Werte 90, 68,152...?

Fröhliche Grüße
Kay-Uwe

marcel
06.07.2004, 19:14
Hi

Ein AD eingang wandelt die Spannung ja in einen Wert zwischen 0 und 255 um.
Die Tastatur funktioniert über ein Port und jede Taste ist sozusagen über einen bestimmten Widerstand mit dem Port verbunden.

Je nachdem, wenn du jetzt z.B. 1 drückst, hat der Widerstand einen Wert von 1kOhm und du bekommst den entsprechenden Wert
Wenn du 2 drückst, hat der Widerstand einen wert von 2k und du bekommst einen entsprechend niedrigeren Wert
usw..

EDIT:

Mit so einem Programm hab ich meine Tastatur getestet:


DEFINE keyboard AD[8]

#loop
print keyboard
pause 5
GOTO loop

Wenn du dann irgendeine Taste drückst, wird dir ausgegeben was für einen Wert die Taste hat.

Kay-Uwe
07.07.2004, 07:35
Hi, marcel

danke, für die unkomplizierte Hilfe.
Mit den Informationen von dem C-control Handbuch und dem Buch
Steuern, Regeln... hatte ich die größten probleme, hir im Forum
wird es meist einfach und unkompiziert erklärt. Gibt es überhaupt
Literatur über ccBasic die für einen Anfänger geeignet wäre, hab nichts
mit guten Bewertungen im Internet gefunden.

Auf jedenfall funkt. es jetzt ohne Probleme.

Nochmal vielen dank an alle die mir geschrieben haben,
werde das Forum weiterempfehlen.

Gruß Kay-Uwe

marcel
07.07.2004, 11:45
Hi

Das C-COntrol Kompendium hier: http://free.pages.at/cyblord/amr/cc1/cc1.htm
find ich nicht schlecht, aber Bücher weiß ich im mom keine.

Ich hab auch grad erst meinen ersten Bot gebaut, in den ganz einfachen dingen kann ich schon bisschen helfen :)

Gruß
Marcel