-         

Ergebnis 1 bis 1 von 1

Thema: RN-Control - Standard Programm bei Auslieferung vorprogrammiert

  1. #1
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.989
    Blog-Einträge
    1

    RN-Control - Standard Programm bei Auslieferung vorprogrammiert

    Anzeige

    Damit gleich was in diesem neuen Unterforum Codesammlung steht, poste ich als erstes Programm mal das Grundprogramm (Demo) von RN-Control.

    Ich denke es ist selbsterklärend!


    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 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
    '#######################################################
    $programmer = 12                                            '1=LPT stk200  13=MCS Bootloader   12=USBISP 7=allavr/mk2
    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
    For I = 650 To 300 Step -2
      Sound Portd.7 , 5 , I
    Next I
    For I = 301 To 900
      Sound Portd.7 , 5 , I
    Next I
    Waitms 200
    Sound Portd.7 , 400 , 450                                   'BEEP
    Sound Portd.7 , 400 , 250                                   'BEEP
    Sound Portd.7 , 400 , 450                                   'BEEP
    Print
    Print "**** RN-Control 1.4 mit Bootloader 38400 Baud *****"
    Print "Demoprogramm vom 12.9.2011"
    Print "Das beliebte Experimentier- und Roboterboard"
    Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
    Print "Alle RN-Boards bei auf der Seite www.robotikhardware.de"
    Print "lassen sich sehr bequem mit Bascom-Basic programmieren."
    Print "Viele Tipps und Foren zu den RN-Boards gibt es unter"
    Print "www.roboternetz.de und www.rn-wissen.de"
    
    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 370 To 450                                    'oder 400 x 450
                Tastenabfrage = 1
                Ton = 550
             Case 300 To 369
                Tastenabfrage = 2
                Ton = 500
             Case 230 To 299
                Tastenabfrage = 3
                Ton = 450
             Case 150 To 229
                Tastenabfrage = 4
                Ton = 400
             Case 80 To 149
                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()
       Print "Motoren werden getestet ... ";
       '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
     
      'andere Richtung
         'Linker Motor ein
       Portc.6 = 0                                              'bestimmt Richtung
       Portc.7 = 1                                              'bestimmt Richtung
       Portd.4 = 1                                              'Linker Motor EIN
       'Rechter Motor ein
       Portb.0 = 0                                              'bestimmt Richtung rechter Motor
       Portb.1 = 1                                              '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
     
    
       Print "Habe fertig ;-)"
    End Sub
    
    'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
    Sub Lauflicht()
       Print "Lauflicht - schau auf das Board. Achte darauf das DIP Schalter on sind"
       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
    Geändert von Frank (15.02.2013 um 11:10 Uhr) Grund: Kleiner Tippfehler im Quellcode korrigiert
    Mit bestem Gruß
    Frank

    Admin Roboternetz.de - RN-Wissen.de - Elektronik-Blog

Ähnliche Themen

  1. Verkaufe V: USB Prog V3.0 (vorprogrammiert)
    Von Blue72 im Forum Kaufen, Verkaufen, Tauschen, Suchen
    Antworten: 4
    Letzter Beitrag: 16.09.2011, 14:14
  2. Asuro atmega32 vorprogrammiert mit Platine
    Von robots4-ever im Forum Asuro
    Antworten: 17
    Letzter Beitrag: 26.07.2011, 11:58
  3. C-Control Mega128 über das Programm "C-Control Pro"
    Von Hagen_tb im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 1
    Letzter Beitrag: 11.10.2009, 10:09
  4. Programm bespielen bei RN-Control 1.4 Mega32
    Von VODKACITY im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 2
    Letzter Beitrag: 10.09.2006, 20:15
  5. Hilfe bei LCD - irgendwie nicht Standard
    Von Bandit18 im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 05.01.2005, 09:20

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •