Hi,
hier ist unser Code:
Code:'################################################### 'Servotest Prg '################################################### $regfile = "m32def.dat" Declare Sub Rnb_servob(byval Servonummer As Byte , Byval Position As Integer) 'i2c-Test Const Writepowerport_adr = &H7E 'I2C Adr PCF 2 Const Readpowerport_adr = &H7F 'I2C Adr PCF 2 Dim I2cdaten As Byte 'Datenbyte aus PCF8574 Dim T As Byte , Senddata As Byte Dim X As Integer Dim Y As Integer X = 128 Y = 128 Senddata = 23 Config Scl = Portc.0 'Ports fuer IIC-Bus Config Sda = Portc.1 'i2c-Test ENDE Dim I As Byte Dim J As Byte Dim Con As Byte J = 1 Dim Pos As Byte $crystal = 8000000 'Quarzfrequenz $baud = 9600 I2cinit I2cstart I2cwbyte &H74 'Schreibbefehl an PCF3 schicken ' Led´s ein ,Motorendstufen ein, Port-Peripherie ein, RBN-Bus Sleep Modus aus (also Peripherie aktiv) I2cwbyte &B00000010 'Datenbyte an PCF3 I2cstop Wiederhole: Waitms 100 I2creceive Readpowerport_adr , Con I2csend Writepowerport_adr , 0 If Con = 0 Then X = X Y = Y End If If Con = 1 Then X = X - 50 If X <= 0 Then X = 0 End If End If If Con = 2 Then X = X - 10 If X <= 0 Then X = 0 End If End If If Con = 3 Then X = X - 1 If X <= 0 Then X = 0 End If End If If Con = 10 Then X = 128 End If If Con = 13 Then X = X + 50 If X >= 255 Then X = 255 End If End If If Con = 12 Then X = X + 10 If X >= 255 Then X = 255 End If End If If Con = 11 Then X = X + 1 If X >= 255 Then X = 255 End If End If If Con = 200 Then Y = Y + 10 If Y >= 255 Then Y = 255 End If End If If Con = 210 Then Y = Y - 10 If Y <= 0 Then Y = 0 End If End If If Con = 220 Then Y = 128 End If If Con = 230 Then Y = 80 End If If Con = 100 Then Call Rnb_servob(2 , 255) Waitms 1000 Call Rnb_servob(2 , 128) Waitms 1500 Call Rnb_servob(2 , 1) Waitms 1000 End If Call Rnb_servob(1 , X) Call Rnb_servob(2 , Y) 'I2csend &H74 , 10100010 'I2csend Readpowerport_adr , 12 'I2cstart 'generate start 'I2cwbyte Writepowerport_adr 'send slave address 'I2cwbyte 1 'send address of EEPROM 'I2cwbyte 3 'send a value 'I2cstop 'Print "I2c gelesen, Wert1:" 'generate stop 'Print X 'I2creceive &H74 , X Print "X =" Print X 'I2csend &H74 , &B11000010 'Waitms 10000 'I2creceive &H74 , X Print "Con =" Print Con Print "Y =" Print Y 'Con = 0 'I2csend &H74 , 01000010 'wait 10 mS because that is the time that the chip needs to write the data 'Print "1000ms gewartet" ' ' 'I2cstart 'I2cwbyte Writepowerport_adr 'I2cwbyte 1 'I2cstart 'I2cwbyte Readpowerport_adr 'generate repeated start 'I2crbyte X , Nack 'I2cstop 'Print "I2c gelesen, Wert2:" 'Print X 'If X = 12 Then Goto Test 'I2creceive Readpowerport_adr , X 'Print "I2c READPORT gelesen, Wert:" 'Print X Goto Wiederhole Sub Rnb_servob(byval Servonummer As Byte , Byval Position As Integer) Open "comd.7:9600,8,n,1" For Output As #2 Print #2 , "#s" ; Chr(servonummer) ; Chr(position) Close #2 End Sub End







Zitieren

Lesezeichen