Tut mir Leid, ich dachte die Schaltung und das Testprogramm wären bekannt.

https://www.roboternetz.de/wissen/im....4schaltplan.g

Code:
'################################################### 
'rncontroltest.BAS 
'für 
'RoboterNetz Board RN-Control ab Version 1.1 
'Das neue preiswerte Controllerboard zum Experimentieren 

' Achtung: 
' Diese Demo ist mit Bascom Compiler 1.11.7.7 getestet 

' 
'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 LEDs anzeigen. Am I2C-Bus 
'          darf in diesem Moment nichts angeschlossen sein 
' Taste 4: Zeigt analoge Messwerte an allen Port A PINs über RS232 an 
''Taste 5: Zeigt digitalen I/O Zustand von PA0 bis PA5 an 


' Sehr 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 
'####################################################### 


Declare Sub Batteriespannung() 
Declare Sub Motortest() 
Declare Sub Lauflicht() 
Declare Sub Showporta() 
Declare Sub Showdigitalporta() 
Declare Function Tastenabfrage() As Byte 


$regfile = "m32def.dat" 
' bei Mega 16 $regfile = "m16def.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 
Print 
Print "**** RN-Control 1.4 *****" 
Print "Das neue Experimentier- und Roboterboard" 
Print "Weitere passende Zusatzboards bei www.robotikhardware.de" 
Print 
Do 




   Taste = Tastenabfrage() 
   If Taste <> 0 Then 

      Select Case Taste 
         Case 1 
            Call Batteriespannung    'Taste 1 Zeigt Bateriespannung über RS232 an 
         Case 2 
            Call Motortest           'Taste 2 Motoren beschleunigen und abbremsen 
         Case 3 
            Call Lauflicht           'Einige Male Lauflicht über LEDs anzeigen. 
                                     'Am I2C-Port darf in diesem Moment nichts angeschlossen sein 
         Case 4 
            Call Showporta           'Zeigt Messwerte an allen Port A PINs 
         Case 5 
            Call Showdigitalporta    'Zeigt digitalen I/O Zustand von PA0 bis PA5 an 



      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) 
  ' 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 beträgt: " ; Volt ; " Volt" 

End Sub 


'Testet Motoren und Geschwindigkeitsreglung 
Sub Motortest() 
   '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 Sub 


' Einige Male Lauflicht über LEDs 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 


'Zeigt die analogen Messwerte an Port A an 
Sub Showporta() 
Local Ws As Word 

   Config Porta = Input 
   For I = 0 To 5                        ' Alle internen Pullup Widerstände ein, bis auf Batteriespannungsmessungsport 
      Porta.i = 1 
   Next I 

   Print 
   Print "Ermittelte Messwerte an Port A:" 
   For I = 0 To 7                        ' Alle Eingänge inkl. messen 
      Start Adc 
      Ws = Getadc(i) 
      Volt = Ws * Ref 
      Print "Pin " ; I ; " ADC-Wert= " ; Ws ; " bei 5V REF waeren das " ; Volt ; " Volt" 
   Next I 
End Sub 


'Zeigt den Zustand einiger freier I/O von Die Analogen Messwerte An Port A An 
Sub Showdigitalporta() 
Local Zustand As String * 6 
   Config Porta = Input 
   For I = 0 To 5                        ' Alle internen Pullup Widerstände ein, bis auf Batteriespannungsmessungsport 
      Porta.i = 1 
   Next I 

   Print 
   Print "Ermittelter I/O Zustand Port A:" 
   For I = 0 To 5                        ' Alle Eingänge inkl. messen 
      If Pina.i = 1 Then 
         Zustand = "High" 
      Else 
         Zustand = "Low" 
      End If 
      Print "Pin " ; I ; " I/O Zustand= " ; Pina.i ; " " ; Zustand 
   Next I 
End Sub