- LiTime Speicher und Akkus         
Ergebnis 1 bis 8 von 8

Thema: rn-control 1.4 bekommen - Taster 1-3 defekt?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2012
    Beiträge
    11

    rn-control 1.4 bekommen - Taster 1-3 defekt?

    Anzeige

    Praxistest und DIY Projekte
    Hallo liebe Community,

    ich habe vor ein paar Tagen das o.g. Board von robotikhardware.de bekommen. Ich habe das Testprogramm (aus dem Wiki: http://rn-wissen.de/index.php/RN-Control) aufgespielt und musste feststellen das die Tasten 1-3 zwar ein Ton von sich geben, allerdings keine Funktion ausführen. Beispielsweise sollte die Taste 3 das Lauflicht aktivieren. Bei den Tasten 4-5 bekomme ich im Terminal Werte ausgelesen.

    Also habe ich den Versuch gemacht und ein einfaches Programm geschrieben um die Tasten zu testen.

    Code:
    $regfile = "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000                                        
    $baud = 38400
    Dim I As Integer
    Dim N As Integer
    Dim Taste As Byte
    Config Portc = Output
    Declare Sub Lauflicht()
    Declare Function Tastenabfrage() As Byte
    Config Adc = Single , Prescaler = Auto
    Config Pina.7 = Input
    Porta.7 = 1
    Do
    Taste = Tastenabfrage()
    If Taste <> 0 Then
    Select Case Taste
    Case 1
    Call Lauflicht
    Case 2
    Call Lauflicht
    Case 3
    Call Lauflicht
    Case 4
    Call Lauflicht
    Case 5
    Call Lauflicht
    
    End Select
    
    End If
    Waitms 100
    Loop
    End
    Function Tastenabfrage() As Byte
    Local Ws As Word
    Tastenabfrage = 0
    Start Adc
    Ws = Getadc(7)
    If Ws < 500 Then
    Select Case Ws
    Case 410 To 450
    Tastenabfrage = 1
    Case 340 To 380
    Tastenabfrage = 2
    Case 265 To 305
    Tastenabfrage = 3
    Case 180 To 220
    Tastenabfrage = 4
    Case 90 To 130
    Tastenabfrage = 5
    End Select
    End If
    End Function
    
    Sub Lauflicht()
    Config Portc = Output
    For I = 0 To 7
     
    Portc.i = 0
    Waitms 100
    Portc.i = 1
    Next I
    
    End Sub
    
    End
    Wenn ich den Code ausführen funktionieren die Taster 1-3 auch nicht.

    Hat jemand von euch eine Idee woran es liegen kann?

    Beste Grüße
    Fumificate

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Du könntest z.B. dein Testprogramm so erweitern, dass du die lokale Variable WS in der Funktion Tastenabfrage entfernst und in eine globale Variable (Dim WS As Word) am Programmanfang änderst und dir im Hauptprogramm nach jedem Tastendruck den ADC-Wert (WS) jeder Taste anzeigen läßt.
    Damit kannst du dann feststellen, ob die Tasten 1-3 überhaupt einen Wert wiedergeben. Wenn nicht: Hardware kontrollieren.
    Gruß
    Dirk

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2012
    Beiträge
    11
    Der Taster 4 liefert mir 180 und der Taster 5 99.

    Die anderen Taster liefern kein Ergebnis.

    Ich habe einfach den Code um ein Ausgabe Sub erweitert und bei den Cases Call Ausgabe hingeschrieben.

    War das richtig so oder meintest du es anders?

    Was kann ich an der Hardware kontrollieren?

    Vielen Dank schonmal für die schnelle Antwort!

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Ne, mach das nicht in den Cases, weil da ja schon auf bestimmte ADC-Werte getestet wird. Du brauchst ein Programm, das die unabhängig von der Tastennummer den ADC-Wert der gedrückten Taste ausgibt.
    Jede Taste MUSS dann einen Wert ausgeben.
    Gruß
    Dirk

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2012
    Beiträge
    11
    Hast du da vielleicht einen Tip für mich? Ich bin noch ein richtiger Neuling und weiß gerade nicht wie ich das machen kann.

    - - - Aktualisiert - - -

    Hallo nochmal.
    Ich habe jetzt etwas herumprobiert und glaube ein Programm geschrieben zu haben das mir die Werte ausgibt.

    Folgende Werte habe ich:
    Taster 1: 395
    Taster 2: 327
    Taster 3: 256
    Taster 4: 180
    Taster 5: 99

    Ich habe die Cases so angepasst und nun gehen alle Gibt es eine bestimmte Regel wie groß der Wertebereich bei den Cases sein sollte?
    Geändert von Fumificate (10.11.2012 um 18:55 Uhr)

  6. #6
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Dei Widerstände haben ja immer eine gewisse unterschiedliche Toleranz, daher kann es in selten Fällen vorkommen das die eingetragenen Werte bei der Case Anweisung geändert werden müssen. Du hast das ja offensichtlich korrekt gemacht!
    Man sollte die Case Anweisungen halt so wählen das möglichst pro Taster ein weiter Bereich umfasst wird und es natürlich nicht zu Überscheidungen kommt.

    Gewöhnlich passt folgendes:

    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 370 To 450                                    'oder 400 x 450
                Tastenabfrage = 1
                Ton = 550
             Case 300 To 369
                Tastenabfrage = 2
                Ton = 500
             Case 230 To 299
                Tastenabfrage = 3
                Ton = 450
             Case 150 To 229
                Tastenabfrage = 4
                Ton = 400
             Case 80 To 149
                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
    Mit bestem Gruß
    Frank

    Admin Roboternetz.de - RN-Wissen.de - Elektronik-Blog
    Überzeugter und begeisterter Elektroauto Fahrer seit 2018

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Ja, die Grenzen zwischen den Tasten werden am besten auf den halben Abstand zwischen den Ist-Werten gelegt.
    Zwischen Tasten 1 und 2 wäre die Grenze also 361 und zwischen Tasten 2 und 3 292.
    Damit wäre die Abfrage für Taste 2 z.B.: >= 292 und < 361. Der Wertebereich sollte OHNE Lücken erfasst werden, so dass jeder ADC-Wert zugeordnet werden kann.
    Die Werte ändert man dann in der Funktion Tastenabfrage().
    Gruß
    Dirk

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    04.11.2012
    Beiträge
    11
    Vielen Dank euch beiden! Ihr habt mir sehr geholfen.

Ähnliche Themen

  1. RN-Control Taster oder Code defekt?
    Von Yunus64 im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 2
    Letzter Beitrag: 11.04.2012, 09:15
  2. Taster defekt?
    Von Echoplex im Forum Asuro
    Antworten: 10
    Letzter Beitrag: 31.10.2010, 23:20
  3. [gelöst]Taster defekt/programmierung?
    Von janr2d2 im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 10.09.2009, 18:08
  4. RN Control 1.4 ... 1 Tag alt, schon defekt :(
    Von Blue72 im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 8
    Letzter Beitrag: 10.10.2008, 19:55
  5. C-Control defekt?
    Von febo im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 0
    Letzter Beitrag: 09.12.2004, 10:53

Stichworte

Berechtigungen

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

LiTime Speicher und Akkus