Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Laderegler Test Tueftler Seite

Zeile 118: Zeile 118:
 
  UMOT              Stiftleiste                    LU 2,5 MS2             
 
  UMOT              Stiftleiste                    LU 2,5 MS2             
 
  UREF              Stiftleiste                    LU 2,5 MS2
 
  UREF              Stiftleiste                    LU 2,5 MS2
 +
 +
 +
==Testprogramm==
 +
'###################################################
 +
'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 LED´s anzeigen. Am I2C-Bus
 +
'          darf in diesem Moment nichts angeschlossen sein
 +
' Taste 4: Zeigt analoge Messwerte an allen Port A PIN´s ü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
 +
'Weitere Beispiele und Beschreibung der Hardware
 +
'unter http://www.Roboternetz.de oder robotikhardware.de
 +
'#######################################################
 +
 +
 +
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 LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
 +
        Case 4
 +
            Call Showporta                                  'Zeigt Messwerte an allen Port A PIN´s
 +
        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 LED´s 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änd ein,bis auf Batteriespannungsmessungsport
 +
      Porta.i = 1
 +
  Next I
 +
 +
  Print
 +
  Print "Ermittelte Messwerte an Port A:"
 +
  For I = 0 To 7                                          ' Alle Eingäne 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änd ein,bis auf Batteriespannungsmessungsport
 +
      Porta.i = 1
 +
  Next I
 +
 +
  Print
 +
  Print "Ermittelter I/O Zustand Port A:"
 +
  For I = 0 To 5                                          ' Alle Eingäne 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
  
 
==Weblinks==
 
==Weblinks==

Version vom 16. November 2005, 13:56 Uhr

Ein bewährtes Microcontrollerboard das wie das RNBFRA-Board in der Roboternetz-Community infolge einer Diskussion entstand. Es sollte ein Board werden das ein gutes Preis- / Leistungsverhältnis bietet und für vielfältige Aufgaben geeignet ist. Das Vorhaben ist dank der zahlreichen Anregungen gut gelungen, das Board gibt es inwischen nicht nur als Bauanleitung mit Platine sondern auch als Bausatz und sogar Fertigmodul. Es hat sich als preiswertes Universalboard für Roboter, Steuerungsaufgaben etc. als auch als ideales Einsteigerboard einen guten Namen im Roboternetz gemacht, daher gibt es für dieses Board auch ein eigenes Unterforum im Roboternetz. Es gibt inzwischen unzählige Anwendungen die mit RN-Control umgesetzt wurden. Trotz günstigem Preis ist ein sehr flexibels Board für unzählige Anwendungsmöglichkeiten entstanden. Über den I2C-Bus stehen zahlreiche Erweiterungsboards zur Verfügung, so können beispielsweise die gleichen I2C-Erweiterungen wie beim großen RNBFRA-Board kombiniert werden (Relasikarte, Sprachausgabe usw.) Roboternetz

Schaltplan zum Board
Fehler beim Erstellen des Vorschaubildes: /www/htdocs/w0177223/rn-wissen.de/wiki/includes/limit.sh: line 101: 4154160 Aborted /usr/bin/timeout $MW_WALL_CLOCK_LIMIT /bin/bash -c "$1" 3>&-

Error code: 134
Bestückungsplan zum Board

Besonders viel Wert wurde auch auf den einfachen Aufbau und viele Experimentier- und Einsatzmöglichkeiten gelegt. Mit diesem Board läßt sich u.a. schon ein recht ausgereifter Roboter konstruieren. Ultraschallsensoren, Infrarot Entfernungssensoren, Motoren u.v.m. können direkt angeschlossen werden. Da das Board auch in der Community Roboternetz recht beliebt ist, findet man dort auch viele Tips und Programme.

[Diagramm hier]

Hier die Leistungsmerkmale auf einen Blick:

  • Wahlweise 8 oder 16 Mhz Taktfrequenz (beide Quarze werden mitgeliefert, 16 Mhz bereits eingesteckt)
  • Schneller AVR Mega 32 Mikrocontroller,32K Speicher, 2K Ram und 1K EEPROM), 32 programmierbare I/O Pins,8 AD Ports u.v.m.
  • 8 Leuchtdioden per DIP-Schalter deaktivierbar und anderen Ports per Steckbrücke beliebig zuzuordnen
  • alle Portleitungen sind über Stecker nach außen geführt. Die Steckernorm entspricht der Roboternetz-Definition als auch der des Atmel Entwicklungsboards STK500
  • alle Ports sowie +5V und GND sind zusätzlich über Steckbuchsen erreichbar. Ideal zum experimentieren da einfach Drähte (ca. 0,5mm) eingesteckt werden (kein Löten oder schrauben). So können einfach andere LED´s zugeordnet werden oder ein Steckbrett verbunden werden
  • Der wichtige Port A (wahlweise 8 digitale oder analoge Ein- o. Ausgänge) ist zusätzlich noch über eine Qualitätssteckklemme mit Hebel herausgeführt
  • Motortreiber ca. 1 A belastbar - für zwei Getriebemotoren oder 1 Schrittmotor. Dieser kann auch für andere Zwecke (Relaisansteuerung, Lämpchen etc.) genutzt oder einfach entfernt werden
  • Integrierter programmierbarer Mini-Lautsprecher um Töne auszugeben
  • 1 Reset Taster
  • 5 Taster für beliebige Verwendung. Sie belegen nur einen analogen Port!
  • 5 V Spannungsstabilisierung mit 2 A Belastbarkeit, auch herausgeführt für Erweiterungen Eingangsspannung gegen Verpolung geschützt
  • RS232 mit normgerechtem Pegelwandler (MAX232) - PC direkt anschließbar
  • Batteriespannung kann im Programm abgefragt werden
  • ISP - Programmierschnittstelle für übliche AVR-Programmieradapter (10polig)
  • Betriebsspannung wahlweise zwischen 7 und 18V (empfohlen 7 bis 14 V) - wahlweise auch höhere Motorspannung bis 24V möglich)
  • Sehr kompakt, nur halbes Europaformat nach Roboternetz-Norm (ca. 100x75mm)
  • I2C-Bus über die zahlreiche Erweiterungsplatinen anschließbar sind (z.B. Sprachausgabe RN-Speak, Relaisboard RN-Relais, Servoboards, LCD´s uvm.)
  • Programmierbar in zahlreichen Sprachen, z.B. Basic (BASCOM Compiler, eingeschränkt bis 4K wird mitgeliefert), C (C-Compiler GCC wird mitgeliefert), Assembler, Pascal
  • Deutsche Doku mit Basic Programmbeispiel
  • Preiswerter Bausatz erhältlich - einfacher Aufbau
  • Kein Starter- oder Applikationsboard notwendig - bereits alles integriert!
  • alle wichtigen Bauteile gesockelt, somit auch bei falscher Beschaltung durch Einsteiger ,immer kostengünstig reparierbar (einfach neues IC einstecken)

http://www.robotikhardware.de/bilder/rncontro4.jpg

Stückliste

Bauteil Wert       Beschreibung                   Reichelt Best.Nr.
C1      100n       Keramik Kondensator            KERKO100N
C2      100n       Keramik Kondensator            KERKO100N   
C3      22pf       Keramik Kondensator            KERKO-500 22p           
C4      22pf       Keramik Kondensator            KERKO-500 22p          
C5      4,7uF      Elko                           SM 4,7/50RAD           
C6      4,7uF      Elko                           SM 4,7/50RAD           
C7      4,7uF      Elko                           SM 4,7/50RAD           
C8      4,7uF      Elko                           SM 4,7/50RAD           
C9      1uF        Elko                           SM 1,0/63RAD           
C10     100n       Keramik Kondensator            KERKO100N              
C11     100n       Keramik Kondensator            KERKO100N              
C12     100n       Keramik Kondensator            KERKO100N              
C13     1000uF     Elko                           RAD 1000/35            
C14     100n       Keramik Kondensator            KERKO100N              
C15     100n       Keramik Kondensator            KERKO100N              
C16     100n       Keramik Kondensator            KERKO100N              
C17     220uF      Elko                           RAD 220/35             
C18     100n       Keramik Kondensator            KERKO100N              
D1      1N4148     Diode                          1n 4148                
D2      BYV27      Diode                          BYV 27/200             
I2C-BUS I2C        Wannenbuchse                   WSL 10G                
IC1     MAX232     RS232 Treiber                  MAX 232 CPE             
IC2     7805       Spannungsregler                78S05                  
IC3     L293D      Motortreiber                   L 293 D                
IC4     MEGA16-P   Atmel Mega 16 oder 32          ATMEGA 16-16           
ISP     AVR-ISP    Wannenbuchse                   WSL 10G                
JP1                Kontaktbuchse (manuell kürzen) SPL20                  
JP2                Kontaktbuchse (manuell kürzen) SPL 20                 
JP3                Kontaktbuchse (manuell kürzen) SPL 20                  
JP4                Kontaktbuchse (manuell kürzen) SPL 20                 
JP5                Kontaktbuchse (manuell kürzen) SPL 20                 
JP6                Stiftleiste                    Stiftl. 2x50g (teilen) 
JP7                Kontaktbuchse (manuell kürzen) SPL 20                 
JP8                Stiftleiste                    LU 2,5 MS2             
LED1               Leuchdiode Low                 LED 3MM 2MA GN         
LED2               Leuchdiode Low                 LED 3MM 2MA GN         
LED3               Leuchdiode Low                 LED 3MM 2MA GN         
LED4               Leuchdiode Low                 LED 3MM 2MA GN         
LED5               Leuchdiode Low                 LED 3MM 2MA GN         
LED6               Leuchdiode Low                 LED 3MM 2MA GN         
LED7               Leuchdiode Low                 LED 3MM 2MA GN         
LED8               Leuchdiode Low                 LED 3MM 2MA GN         
MOTOREN            Schraublemme 4 polig           AKL 101-04             
PORTA              Steckklemme 8 polig            WAGO 233-508           
PORTB              Wannenbuchse                   WSL 10G                
PORTC              Wannenbuchse                   WSL 10G                
PORTD              Wannenbuchse                   WSL 10G                
POWER              Schraubklemme 2 polig          AKL 101-02              
Q1                 Quarz 16 Mhz                   16-HC18                
R1      100k       Widerstand 100k                1/4W 100k              
R2      1k         Widerstand 1k                  1/4W 1k                
R3      10k        Widerstand 10k                 1/4W 10k               
R4      1k         Widerstand 1k                  1/4W 1k                
R5      1k         Widerstand 1k                  1/4W 1k                
R6      1k         Widerstand 1k                  1/4W 1k                
R7      1k         Widerstand 1k                  1/4W 1k                
R8      1k         Widerstand 1k                  1/4W 1k                
R9      22k        Widerstand 22k                 1/4W 22k               
R10     5,1k       Widerstand 5,1k                1/4W 5,1k              
R11     10k        Widerstand 10k                 1/4W 10k               
R12     10k        Widerstand 10k                 1/4W 10k               
R13     10k        Widerstand 10k                 1/4W 10k               
R14     10k        Widerstand 10k                 1/4W 10k               
RESET   TASTER3301 Minitaster liegend             TASTER 3301            
RN1                Widerstandsnetzwerk            SIL 9-8 1,0k           
RS232              Stiftleiste 3 polig            LU 2,5 MS3             
S1                 DIP Schalter 8 polig           NT08                   
SPEAKER F/CM12P    Mini Piezo Lautsprecher        SUMMER EPM 121         
T1      TASTER3301 Minitaster liegend             TASTER 3301            
T2      TASTER3301 Minitaster liegend             TASTER 3301            
T3      TASTER3301 Minitaster liegend             TASTER 3301            
T4      TASTER3301 Minitaster liegend             TASTER 3301            
T5      TASTER3301 Minitaster liegend             TASTER 3301            
UMESS              Stiftleiste                    LU 2,5 MS2             
UMOT               Stiftleiste                    LU 2,5 MS2             
UREF               Stiftleiste                    LU 2,5 MS2


Testprogramm

'################################################### '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 LED´s anzeigen. Am I2C-Bus ' darf in diesem Moment nichts angeschlossen sein ' Taste 4: Zeigt analoge Messwerte an allen Port A PIN´s ü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 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de oder robotikhardware.de '#######################################################


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 LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein 
        Case 4 
           Call Showporta                                  'Zeigt Messwerte an allen Port A PIN´s 
        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 LED´s 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änd ein,bis auf Batteriespannungsmessungsport 
     Porta.i = 1 
  Next I 
  Print 
  Print "Ermittelte Messwerte an Port A:" 
  For I = 0 To 7                                           ' Alle Eingäne 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änd ein,bis auf Batteriespannungsmessungsport 
     Porta.i = 1 
  Next I 
  Print 
  Print "Ermittelter I/O Zustand Port A:" 
  For I = 0 To 5                                           ' Alle Eingäne 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

Weblinks

Ausführliche Anleitung und Bauplan


LiFePO4 Speicher Test