- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Problem mit Bascom "tastenabfrage"

  1. #11
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    30
    Beiträge
    601
    Anzeige

    Powerstation Test
    das stand bei mir so im beispielprogramm, ich wollte es nur so umändern, dass es kein lauflicht erzeugt, sondern dass nur das alle leds dauerhaft leuchten.
    Code:
    'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
    Sub Lauflicht()
    
       Config Portc = Output
       Portd = 0
       For N = 1 To 10
          For I = 0 To 7
             Portc.i = 0
             Waitms 100
             Portc.i = 1
          Next I
       Next N
       Config Portc = Input
    End Sub
    also hab ich einfach die schleifen rausgenommen und durch die entsprechenden anweisungen ersetzt.

    lg
    ikarus_177

  2. #12
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    30
    Beiträge
    601
    so, habs jetzt mit einer goto - Anweisung hinbekommen:

    Code:
    '###################################################
    'rncontroltest.BAS
    'für
    'RoboterNetz Board RN-Control ab Version 1.1
    'Das neue preiswerte Controllerboard zum experimentieren
    '
    'Aufgabe:
    ' Dieses testprogramm testet gleich mehrere Eigenschaften auf dem Board
    ' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
    ' Taste 1: Zeigt Batteriespannung über RS232 an
    ' Taste 2: Angeschlossene Motoren beschleunigen und abbremsen
    ' Taste 3: Einige male Lauflicht über LED´s anzeigen. Am I2C-Bus
    '          darf in diesem Moment nichts angeschlossen sein
    ' Taste 4: Zeigt analoge Messwerte an allen Port A PIN´s über RS232 an
    ''Taste 5: Zeigt digitalen I/O Zustand von PA0 bis PA5 an
    
    
    ' Ser gut kann man aus dem Demo auch entnehmen wie Sound ausgegeben wird,
    ' wie Tasten abgefragt werden und wie Subroutinen und Funktionen angelegt werden
    
    'Autor: Frank
    'Weitere Beispiele und Beschreibung der Hardware
    'unter http://www.Roboternetz.de oder robotikhardware.de
    '#######################################################
    
    
    
    Declare Sub Batteriespannung()
    Declare Sub Fehler()
    Declare Function Tastenabfrage() As Byte
    
    
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    
    
    Dim I As Integer
    Dim N As Integer
    Dim Ton As Integer
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 9600
    
    Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
    
    Config Pina.7 = Input                                       'Für Tastenabfrage
    Porta.7 = 1                                                 'Pullup Widerstand ein
    
    
    Const Ref = 5 / 1023                                        'Für Batteriespannungsberechnung
    
    Dim Taste As Byte
    Dim Volt As Single
    
    ' Für Motorentest
    'Ports für linken Motor
    Config Pinc.6 = Output                                      'Linker Motor Kanal 1
    Config Pinc.7 = Output                                      'Linker Motor Kanal 2
    Config Pind.4 = Output                                      'Linker Motor PWM
    'Ports für rechten Motor
    Config Pinb.0 = Output                                      'Rechter Motor Kanal 1
    Config Pinb.1 = Output                                      'Rechter Motor Kanal 2
    Config Pind.5 = Output                                      'Rechter Motor PWM
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    Pwm1a = 0
    Pwm1b = 0
    Tccr1b = Tccr1b Or &H02                                     'Prescaler = 8
    
    
    
    
    
    I = 0
    Sound Portd.7 , 400 , 450                                   'BEEP
    Sound Portd.7 , 400 , 250                                   'BEEP
    Sound Portd.7 , 400 , 450                                   'BEEP
    
    '-------------------------------------------------------------------------------
    
    Do
    
    
      Main:
    
      Taste = Tastenabfrage()
       If Taste <> 0 Then
    
          Select Case Taste
             Case 1
                Call Batteriespannung                           'Taste 1 Zeigt Bateriespannung über RS232 an
             Case 2
                Call Fehler                                     'Taste 2 Motoren beschleunigen und abbremsen
             Case 3
                Goto Leds                                       'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
             Case 4
                Call Fehler                                     'Zeigt Messwerte an allen Port A PIN´s
             Case 5
                Call Fehler                                     'Zeigt digitalen I/O Zustand von PA0 bis PA5 an
    
    
    
          End Select
          Sound Portd.7 , 400 , 500                             'BEEP
       End If
    
       Waitms 100
    
    
    
    
    
    Loop
    
    End
    
    Leds:
          Config Portc = Output
    
                Portc.0 = 0
                Portc.1 = 1
                Portc.2 = 0
                Portc.3 = 1
                Portc.4 = 0
                Portc.5 = 1
                Portc.6 = 0
                Portc.7 = 1
    
                Sound Portd.7 , 400 , 450                       'BEEP
                Sound Portd.7 , 400 , 250                       'BEEP
                Sound Portd.7 , 400 , 450                       'BEEP
    
          Return
    
    
    
    '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
    
    
    
    'Diese Unterfunktion zeigt Batteriespannung an
    Sub Batteriespannung()
    Local W As Word
       Start Adc
       W = Getadc(6)
       Volt = W * Ref
       Volt = Volt * 5.2941
       Print "Die aktuelle Spannung betraegt: " ; Volt ; " Volt"
    
    End Sub
    
    
    Sub Fehler()
    
    Print "Nicht verfügbare Funktion!"
    
    End Sub

    lg
    ikarus_177

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hi,
    nimm statt dem Goto ein Gosub, denn sonst startet das Programm immer von neuem wenn Leds aufgerufen wird !
    Denn das Goto Leds endet mit einem Return, da aber nix zum returnen da ist, gehts ins Nirvana !

    Return gehört zum beenden eines mit Gosub aufgerufenen Unterprogrammes.

    Bei Gelegenheit mal die Bascom-Hilfe konsultieren, da sind viele Beispiele enthalten.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress