Hi!
Wenn ich nun noch die Servogeschwindigkeit mit in den Call Aufruf einbinden will, muss der Code dann so aussehen?:
Code:
$regfile = "m32def.dat" 'Die Anweisung bestimmt Ccntrollertyp, hier AVR Mega 32
$crystal = 16000000 'Die Frequenz des verwendeten Quarzes
$baud = 9600 'Die Baudrate für RS232 Ausgabe.
'Sie muss auch bei PC Terminalprogramm identisch sein
'$lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI
'Config Twi = 100000 ' wanted clock frequency
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1 ' wanted clock frequency
Config Twi = 100000
Const Servo_adr = &HC2 'I2C Adress Servo Controller
Declare Sub Servo(posit As Word , Servo_adr As Byte , Servo_spd As Byte) 'Im Kopf der Soft
Call Servo(1500 , 12 , 10) 'so rufst Du auf
Sub Servo(posit As Word , Servo_nr As Byte , Servo_spd As Byte) 'das wird aufgerufen
'Posit = 2320 position (1000 - 2000)
Lsb = Low(posit)
Msb = High(posit)
I2cstart
I2cwbyte Servo_adr ' serv CTRL I2C Addr
I2cwbyte Servo_nr ' servo nr
I2cwbyte Servo_spd ' speed
I2cwbyte Lsb ' lsb of position
I2cwbyte Msb ' Msb of position
I2cstop
Print "Servo " + Servo_nr + " auf Position " + Posit + " mit einer Geschwindigkeit von " + Servo_spd + "
End Sub
Ich glaube Du hattest einen Fehler in Deinem Code. Die Servo_adr ist die I2C Adresse von dem Controller.
Ist mein Code so richtig?
Gruß
Dennis
Lesezeichen