Hier poste ich ein paar kleine Testprogramme für das Roboternetz Board. Die Programme sind recht klein und Verständlich zumal sie mit dem Basic-Compiler Bascom (siehe unser Bascom Unterforum) geschrieben wurden.

Diese machen nichts weltbewegendes, sie dienen nur dazu die verschieden Funktion und Schaltkreise auf dem Board zu testen. Da ja inzwischen schon einige mit dem löten begonnen haben, möcht eman ja so schnell wie möglich testen ob man auch keinen Fehle rbei Aufbau gemacht hat. Für diesen fall sind diese Programme gedacht.


1.Testprogramm testet I2C-Bus und Powerport durch Lauflicht
Code:
'###################################################
'Testprogramm 1
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.1
'
'Aufgabe:
'Ausgabe über PowerPort per I2C testen indem
'die vier Led´s im lauflichtartig leuchten
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################


Const Writepowerport_adr = &H72                             'I2C Adr PCF 2
Const Readpowerport_adr = &H73                              'I2C Adr PCF 2

Dim I2cdaten As Byte                                        'Datenbyte aus PCF8574


Dim I As Byte

$crystal = 8000000                                          'Quarzfrequenz
Config Scl = Portc.0                                        'Ports fuer IIC-Bus
Config Sda = Portc.1

I2cinit

I = 0
I2cdaten = 1
Do
   I2cdaten = I2cdaten * 2
   If I2cdaten > 16 Then I2cdaten = 1

   I2cstart
   I2cwbyte Writepowerport_adr                              'Schreibbefehl an PCF schicken
   I2cwbyte I2cdaten                                        'Datenbyte an PCF
   I2cstop
   Incr I
   Waitms 100
   Print "hallo"
Loop


End



2.Testprogramm testet RS232 und Baustein MAX232 indem es Text zum PC schickt
Code:
'###################################################
'Testprogramm 2
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.1
'
'Aufgabe:
'Testen vom MAX232 und RS232 Schnittstelle indem
'das Wort Hallo und eine Zahl an die RS232 sendet!
'Unter Windows kann man das mit dem Hyperterminal
'anzeigen lassen (9600 Baud einstellen)
'Noch einfacher kann man es anzeigen, wenn man
'in der Bascom Entwicklungsumgebung unter Tools
'TERMINAL EMULATOR aufruft (oder Modem Symbol klickt)
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################




Dim I As Byte

$crystal = 8000000                                          'Quarzfrequenz
Weiter:
$baud = 9600


I = 0
Do
   Incr I
   Wait 2
   Print "Hallo " ; I
Loop

End

3. Testprogramm testet Motortreiber indem es Motoren in beide Richtungen dreht
Code:
'###################################################
'Testprogramm 3
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.1
'
'Aufgabe:
'Testen der Getriebemotorensteuerung
'1. Linker Motor wird 5 Sekunden gedreht
'2. 5 Sekunden Pause
'3. Linker Motor wird 5 Sekunden in andere Richtung gedreht
'4. 5 Sekunden Pause
'5. Rechter Motor wird 5 Sekunden gedreht
'6. 5 Sekunden Pause
'7. Rechter Motor wird 5 Sekunden in andere Richtung gedreht
'8. 5 Sekunden Pause
'9. Das ganze wieder ab linken Motor wiederholen
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################




Dim I As Byte

$crystal = 8000000                                          'Quarzfrequenz

Nochmal:

'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

'Linker Motor ein
Portc.6 = 1                                                 'bestimmt Richtung
Portc.7 = 0                                                 'bestimmt Richtung
Portd.4 = 1                                                 'Linker Motor EIN

Wait 5                                                      'Warte 5 Sekunden
Portd.4 = 0                                                 'Linker Motor AUS
Wait 5                                                      'Warte 5 Sekunden

'Linker Motor andere Richtung
Portc.6 = 0                                                 'bestimmt Richtung linker Motor
Portc.7 = 1                                                 'bestimmt Richtung linker Motor
Portd.4 = 1                                                 'linker Motor EIN

Wait 5                                                      'Warte 5 Sekunden
Portd.4 = 0                                                 'Motor AUS
Wait 5                                                      'Warte 5 Sekunden

'Ports für rechten Motor
Config Pinb.0 = Output                                      'Linker Motor Kanal 1
Config Pinb.1 = Output                                      'Linker Motor Kanal 2
Config Pind.5 = Output                                      'Linker Motor PWM


'Rechter Motor ein
Portb.0 = 1                                                 'bestimmt Richtung rechter Motor
Portb.1 = 0                                                 'bestimmt Richtung rechter Motor
Portd.5 = 1                                                 'rechter Motor EIN

Wait 5                                                      'Warte 5 Sekunden
Portd.5 = 0                                                 'Rechter Motor AUS
Wait 5                                                      'Warte 5 Sekunden

Portb.0 = 0                                                 'bestimmt Richtung rechter Motor
Portb.1 = 1                                                 'bestimmt Richtung rechter Motor
Portd.5 = 1                                                 'rechter Motor EIN

Wait 5                                                      'Warte 5 Sekunden
Portd.5 = 0                                                 'Rechter Motor AUS
Wait 5                                                      'Warte 5 Sekunden

Goto Nochmal

End


4. Testprogramm testet die Geschwindigkeitsregelung per PWM indem es Motoren beschleunigt und wieder verlangsamt
Code:
'###################################################
'Testprogramm 4
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.1
'
'Aufgabe:
'Testen der Geschwindigkeitsregelung der
'Getriebemotorensteuerung über PWM
'Regelt die Geschwindigkeit beider Motoren langsam
'hoch und wieder runter
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################



Dim I As Word


$crystal = 8000000                                          'Quarzfrequenz

Dim Geschwindigkeitlinks As Word
Dim Geschwindigkeitrechts As Word

'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
Geschwindigkeitlinks = 50
Geschwindigkeitrechts = 2900
Pwm1a = Geschwindigkeitrechts
Pwm1b = Geschwindigkeitlinks
Tccr1b = Tccr1b Or &H02                                     'Prescaler = 8


'Linker Motor ein
Portc.6 = 1                                                 'bestimmt Richtung
Portc.7 = 0                                                 'bestimmt Richtung
Portd.4 = 1                                                 'Linker Motor EIN

'Rechter Motor ein
Portb.0 = 1                                                 'bestimmt Richtung rechter Motor
Portb.1 = 0                                                 'bestimmt Richtung rechter Motor
Portd.5 = 1                                                 'rechter Motor EIN


I = 0
Do
   Pwm1a = I
   Pwm1b = I
   Waitms 40
   I = I + 5
Loop Until I > 1023

Wait 1
Do

   Pwm1a = I
   Pwm1b = I
   Waitms 40
   I = I - 5
Loop Until I < 1


Pwm1a = 0                                                   'Linker Motor aus
Pwm1b = 0                                                   'rechter Motor aus

End

5. Testprogramm testet Schrittmotorentreiber indem es Schrittmotoren eine bestimmte Anzahl von Schritten in beide Richtungen bewegt
Code:
'###################################################
'Testprogramm 5
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.1
'
'Aufgabe:
'Testen der Schrittmotortreiber
'Dreht erst linken Schrittmotor in beide Richtungen
'und dann rechten Schrittmotor in beide richtungen
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################

Declare Sub Ledein
Declare Sub Ledaus


Const Writepowerport_adr = &H72                             'I2C Adr PCF 2
Const Readpowerport_adr = &H73                              'I2C Adr PCF 2

Dim I2cdaten As Byte                                        'Datenbyte aus PCF8574


Dim I As Word


$crystal = 8000000                                          'Quarzfrequenz
Config Scl = Portc.0                                        'Ports fuer IIC-Bus
Config Sda = Portc.1
I2cinit



Config Pind.6 = Output                                      'Schrittmotoren Ein/Aus
Config Pinc.5 = Output                                      'Schrittmotor Links Richtung
Config Pinc.3 = Output                                      'Schrittmotor Links Step

Config Pinc.4 = Output                                      'Schrittmotor Rechts Richtung
Config Pinc.2 = Output                                      'Schrittmotor Rechts Step

Ledaus
Portd.6 = 0                                                 'Schrittmotoren erst mal ausschalten

Wait 2

Ledein
Portd.6 = 1                                                 'Beide Schrittmotoren einschalten

'Linker Schrittmotor
Portc.5 = 0                                                 'Richtung
Portc.3 = 0
I = 400                                                     'Anzahl der Schritte die Motor bewegt werden soll
Do
   Ledaus
   Portc.3 = 0
   Waitms 5
   Portc.3 = 1
   Ledein
   Waitms 5
   I = I - 1
Loop Until I < 1

Portc.5 = 1                                                 'Andere Richtung
I = 400                                                     'Anzahl der Schritte die Motor bewegt werden soll
Do
   Ledaus
   Portc.3 = 0
   Waitms 5
   Portc.3 = 1
   Ledein
   Waitms 5
   I = I - 1
Loop Until I < 1

Wait 2

'Rechter Schrittmotor
Portc.4 = 0                                                 'Richtung
I = 400                                                     'Anzahl der Schritte die Motor bewegt werden soll
Do
   Ledaus
   Portc.2 = 0
   Waitms 5
   Portc.2 = 1
   Ledein
   Waitms 5
   I = I - 1
Loop Until I < 1

Portc.4 = 1                                                 'Andere Richtung
I = 400                                                     'Anzahl der Schritte die Motor bewegt werden soll
Do
   Ledaus
   Portc.2 = 0
   Waitms 5
   Portc.2 = 1
   Ledein
   Waitms 5
   I = I - 1
Loop Until I < 1



Portd.6 = 0                                                 ' Schrittmotoren erst mal ausschalten
Ledaus

End




Sub Ledein()
   I2cstart
   I2cwbyte Writepowerport_adr                              'Schreibbefehl an PCF schicken
   I2cwbyte 15                                              'Datenbyte an PCF
   I2cstop
End Sub

Sub Ledaus
   I2cstart
   I2cwbyte Writepowerport_adr                              'Schreibbefehl an PCF schicken
   I2cwbyte 0                                               'Datenbyte an PCF
   I2cstop
End Sub

6. Testprogramm testet den Eingangsport per I2C-Bus
Code:
'###################################################
'Testprogramm 6
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.1
'
'Aufgabe:
'Testet Eingangsport indem Wert über RS232
'übermittelt wird (9600 Baud einstellen)
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################


Const Writeeingabeport_adr = &H7E                           'I2C Adr PCF 2
Const Readeingabeport_adr = &H7F                            'I2C Adr PCF 2

Dim I2cdaten As Byte                                        'Datenbyte aus PCF8574


Dim I As Byte

$baud = 9600
$crystal = 8000000                                          'Quarzfrequenz
Config Scl = Portc.0                                        'Ports fuer IIC-Bus
Config Sda = Portc.1

Portd.6 = 0                                                 'Schrittmotoren erst mal ausschalten
I2cinit

I = 0
I2cdaten = 1
Do
   I2cstart
   I2cwbyte Readeingabeport_adr                             'Lesebefehl an PCF schicken
   I2crbyte I2cdaten , Nack                                 'Datenbyte von PCF lesen
   I2cstop
   Waitms 50
   Print I ; " Eingangsport Wert" ; I2cdaten
   Incr I
Loop

End

7. Testprogramm ermittelt die Batteriespannung und sendet diese an PC. Analoger Port wird getestet
Code:
'###################################################
'Testprogramm 7
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.1
'
' Aufgabe:
' Dieses Testprogramm ermittelt die Batteriespannung
' und gibt diese über die RS232 aus (9600 Baud einstellen)
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################



Const Ref = 5 / 1023

Dim I As Byte
Dim W As Word
Dim Volt As Single



Config Adc = Single , Prescaler = Auto


$baud = 9600
$crystal = 8000000                                          'Quarzfrequenz
Portd.6 = 0                                                 'Schrittmotoren erst mal ausschalten


Start Adc
Do
   W = Getadc(4)
   Volt = W * Ref
   Volt = Volt * 5.2941
   Print "Spannung: " ; Volt

   Waitms 200
Loop

End

Das letzte Testprogramm testet den CoController indem er die Steuerung des Powerports übernimmt
Code:
'###################################################
'CoController Testprogramm 1
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.1
'
'Aufgabe:
'CoController übernimmt nun
'Ausgabe über PowerPort per I2C testen indem
'die vier Led´s im lauflichtartig 50 mal leuchten läßt
'Danch ist er deaktiv
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################


Const Writepowerport_adr = &H72                             'I2C Adr PCF 2
Const Readpowerport_adr = &H73                              'I2C Adr PCF 2

Dim I2cdaten As Byte                                        'Datenbyte aus PCF8574


Dim I As Byte

$crystal = 4000000                                          'Quarzfrequenz
Config Scl = Portd.3                                        'Ports fuer IIC-Bus
Config Sda = Portd.2

I2cinit

I = 0
I2cdaten = 1
For I = 1 To 200
   I2cdaten = I2cdaten * 2
   If I2cdaten > 16 Then I2cdaten = 1

   I2cstart
   I2cwbyte Writepowerport_adr                              'Schreibbefehl an PCF schicken
   I2cwbyte I2cdaten                                        'Datenbyte an PCF
   I2cstop
   Waitms 100
Next

End
Ich hab die Beispiele hier gepostet damit man bei Unklarheiten mal schnell rein schaun kann. Ich lege die aber auch noch als ZIP-Datei im Download-Bereich ab.

Es wäre schön wenn auch ihr eure ersten interessanten Programme posten würdet.

Gruß Frank