- 12V Akku mit 280 Ah bauen         
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
    31
    Beiträge
    601
    Anzeige

    E-Bike
    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
    31
    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
  •  

12V Akku bauen