Huhu Frank,
ich habe jetzt schon ein paar Sachen in der Demo rumgeschoben. Dabei ist mir aufgefallen das Taste 1 bei mir das Display nicht auf 0 setzt. Wenn ichunter Taste 3,4 und 5 Schreibe geht es jeweils mit sound "dii - düü" der unter Tastenabfrage definiert ist. Wenn ich taste 1 Drücke macht es nur "düü" (denke mal das es der 550er Sound ist) und das Display bleibt auf dem Wert den es vorher angezeigt hat.Code:For Z = 1 To 4 Led_display Z , 0 Next Z
Was sagt mit in dem Zusammenhang das?
Hier nochmal meine umgebaute Demo:Code:Select Case Ws Case 410 To 450
Code:'################################################### 'rncontrol_digitest.BAS Demo zu RN-Digi 'für 'RoboterNetz Board RN-Control ab Version 1.1 und 'Zusatzboard RN-DIGI (vierstellig großes LED-Display per I2C) ' 'Aufgabe: ' Dieses Testprogramm demonstriert die Ansteuerung von RN-Digi ' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet ' Taste 1: Alle Ziffern auf 0 stellen (genau wie bei Reset) ' Taste 2: Nacheinander alle Ziffern von 0 bis 9 zählen 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de oder robotikhardware.de 'Eigene Programmbeispiele sind im Roboternetz gerne willkommen! '############################################################## Declare Function Tastenabfrage() As Byte Declare Sub Led_display_init() Declare Sub Led_display(byval Ziffer As Byte , Byval Zahl As Byte) $regfile = "m32def.dat" $crystal = 16000000 'Quarzfrequenz $baud = 9600 Config Scl = Portc.0 'Ports fuer IIC-Bus Config Sda = Portc.1 Const Rn_digi_slave_write = &H70 Const Rn_digi_slave_read = &H71 Const Dezimalpunktziffer = 2 'Segment wo Dezimalpunkt leuchten soll (0=keinen) Dim Segmente As Byte Dim Z As Byte Dim I As Byte Dim N As Integer Dim Ton As Integer Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung Config Pina.7 = Input 'Für Tastenabfrage Porta.7 = 1 'Pullup Widerstand ein Dim Taste As Byte I2cinit Led_display_init I = 0 Sound Portd.7 , 400 , 450 'BEEP Sound Portd.7 , 400 , 250 'BEEP Sound Portd.7 , 400 , 450 'BEEP Do Taste = Tastenabfrage() If Taste <> 0 Then Select Case Taste Case 1 For Z = 1 To 4 Led_display Z , 0 Next Z Case 2 For Z = 1 To 4 'Segmentnummer For I = 0 To 9 'Zähle von 0 bis 9 Led_display Z , I Waitms 50 'Wartezeit zwischen den Zahlen Sound Portd.7 , 100 , 450 'BEEP Next I Sound Portd.7 , 50 , 650 'BEEP Next Z Case 3 For Z = 1 To 4 Led_display Z , 0 Next Z Case 4 For Z = 1 To 4 Led_display Z , 0 Next Z Case 5 For Z = 1 To 4 Led_display Z , 0 Next Z End Select Sound Portd.7 , 400 , 500 'BEEP End If Waitms 100 Loop End '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) If Ws < 1010 Then Select Case Ws Case 410 To 450 Tastenabfrage = 1 Ton = 550 Case 340 To 380 Tastenabfrage = 2 Ton = 500 Case 265 To 305 Tastenabfrage = 3 Ton = 450 Case 180 To 220 Tastenabfrage = 4 Ton = 400 Case 100 To 130 Tastenabfrage = 5 Ton = 350 End Select Sound Portd.7 , 400 , Ton 'BEEP End If End Function Sub Led_display_init() I2cstart I2cwbyte Rn_digi_slave_write I2cwbyte 0 'Control Byte 'Dynamic Alternative Mode und Helligkeit 'Die oberen 3 Bits bestimmen die Helligkeit 'Wenn es dunkler sein soll dann z.b. &B0110111 I2cwbyte &B0010111 I2cstop 'Alle Ziffern auf 0 For Z = 1 To 4 Led_display Z , 0 Next Z End Sub Sub Led_display(ziffer An Byte , Zahl As Byte) I2cstart I2cwbyte Rn_digi_slave_write I2cwbyte Ziffer Select Case Zahl Case 0: Segmente = &H3F Case 1: Segmente = &H06 Case 2: Segmente = &H5B Case 3: Segmente = &H4F Case 4: Segmente = &H66 Case 5: Segmente = &H6D Case 6: Segmente = &H7D Case 7: Segmente = &H07 Case 8: Segmente = &H7F Case 9: Segmente = &H67 Case Else : Segmente = &H80 'Ansonsten Dezimalpunkt End Select If Dezimalpunktziffer = Ziffer Then Segmente = Segmente Or &H80 I2cwbyte Segmente I2cstop End Sub







Zitieren

Lesezeichen