Frank
03.09.2004, 17:18
Mal wieder was neues.
RN-DIGI
Eine große 7-Segmentanzeige passend zu den Roboternetz-Boards!
http://www.robotikhardware.de/bilder/rndigi/rndigi1.gif
Dieses Board wurde als Erweiterung zu den Roboternetz-Controllerboards (RNBFRA und RN-Control) entworfen, eignet sich aber für alle Controllerboards mit I2C-Ausgang.
Es dient zum Anzeigen von 4 Zahlen. Dabei werden optisch ansprechende und extra große 7-Segmentanzeigen bereitgestellt (ca. 25mm Ziffernhöhe, Anzeige rot). Die Ansteuerung erfolgt sehr einfach per I2C-Bus.
Die Anwendungsmöglichkeiten sind dem Programmierer vorbehalten. Denkbar wäre das Board für den Aufbau von Uhren, Funkuhren, Zählern, Lottozahlgenratoren, Würfeln, Temperaturanzeigen usw. In Kombination mir RN-Speak und RN-Control wäre zum Beispiel ein sprechender Wecker denkbar.
Als hier die Leistungsmerkmale auf einen Blick:
Sehr einfache Ansteuerung per I2C Bus
Keine extra Spannungszuführung notwendig da Board über das I2C-Bus Kabel mit Strom verorgt wird
Programmierbare Helligkeit
Jedes einzelne Segment der 7-Segmentanzeige kann angesteuert werden
4 Dezimalpunkte möglich
Controller wird nicht belastet. Die Ziffern werden solange angezeigt, bis neue Ziffer gesendet wird. Keine Interrupts oder Bus-Belastung!
Preisgünstig und schneller Aufbau in wenigen Minuten möglich
4 verschiedene Slave Adressen per Jumper wählbar
Kleines Lochraster Experimentierfeld für Erweiterungen Taster, I2C-Baustein etc.
Kompakt, Roboternetz-Standard-Format 100x78 (halbes Euroformat), Huckepack mit anderen Boards kombinierbar
Deutsche Bauanleitung und Doku mit Programmbeispielen für RN-Control und RNBFRA-Board
Hier zum Beispiel Huckepack mit RN-COntrol kombiniert:
http://www.robotikhardware.de/bilder/rndigi/rndigihuckepack.jpg
Bauanleitung im Download Bereich :
https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=170
Platine oder Bausatz kann auch über robotikhardware.de (http://www.robotikhardware.de) bezogen werden
Platinen-Übersicht hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=1511)
Hier ein erstes Ansteuerbeispiel. Ist wirklich einfach:
'################################################# ##
'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 = "m16def.dat"
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
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta 0.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
Print
Print "**** RN-CONTROL V1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print
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
For I = 0 To 9
Led_display Z, I
Waitms 300
Next I
Next Z
Case 3
Case 4
Case 5
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 &B1110111
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 = &H6
Case 2:
Segmente = &H5B
Case 3:
Segmente = &H4F
Case 4:
Segmente = &H66
Case 5:
Segmente = &H6D
Case 6:
Segmente = &H7D
Case 7:
Segmente = &H7
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
RN-DIGI
Eine große 7-Segmentanzeige passend zu den Roboternetz-Boards!
http://www.robotikhardware.de/bilder/rndigi/rndigi1.gif
Dieses Board wurde als Erweiterung zu den Roboternetz-Controllerboards (RNBFRA und RN-Control) entworfen, eignet sich aber für alle Controllerboards mit I2C-Ausgang.
Es dient zum Anzeigen von 4 Zahlen. Dabei werden optisch ansprechende und extra große 7-Segmentanzeigen bereitgestellt (ca. 25mm Ziffernhöhe, Anzeige rot). Die Ansteuerung erfolgt sehr einfach per I2C-Bus.
Die Anwendungsmöglichkeiten sind dem Programmierer vorbehalten. Denkbar wäre das Board für den Aufbau von Uhren, Funkuhren, Zählern, Lottozahlgenratoren, Würfeln, Temperaturanzeigen usw. In Kombination mir RN-Speak und RN-Control wäre zum Beispiel ein sprechender Wecker denkbar.
Als hier die Leistungsmerkmale auf einen Blick:
Sehr einfache Ansteuerung per I2C Bus
Keine extra Spannungszuführung notwendig da Board über das I2C-Bus Kabel mit Strom verorgt wird
Programmierbare Helligkeit
Jedes einzelne Segment der 7-Segmentanzeige kann angesteuert werden
4 Dezimalpunkte möglich
Controller wird nicht belastet. Die Ziffern werden solange angezeigt, bis neue Ziffer gesendet wird. Keine Interrupts oder Bus-Belastung!
Preisgünstig und schneller Aufbau in wenigen Minuten möglich
4 verschiedene Slave Adressen per Jumper wählbar
Kleines Lochraster Experimentierfeld für Erweiterungen Taster, I2C-Baustein etc.
Kompakt, Roboternetz-Standard-Format 100x78 (halbes Euroformat), Huckepack mit anderen Boards kombinierbar
Deutsche Bauanleitung und Doku mit Programmbeispielen für RN-Control und RNBFRA-Board
Hier zum Beispiel Huckepack mit RN-COntrol kombiniert:
http://www.robotikhardware.de/bilder/rndigi/rndigihuckepack.jpg
Bauanleitung im Download Bereich :
https://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=170
Platine oder Bausatz kann auch über robotikhardware.de (http://www.robotikhardware.de) bezogen werden
Platinen-Übersicht hier (https://www.roboternetz.de/phpBB2/viewtopic.php?t=1511)
Hier ein erstes Ansteuerbeispiel. Ist wirklich einfach:
'################################################# ##
'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 = "m16def.dat"
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
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta 0.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
Print "**** RN-CONTROL V1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
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
For I = 0 To 9
Led_display Z, I
Waitms 300
Next I
Next Z
Case 3
Case 4
Case 5
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 &B1110111
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 = &H6
Case 2:
Segmente = &H5B
Case 3:
Segmente = &H4F
Case 4:
Segmente = &H66
Case 5:
Segmente = &H6D
Case 6:
Segmente = &H7D
Case 7:
Segmente = &H7
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