Hallo,
scheinbar habe ich doch ein HW Problem.
Habe nun einige Beispiele aus dem Internet durchgetestet. Es ist immer so: Der Ausgang wird gesetzt, in kurzer Zeit aber wieder zurückgesetzt. Selbst das Beispiel von der Roboterseite "I2C Relaisplatine RNREL 1.0" funktioniert nicht. Ich verwende den PCF8574P. Habt Ihr noch eine Idee wo ich suchen sollte? Die Relais (hier LED's blinken nur ganz kurz auf, also nicht wie im Programm angegeben 2 Sekunden).
Code:
$regfile = "m16def.dat"
$framesize = 64
$swstack = 50
$hwstack = 50
$crystal = 7372800
$baud = 9600
Declare Sub Rnb_relaisschalten(byval Relaisnr As Byte , Byval Status As Byte)
'Const Relaisport_adr = &H76 'I2C Adr PCF 2
Const Relaisport_adr = &B1001110
Dim Relaisstatus As Byte
Dim I As Byte
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1
I2cinit
Wiederhole:
For I = 0 To 7
Call Rnb_relaisschalten(i , 1) 'Relais i so anziehen
Wait 2 'Warte 2 Sekundne
Call Rnb_relaisschalten(i , 0) 'Relais i soll abfallen
Wait 2 'Warte 2 Sekundne
Next I
Goto Wiederhole
'Die Hilfsfunktion erleichtert das ein und Ausschalten bestimmter Relais
'Variable: Relaisnr ( 0 bis 7) steht für ein bestimmtes Relais
'Variable: status (1 oder 0) schaltet Relais ein oder aus
'Bei Status 1 wird die entsprechende Relais anziehen, bei 0 abfallen
Sub Rnb_relaisschalten(byval Relaisnr As Byte , Byval Status As Byte)
Relaisstatus.relaisnr = Status
I2cstart
I2cwbyte Relaisport_adr 'Schreibbefehl an PCF schicken
I2cwbyte Relaisstatus 'Datenbyte an PCF
I2cstop
End Sub
End
Viele Grüße
Richard
Lesezeichen