Hier noch ein kleines Demo für RN-Control. Der Motor wird alle 4 Sekunden genau 100 Schritte weitergedreht

Code:
'###################################################
'Kleines Demoprogramm mit
'RN-Control und Ansteuerungsboard RN-MOTOR über I2C
'Alle 4 Sekunden wird Motor 100 Schritte weiterbewegt
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'in der Anleitung zu RN-Motor
'Anleitung findet man unter http://www.Roboternetz.de im Download Bereich
'oder www.robotikhardware.de
'Weitere Beispiele sind im Roboternetz gerne willkommen!
'##############################################################



$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64

'Befehle im Schrittmotorbetrieb
'K ist eine Kennungsnummer die bei RN-Motor immer 10 ist, danach folgt Befehlscode und notwendige Parameter
'Es müssen immer 5 Bytes übertragen werden, auch wenn weniger Parameter ausreichen

'k 1 x y     Motor maximaler Strom x=0 Linker Motor  x=1 Rechte Motor x2= Beide Motoren Y = (Milliampere / 10)
'            Beispiel : Y = 150 Bedeutet 1,5A Oder Y = 20 Bedeutet 200ma
'k 2 y       Referenzspannung des Controllers (normal 2.5 und muss nicht geändert werden)
'            Beispiel:  y=241 bedeutet 2,41 V
'k 3 x       Motor stopp (Haltespannung bleibt ein) x=0 Linker Motor  x=1 Rechte Motor  x2= Beide Motoren Stopp
'k 4 x y     Motor Drehrichtung x=0 Linker Motor  x=1 Rechte Motor x2= Beide Motoren y=0=Links rum  y=1 rechts rum
'k 5 x yl yh Motor genau y Schritte bewegen x=0 Linker Motor  x=1 Rechte Motor  x2= Beide Motoren
                'y wird in High und Low Byte übertragen
'k 6 x       Motor endlose Schritte bewegen bis Stop Befehl kommt x=0 Linker Motor  x=1 Rechte Motor  x2= Beide Motoren

'k 7 x       Motor einen einzigen Schritt bewegen x=0 Linker Motor  x=1 Rechte Motor  x2= Beide Motoren
'k 8 x y     Motor Schrittgeschwindigkeit x=0 Linker Motor  x=1 Rechte Motor x2= Beide Motoren Y = 1 bis 255
'k 9 x       Motor ganz ausschalten  x=0 Linker Motor  x=1 Rechte Motor  x2= Alle Motoren Stopp

'k 10 x      Motor ein und init  x=0 Linker Motor  x=1 Rechte Motor

'k 11        Konfiguration und Testwerte werden über RS232 ausgegeben

'k 12        Sleep Mode

'k 13 x      Motor selektieren

'k 14 x      x=0 Vollschrittmodus  x=1 Halbschrittmodus
'k 15 99 99 x  Slave ID zwischen Hex 50 und Hex 70 ändern (erst ab RN-Motor Firmware 1.1 möglich)


Const Befehl_maxstrom = 1
Const Befehl_referenzspannung = 2
Const Befehl_stop = 3
Const Befehl_drehrichtung = 4
Const Befehl_schrittanzahl_drehen = 5
Const Befehl_endlos_drehen = 6
Const Befehl_einzigen_schritt = 7
Const Befehl_geschwindigkeit = 8
Const Befehl_ausschalten = 9
Const Befehl_einschalten = 10
Const Befehl_konfiguration_zeigen = 11
Const Befehl_sleep_modus = 12
Const Befehl_motor_selektieren = 13
Const Befehl_schrittmotormodus = 14

Const Motor_links = 0
 Const Motor_rechts = 1

Const I2crnmotorslaveadr = &H56                             'I2C SlaveAdresse von RN-Motor Erweiterung
Const I2crnmotorsreadlaveadr = &H57                         'I2C SlaveAdresse von RN-Motor Erweiterung
'Achtung, wenn das Motor-Board überhaupt nicht reagiert, dann könnte dieses eine andere Slave
'Adresse besitzen. Im Zweifel schließen Sie das Motorboard an die RS232 vom PC an und
'drücken Sie die RESET-Taste am Motorboard.Dann kann die Slave ID über ein
'Terminalprogramm angezeigt werden

Dim I2cdaten(6) As Byte                                     'Array um Befehlsfolge auszunehmen


$crystal = 16000000                                         'Quarzfrequenz
$baud = 9600

Config Scl = Portc.0                                        'Ports fuer IIC-Bus
Config Sda = Portc.1


Wait 3                                                      'Kurz warten damit RN-Motor sich initialisieren kann

  I2cinit

  'Motorstrom auf 200mA begrenzen
   I2cdaten(1) = 10                                         'Kennung muss bei RN-Motor immer 10 sein
   I2cdaten(2) = Befehl_maxstrom                            'Befehlscode
   I2cdaten(3) = Motor_links                                '1 Parameter
   I2cdaten(4) = 200 / 10                                   '2 Parameter (hier Milliampere /10 in diesem Fall wird 200mA eingestellt)
   I2csend I2crnmotorslaveadr , I2cdaten(1) , 5             'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
   I2cstop


  'Motor einschalten
  I2cdaten(1) = 10                                          'Kennung muss bei RN-Motor immer 10 sein
  I2cdaten(2) = Befehl_einschalten                          'Befehlscode
  I2cdaten(3) = Motor_links                                 '1 Parameter
  I2csend I2crnmotorslaveadr , I2cdaten(1) , 5              'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
  I2cstop


            'Alle 4 Sekunden 100 Schritte
Do
  I2cdaten(1) = 10                                          'Kennung muss bei RN-Motor immer 10 sein
  I2cdaten(2) = Befehl_schrittanzahl_drehen                 'Befehlscode
  I2cdaten(3) = Motor_links                                 '1 Parameter
  I2cdaten(4) = 100
  I2csend I2crnmotorslaveadr , I2cdaten(1) , 5              'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)

  Wait 4
Loop

End