Haaaq
22.12.2011, 20:52
Hallo,
ich bin noch ein ziemlicher Anfänger was Elektronik und Programmierung betrifft daher eine recht simple Frage.
Wie kann ich in den Code von RN_Stepp297_beispiele.bas von der Robotikhardware CD folgende Funktion einfügen
Wenn ich die Taste 2 drücke (Case2) soll sich der Schrittmotor 82 Schritte drehen dann eine Pause von 2 sec einlegen und dann wieder 82 Schritte drehen und das ganze 72 mal
Hier ist nochmal der Ganze Code und Danke im Voraus
'################################################# ##
'Schrittmotoransteuerung mit RN-Control und
'Ansteuerungsboard RN-Stepp297
'RN-Stepp297 ist die bekannt Standardschaltung
'mit L297 und L298 (Bausatz)
'rn_stepp297_beispiele
'
' Achtung:
' Diese Demo ist mit Bascom Compiler 1.11.8.4 getestet
' Getestet mit RN-Schrittmotor Firmware V 1.1
'
' RN-Stepp97 wird wie folgt angeschlossen
' Enable auf PA0 / Richtung auf PA1 / Takt auf PA2
'
'Aufgabe:
' Dieses Testprogramm zeigt wie man RN-Stepp297
' über Takt- und Richtungsleitung ansteuert
' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
' Taste 1: Schaltet Motorstrom ein (Stellung wird gehalten)
' Taste 2: Bewegt Motor genau 400 Halbschritte (1 Umdrehung bei den meisten Motoren)
' Taste 3: Bewegt Motor schneller genau 400 Halbschritte
' Taste 4: Ändert die Drehrichtung
''Taste 5: Schaltet Motor aus
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'in der Anleitung zu RN-Schrittmotor
'Anleitung findet man unter http://www.Roboternetz.de im Download Bereich
'oder www.robotikhardware.de
'Weitere Beispiele sind im Roboternetz gerne willkommen!
'################################################# #############
$programmer = 12 'MCS USB (Zeile weglassen wenn anderer Programmer)
' -------------- RN-Control übliche _____________________
Declare Function Tastenabfrage() As Byte
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Dim Taste As Byte
Dim Ton As Integer
I2cinit
Start Adc
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 "Demoprogramm um Zusatzboard RN-Stepp297 zu testen/demonstrieren"
Print
' -------------- Ende RN-Control übliche _____________________
Config Pina.0 = Output
Stepper_enable Alias Porta.0
Config Pina.1 = Output
Stepper_richtung Alias Porta.1
Config Pina.2 = Output
Stepper_takt Alias Porta.2
Dim I As Integer
Stepper_enable = 0 ' Erst mal aus
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1 'Schaltet Motorstrom ein
Stepper_enable = 1
Case 2 'Bewegt Motor genau 400 Halbschritte (1 Umdrehung bei den meisten Motoren)
For I = 1 To 400
Stepper_takt = 0 : Waitus 1 : Stepper_takt = 1
Waitms 30
Next
Case 3
For I = 1 To 400
Stepper_takt = 0 : Waitus 1 : Stepper_takt = 1
Waitms 5
Next
Case 4
Toggle Stepper_richtung
Case 5 'Schaltet Motor aus
Stepper_enable = 0
End Select
Sound Portd.7 , 400 , 500 'BEEP
End If
Waitms 100
Loop
End
' Diese Unterfunktion fragt die Tastatur am analogen Port ab
' Sollte beim betätigen einer Taste kein Quittungston kommen, dann
' muss die die Tastenabfrage (Select Case Anweisung in Funktion )
' an ihr Board angepaßt werden. Widerstandstoleranzen sorgen in
' Einzelfällen manchmal dafür das die Werte etwas anders ausfallen
' Am besten dann den WS wert mit Print für jede Taste ausgeben lassen
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Ton = 600
Ws = Getadc(7)
' Print "ws= " ; Ws
If Ws < 1010 Then
Select Case Ws
Case 400 To 455
Tastenabfrage = 1
Ton = 550
Case 335 To 380
Tastenabfrage = 2
Ton = 500
Case 250 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
ich bin noch ein ziemlicher Anfänger was Elektronik und Programmierung betrifft daher eine recht simple Frage.
Wie kann ich in den Code von RN_Stepp297_beispiele.bas von der Robotikhardware CD folgende Funktion einfügen
Wenn ich die Taste 2 drücke (Case2) soll sich der Schrittmotor 82 Schritte drehen dann eine Pause von 2 sec einlegen und dann wieder 82 Schritte drehen und das ganze 72 mal
Hier ist nochmal der Ganze Code und Danke im Voraus
'################################################# ##
'Schrittmotoransteuerung mit RN-Control und
'Ansteuerungsboard RN-Stepp297
'RN-Stepp297 ist die bekannt Standardschaltung
'mit L297 und L298 (Bausatz)
'rn_stepp297_beispiele
'
' Achtung:
' Diese Demo ist mit Bascom Compiler 1.11.8.4 getestet
' Getestet mit RN-Schrittmotor Firmware V 1.1
'
' RN-Stepp97 wird wie folgt angeschlossen
' Enable auf PA0 / Richtung auf PA1 / Takt auf PA2
'
'Aufgabe:
' Dieses Testprogramm zeigt wie man RN-Stepp297
' über Takt- und Richtungsleitung ansteuert
' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
' Taste 1: Schaltet Motorstrom ein (Stellung wird gehalten)
' Taste 2: Bewegt Motor genau 400 Halbschritte (1 Umdrehung bei den meisten Motoren)
' Taste 3: Bewegt Motor schneller genau 400 Halbschritte
' Taste 4: Ändert die Drehrichtung
''Taste 5: Schaltet Motor aus
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'in der Anleitung zu RN-Schrittmotor
'Anleitung findet man unter http://www.Roboternetz.de im Download Bereich
'oder www.robotikhardware.de
'Weitere Beispiele sind im Roboternetz gerne willkommen!
'################################################# #############
$programmer = 12 'MCS USB (Zeile weglassen wenn anderer Programmer)
' -------------- RN-Control übliche _____________________
Declare Function Tastenabfrage() As Byte
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Dim Taste As Byte
Dim Ton As Integer
I2cinit
Start Adc
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Print "**** RN-CONTROL V1.4 *****"
Print "Demoprogramm um Zusatzboard RN-Stepp297 zu testen/demonstrieren"
' -------------- Ende RN-Control übliche _____________________
Config Pina.0 = Output
Stepper_enable Alias Porta.0
Config Pina.1 = Output
Stepper_richtung Alias Porta.1
Config Pina.2 = Output
Stepper_takt Alias Porta.2
Dim I As Integer
Stepper_enable = 0 ' Erst mal aus
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1 'Schaltet Motorstrom ein
Stepper_enable = 1
Case 2 'Bewegt Motor genau 400 Halbschritte (1 Umdrehung bei den meisten Motoren)
For I = 1 To 400
Stepper_takt = 0 : Waitus 1 : Stepper_takt = 1
Waitms 30
Next
Case 3
For I = 1 To 400
Stepper_takt = 0 : Waitus 1 : Stepper_takt = 1
Waitms 5
Next
Case 4
Toggle Stepper_richtung
Case 5 'Schaltet Motor aus
Stepper_enable = 0
End Select
Sound Portd.7 , 400 , 500 'BEEP
End If
Waitms 100
Loop
End
' Diese Unterfunktion fragt die Tastatur am analogen Port ab
' Sollte beim betätigen einer Taste kein Quittungston kommen, dann
' muss die die Tastenabfrage (Select Case Anweisung in Funktion )
' an ihr Board angepaßt werden. Widerstandstoleranzen sorgen in
' Einzelfällen manchmal dafür das die Werte etwas anders ausfallen
' Am besten dann den WS wert mit Print für jede Taste ausgeben lassen
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Ton = 600
Ws = Getadc(7)
' Print "ws= " ; Ws
If Ws < 1010 Then
Select Case Ws
Case 400 To 455
Tastenabfrage = 1
Ton = 550
Case 335 To 380
Tastenabfrage = 2
Ton = 500
Case 250 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