-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Problem mit Bascom "tastenabfrage"

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    16.01.2005
    Ort
    Duisburg
    Alter
    39
    Beiträge
    35

    Problem mit Bascom "tastenabfrage"

    Anzeige

    Würde gerne bestimmte LED´s auf tastenabfrage ansteuern also drücke taste x um LED y zum leuchten zu bringen!
    Jetzt habe ich keine Ahnung mehr was ich überhaupt gemacht habe, ich glaube das sieht man auch am CODE ..
    Habe jetzt die ganze zeit rum probiert jetzt habe ich ein knoten im kopf, hilfe wer super !

    THX Dirk

    Code:
    '*********************************************************************
    
       $regfile = "m32def.dat"
       ' bei Mega 16 $regfile = "m16def.dat"
       $framesize = 32
       $swstack = 32
       $hwstack = 32
       $crystal = 16000000                                      'Quarzfrequenz
       $baud = 9600
    
    '*********************************************************************
    Declare Function Tastenabfrage() As Byte
    Declare Sub Led1()
    Declare Sub Led2()
    Declare Sub Led3()
    
    'Porta.7 = 1
    Config Pina.7 = Input                                       'Für Tastenabfrage
    Config Portc = Output
    Dim Taste As Byte
    Config Adc = Single , Prescaler = Auto
    'Portc.1 = 0
    
    Do
       'Print " Warte auf Eingabe!"
      ' Wait 10
    
       Taste = Tastenabfrage()
       If Taste <> 0 Then
    
          Select Case Taste
             Case 1
                Call Led1
             Case 2
                Call Led2
             Case 3
                Call Led3
            End Select
            Sound Portd.7 , 400 , 500                           'BEEP
       Wait 10
       End If
       Wait 10
       Loop
          End
    
    
    Sub Led1
         Portc.3 = 1
         Print "LED1 ist an"
       End Sub
    
    Sub Led2
         Portc.3 = 1
         Print "LED1 ist an"
       End Sub
    
     Sub Led3
         Portc.3 = 1
         Print "LED1 ist an"
       End Sub
    Ich weiß sieht ganz schön Besch... aus .!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.06.2006
    Beiträge
    151
    Bei deinen Sub Led1-3 hast du immer den selben Port eingeschaltet.

    mfg Axi

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    16.01.2005
    Ort
    Duisburg
    Alter
    39
    Beiträge
    35
    Ich weiß aber das kann ja nicht das prop sein oder?

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.06.2006
    Beiträge
    151
    dir fehlt noch das Unterprogramm Tastenabfrage()

    mfg Axi

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.06.2006
    Beiträge
    151
    Code:
    'Diese Unterfunktion fragt die Tastatur am analogen Port ab 
    Function Tastenabfrage() As Byte 
    Local Ws As Word 
    
       Tastenabfrage = 0 
       Ton = 600 
       Start Adc 
       Ws = Getadc(7) 
      ' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws 
       If Ws < 500 Then 
          Select Case Ws 
             Case 400 To 450 
                Tastenabfrage = 1 
                Ton = 550 
             Case 330 To 380 
                Tastenabfrage = 2 
                Ton = 500 
             Case 260 To 305 
                Tastenabfrage = 3 
                Ton = 450 
             Case 180 To 220 
                Tastenabfrage = 4 
                Ton = 400 
             Case 90 To 130 
                Tastenabfrage = 5 
                 Ton = 350 
     '        Case Else 
    '              Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws 
          End Select 
          Sound Portd.7 , 400 , Ton                             'BEEP 
    
       End If 
    
    
    End Function
    (aus dem Beispielprogramm vom RN-Control)

    mfg Axi

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    16.01.2005
    Ort
    Duisburg
    Alter
    39
    Beiträge
    35
    Axo
    kann mir jemand den code erklären ?
    komentare reichen!

    THX

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.06.2006
    Beiträge
    151
    hast du das RN-Control Board? im groben funktioniert es so:zuerst ließt das prog den analogen Eingang ein (je nach dem welche taste gedrückt ist liegt eine andere Spannung am analogen eingang an) Die Werte die oben angegeben sind stimmen fürs RN-Control.
    Die 1. Taste liefert zb einen Wert zwischen 400 und 450. Dann schaut das Prog welche Taste gedrückt würde (mit der Select Case Anweisung) und speichert die dann (Tastenabfrage =1 bis 5). Danach gibt das Unterprog den Wert zurück (also 1-5 je nach taste). ich hoffe die erklärung stimmt und ist einigermaßen verständlich

    mfg Axi

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    16.01.2005
    Ort
    Duisburg
    Alter
    39
    Beiträge
    35
    AAaaaa
    ja habe ich!!

    Mir geht ein Licht auf oder auch zwei vielen Dank ..

    THX Dirk

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    ich habe auch so ein ähliches problem: und zwar habe ich eine unterroutine, die alle leds einschalten soll (betonung liegt auf soll), wenn die taste 3 gedrückt wird.

    und zwar:
    Code:
    Sub Leds()
    
    Config Portc = Output
    
    Portc.0 = 0
    Portc.1 = 0
    Portc.2 = 0
    Portc.3 = 0
    Portc.4 = 0
    Portc.5 = 0
    Portc.6 = 0
    Portc.7 = 0
    
    Config Portc = Input
    
    End Sub
    das programm führt diese unterroutine 100%ig aus, da ich eine print anweisung am ende eingefügt hatte, und diese ausgeführt wurde. allerdings haut das mit den leds noch nicht so hin.

    wenn ich aber diesen code nicht in eine subroutine packe, sondern im "hauptteil" des programms, also ganz oben, direkt nach "do" funktioniert alles anstandslos.

    woran könnte das liegen?

    lg
    ikarus_177

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Warum stelltst Du den Port danach wieder auf Input ?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •