Hallo Fred
1. Die länge würde ca. 5Meter sein.
2. Die spannung wurde von hauptcontroller bekommen.
3. ich benutze einen ATmega8 würde auch auf einen ATmega168 Gehen und I2C-Bus ist frei weil da schon ein I2C-LCD Dran Hängt.
4. Ja
so dann will ich mal den Code senden hier
CodeBox BascomAVR
$lib "Lcd_i2c.lib" 'ersetzt die Standard LCD Library
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
Const Pcf8574_lcd = &H70 'I2C Adresse &H40
Config I2cdelay = 15 'delay von 5=20µs=50kHz,10=10µs=100kHz;5=5µs=200KHz
Config Scl = Portc.5 'I2C SCL Pin
Config Sda = Portc.4 'I2C SDA Pin
Dim _lcd_e As Byte
_lcd_e = 64
I2cinit
'Mini Zeichen symbole
Deflcdchar 0 , 32 , 32 , 32 , 4 , 12 , 4 , 4 , 4 '1
Deflcdchar 1 , 32 , 32 , 32 , 14 , 2 , 14 , 8 , 14 '2
Deflcdchar 2 , 32 , 32 , 32 , 14 , 2 , 14 , 2 , 14 '3
Deflcdchar 3 , 32 , 32 , 32 , 8 , 8 , 14 , 4 , 4 '4
Deflcdchar 4 , 32 , 32 , 32 , 32 , 4 , 14 , 4 , 32 '+
Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 12 , 32 , 32 '-
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "V3/Sch.2015"
Waitms 800
'---Ausgänge---
'------------------------
Config Portd.6 = Output 'PD6 - Realis_1 - Katzen
Realis_1 Alias Portd.6
'------------------------
Config Portd.5 = Output 'PD5 - Realis_2 - Prtivat
Realis_2 Alias Portd.5
'------------------------
Config Portd.4 = Output 'PD4 - Realis_3 - Hauptleitung Aus
Realis_3 Alias Portd.4
'------------------------
Config Portd.3 = Output 'PD3 - Realis_4 - Licht
Realis_4 Alias Portd.3
'------------------------
Config Portd.2 = Output 'PD2 - Realis_5
Realis_5 Alias Portd.2
'------------------------
Config Portc.0 = Output 'PC2 - LED Realis 1-4
Led_realis Alias Portc.0
'------------------------
Config Portc.1 = Output 'PC1 - LED Taster ( TEST )
Led_taster Alias Portc.1
'------------------------
Config Portc.2 = Output 'PC2 - LED Eingang1
Led_eing1 Alias Portc.2
'------------------------
Config Portc.3 = Output 'PC3 - LED Eingang2
Led_eing2 Alias Portc.3
'------------------------
'Config Portd.1 = Output 'PD1 - Leer_01
'Leer_01 Alias Portd.1
'--------Ausgänge--------
'--------Eingänge--------
Config Portb.0 = Input 'PD0 - Ein_1
Portb.0 = 0
Input_1 Alias Pinb.0
Config Portb.1 = Input 'PD1 - Ein_2
Portb.1 = 0
Input_2 Alias Pinb.1
Config Portb.2 = Input 'PD2 - Ein_3
Portb.2 = 0
Input_3 Alias Pinb.2
Config Portb.3 = Input 'PD3 - Ein_4
Portb.3 = 0
Input_4 Alias Pinb.3
Config Portd.1 = Input 'PB1 - Taster ( TEST )
Portd.1 = 1
Taster_test Alias Pind.1
'-------Eingänge--------
Declare Sub Klingel_pk 'Klingel ( P ) und ( K )
Declare Sub Klingel_p
'Declare Sub Klingel_3 'Klingel ( P )
Declare Sub Klingel_4 'Wartung programm
Declare Sub Ausgang_test
Dim I As Long 'TIMER LICHT ( REALIS ) EINGANG
Dim A As Byte
Dim B As Byte
A = &B10000000 'PCF8574 PORT7 AUS
B = &B00000000 'PCF8574 PORT7 AN
I2csend &H70 , A 'I2C - LCD Hintergrund AUS
Do
If Input_1 = 1 Then Gosub Klingel_p 'KLINGEL-PRIVAT & KATZEN 0kleber
If Input_2 = 1 Then Gosub Klingel_pk 'KLINGEL-PRIVAT
'Debounce Input_3 , 1 , Klingel_3 , Sub 'Wartung an der anlage
Debounce Input_4 , 1 , Klingel_4 , Sub
If Taster_test = 1 Then Gosub Ausgang_test
'------------------------------------------------------------------------
If I = 0 Then 'Timer LICHT
Realis_1 = 0
Waitms 1
Else
Decr I
End If
Loop
'-----------------------------------------------------------------------
Sub Klingel_pk
I2csend &H70 , B
E = 6000000
Realis_1 = 1 'TIMER LICHT EINGANG
I = 9000000 'TIMER LICHT EINGANG
Led_eing2 = 1
Led_realis = 1 '
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "( P ) & ( K )"
Realis_3 = 1
Waitms 400
Realis_3 = 0 : Realis_4 = 1
Waitms 400
Realis_4 = 0
Waitms 200
Realis_4 = 1 : Realis_3 = 1
Waitms 300
Realis_3 = 0
Waitms 300
Realis_4 = 0
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "B E R E I T"
Waitms 700
Led_eing2 = 0
Led_realis = 0
I2csend &H70 , A
End Sub
'-----------------------------------------------------------
Sub Klingel_p
I2csend &H70 , B 'TIMER LICHT EINGANG
Led_eing1 = 1
Led_realis = 1
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "( P ) & ( - )"
Realis_3 = 1
Waitms 400 'Voher 500
Realis_3 = 0
Waitms 200
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "B E R E I T"
Waitms 700
Led_eing1 = 0
Led_realis = 0
I2csend &H70 , A
End Sub
'----------------------------------------------------------
'Klingel_3:
'---------------------------------------------------------
Klingel_4:
I2csend &H70 , B
Toggle Realis_2
Toggle Realis_5
If Realis_2 = 1 Then
Cls
Locate 1 , 1
Lcd "SERVICE - A N"
Led_realis = 1
Else
Cls
Locate 2 , 1
Lcd "SERVICE - AUS"
Wait 2
Cls
Locate 1 , 1
Lcd "KLINGEL-MELDER"
Locate 2 , 1
Lcd "B E R E I T"
I2csend &H70 , A
Led_realis = 0
Waitms 2
End If
Return
'--------------------------------------------------------
Sub Ausgang_test
I2csend &H70 , B
Led_taster = 1
Locate 1 , 1
Lcd "Realis - 2 AUS"
Realis_2 = 1
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "Realis&LED"
Led_realis = 1
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS1__ON"
Realis_1 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS1_AUS"
Realis_1 = 0
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS2__ON"
Realis_2 = 1
'Wait 2
'Locate 1 , 1
'Lcd "Funktion TEST"
'Locate 2 , 1
'Lcd "REALIS2_AUS"
'Realis_2 = 0
'Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS3__ON"
Realis_3 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS3_AUS"
Realis_3 = 0
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS4__ON"
Realis_4 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS4_AUS"
Realis_4 = 0
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS5__ON"
Realis_5 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "REALIS5_AUS"
Realis_5 = 0 : Led_realis = 0
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "LICHT AUSSEN"
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "Licht - _AN"
Realis_1 = 1
Wait 2
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "Licht - AUS"
Realis_1 = 0
Wait 2
Cls
Locate 1 , 1
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "LED EIN1&2"
Wait 2
Locate 1 , 2
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "EIN1 = _ON"
Led_eing1 = 1
Wait 2
Locate 1 , 2
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "EIN1 = AUS"
Led_eing1 = 0
Locate 1 , 2
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "EIN2 = _ON"
Led_eing2 = 1
Wait 2
Locate 1 , 2
Lcd "Funktion TEST"
Locate 2 , 1
Lcd "EIN2 = AUS"
Led_eing2 = 0
Wait 2
Cls
Locate 1 , 1
Lcd "FERTIG GETESTET"
Locate 2 , 1
Lcd "Alles aus"
Led_taster = 0
Realis_2 = 0
Wait 2
I2csend &H70 , A
End Sub
Return
End
Verleicht sieht der code wir aus aber es funktionert so wie ich es denke grins.....
Viele Grüße Thorsten Sch.