Archiv verlassen und diese Seite im Standarddesign anzeigen : 1 Relais 2 Signale
Servus ich habe ein Problem mit meiner Uhr bzw dem Menü.
Und zwar will ich dass einmal ein Relais anzieht wenn mit einem Taster im Menü Radio auswähle und das andere mal wenn Weckzeit und Uhrzeit übereinstimmen soll der selbe Ausgang gesetzt werden.
nun habe ich im moment ein klacken das relais zieht nicht an. ich vermute dass es an meinen else pind.1 = 0 liegt.
nur wie mache ich das am geschicktesten. desweiteren hab ich keine ahnung wie die uhr überhaupt los läuft. ich hab einen uhrenquarz angeschlossen nur tut sich da nix.
hier mal ein ausschnitt:
Debounce Pind.0 , 0 , Menue , Sub
If Modus = 0 Then
Locate 2 , 1
Lcd "aus "
End If
If Modus = 1 Then
Locate 2 , 1
Lcd "MP3 "
Portb.0 = 1
Else
Portb.0 = 0
End If
If Modus = 2 Then
Locate 2 , 1
Lcd "Radio"
Portb.1 = 1
Else
Portb.1 = 0
End If
If Modus = 3 Then
Locate 2 , 1
Lcd "AUX "
Portb.2 = 1
Else
Portb.2 = 0
End If
If Stellenstunde = _hour And Stellenminute = _min And Anaus = 1 And Modus = 0 Then
Portb.1 = 1
Else
Portb.1 = 0
End If
desweiteren hab ich keine ahnung wie die uhr überhaupt los läuft. ich hab einen uhrenquarz angeschlossen nur tut sich da nix.
Und genau hier wär das _vollständige_ Programm wichtig. Nicht nur ein Ausschnitt.
ok hier:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Lcdbus = 4
Cursor Off
Ddrb = &B11111111
Ddrd = &B00000000
Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Portd.5 = 1
Portd.6 = 1
Portd.7 = 1
Enable Interrupts
Config Clock = Soft
Declare Sub Stunde
Declare Sub Minute
Declare Sub Menue
Declare Sub Stundew
Declare Sub Minutew
Declare Sub Onoff
Declare Sub Stellenmenue
Dim Modus As Byte
Dim Stellenstunde As Byte
Dim Stellenminute As Byte
Dim Konfiguration As Byte
Dim Anaus As Byte
Cls
Time$ = "00:00:00"
Do
Locate 1 , 1
Lcd Time$ ; " " ;
Locate 1 , 12
If Stellenstunde < 10 Then Lcd "0"
Lcd Stellenstunde ; ":"
If Stellenminute < 10 Then Lcd "0"
Lcd Stellenminute
Debounce Pind.0 , 0 , Menue , Sub
If Modus = 0 Then
Locate 2 , 1
Lcd "aus "
End If
If Modus = 1 Then
Locate 2 , 1
Lcd "MP3 "
Portb.0 = 1
Else
Portb.0 = 0
End If
If Modus = 2 Then
Locate 2 , 1
Lcd "Radio"
Portb.1 = 1
Else
Portb.1 = 0
End If
If Modus = 3 Then
Locate 2 , 1
Lcd "AUX "
Portb.2 = 1
Else
Portb.2 = 0
End If
Debounce Pind.1 , 0 , Stellenmenue , Sub
If Konfiguration = 1 Then 'Wecker stellen
Debounce Pind.2 , 0 , Stundew , Sub
Debounce Pind.3 , 0 , Minutew , Sub
End If
If Konfiguration = 2 Then 'Uhr stellen
Debounce Pind.2 , 0 , Stunde , Sub
Debounce Pind.3 , 0 , Minute , Sub
End If
Debounce Pind.4 , 0 , Onoff , Sub
If Konfiguration = 0 Then 'Wecker an/aus
If Anaus = 0 Then
Locate 2 , 11
Lcd " aus"
End If
If Anaus = 1 Then
Locate 2 , 11
Lcd " an"
End If
End If
If Stellenstunde = _hour And Stellenminute = _min And Anaus = 1 And Modus = 0 Then
Portb.1 = 1
Else
Portb.1 = 0
End If
Loop
'Stellenmenü 'Menü zum einstellen Wecker/Uhr
Stellenmenue:
Incr Konfiguration
If Konfiguration = 3 Then Konfiguration = 0
Locate 2 , 11
If Konfiguration = 0 Then
Locate 2 , 11
End If
If Konfiguration = 1 Then
Locate 2 , 11
Lcd "Wecker"
End If
If Konfiguration = 2 Then
Locate 2 , 11
Lcd " Uhr"
End If
Return
'Menü 'Menü MP3, Radio, Aux
Menue:
Incr Modus
If Modus = 4 Then Modus = 0
Return
'Stunde 'Hier wird die Stunde der Uhr hochgezählt
Stunde:
Incr _hour
If _hour > 23 Then
_hour = 00
End If
Return
'Minute 'Hier wird die Minute der Uhr hochgezählt
Minute:
Incr _min
If _min > 59 Then
_min = 00
End If
Return
'MinuteW 'Hier wird die Minute des Weckers hochgezählt
Minutew:
Incr Stellenminute
If Stellenminute > 59 Then
Stellenminute = 0
End If
Return
'Stundew 'Hier wird die Stunde des Weckers hochgezählt
Stundew:
Incr Stellenstunde
If Stellenstunde > 23 Then
Stellenstunde = 0
End If
Return
'onoff 'Hier wird der Wecker ein- und ausgeschaltet
Onoff:
Incr Anaus
If Anaus = 2 Then Anaus = 0
Return
kann ich das problem mit dem relais nicht einfach so lösen dass ich einen anderen ausgang für den wecker schalten lasse und den einfach auch auf das relais anschließe?
sollte ja eigentlich gehen is nur nicht so ellegant wie wenn ichs mit der software mache. nur muss ich dann 2 dioden einbauen die jeweils gegen den anderen port sperren?
Das Problem scheint klar:
Selbst wenn das Relais durch den Taster eingeschlatet wird, so wird es in der Zeile Portb.1 = 0 nach der If-Abfrage
If Stellenstunde = _hour And Stellenminute
wieder ausgeschaltet, wenn die Weckzeit nicht erreicht ist.
Das Problem scheint klar:
Selbst wenn das Relais durch den Taster eingeschlatet wird, so wird es in der Zeile
If Stellenstunde = _hour And Stellenminute
wieder ausgeschaltet, wenn die Weckzeit nicht erreicht ist.
soweit war ich auch schon nur wie kann ich es lösen?
Setz doch beim manuellen Einschalten des Radios eine Variable (lösche sie beim manuellen Ausschalten) und ändere die Zeile in
if variable<>"wert" then Portb.1 = 0
die uhr läuft mittlerweile. bleibt nur noch das problem mit dem relais. dein ansatz versteh ich nicht. ich arbeite doch bereits mit ner variable. siehe modus im code weiter unten.
Dann schreib eben:
if modus<>2 then Portb.1 = 0
Das ganze kannst du doch auch mit einer oder Verknüpfung lösen:
if zustandX erreicht or zustand Y then
Relais setzen
MfG
Neutro
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.