Und genau hier wär das _vollständige_ Programm wichtig. Nicht nur ein Ausschnitt.Zitat von xbgamer
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:
Code: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
Und genau hier wär das _vollständige_ Programm wichtig. Nicht nur ein Ausschnitt.Zitat von xbgamer
#ifndef MfG
#define MfG
ok hier:
Code:$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.
MfG
Tido
---------------------------------------------------
Have you tried turning it off and on again???
---------------------------------------------------
Zitat von Tido
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
MfG
Tido
---------------------------------------------------
Have you tried turning it off and on again???
---------------------------------------------------
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
MfG
Tido
---------------------------------------------------
Have you tried turning it off and on again???
---------------------------------------------------
Das ganze kannst du doch auch mit einer oder Verknüpfung lösen:
if zustandX erreicht or zustand Y then
Relais setzen
MfG
Neutro
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
Lesezeichen