- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 35

Thema: Wecker bauen

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.01.2007
    Ort
    westliches Pannonien
    Beiträge
    123
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo!

    Versuch mal das:
    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    
    
    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.2 = 1
    'Declare Sub Keypressed
    
    Cls
    
    Do
    Debounce Pind.2 , 0 , Keypressed
    Loop
    End
    
    Keypressed:
    Locate 2 , 1
    Lcd "mp3"
    Return

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    bin jetzt schon etwas weiter bloß hab ich ein problem und zwar funktioniert das entprellen bei dem einstellen der zeit nicht. die anzeige rast dann.
    der letzte sub sollte für die einstellung sein nur irgendwie entprellt er nicht.

    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.2 = 1
    Portd.3 = 1
    Portd.4 = 1
    Portd.5 = 1
    Portd.6 = 1
    Portd.7 = 1
    
    Enable Interrupts
    Config Clock = Soft
    Config Portd = Input
    Declare Sub Stunde
    Declare Sub Minute
    Declare Sub Ausgabe
    Declare Sub Menue
    Dim Modus As Byte
    Declare Sub Einstellen
    Cls
    
    Time$ = "00:00:00"
    
    Do
       Locate 1 , 1
       Lcd Time$ ; "  " ;
       Debounce Pind.3 , 0 , Stunde , Sub
       Debounce Pind.4 , 0 , Minute , Sub
       Debounce Pind.2 , 0 , Menue , Sub
       Debounce Pind.7 , 0 , Einstellen , Sub
    Loop
    
    
    
    
    
    
    Menue:
    Gosub Ausgabe
    Return
    
    
    
    Ausgabe:
    Incr Modus
    If Modus = 3 Then Modus = 0
    Locate 2 , 1
    If Modus = 0 Then
    Locate 2 , 1
    Wait 1
    Lcd "MP3  "
    Portb.0 = 1
    Else
    Portb.0 = 0
    End If
    
    If Modus = 1 Then
    Locate 2 , 1
    Wait 1
    Lcd "Radio"
    Portb.1 = 1
    Else
    Portb.1 = 0
    End If
    
    If Modus = 2 Then
    Locate 2 , 1
    Wait 1
    Lcd "AUX  "
    Portb.2 = 1
    Else
    Portb.2 = 0
    End If
    Return
    
    
    
    'Stunde
    Sub Stunde
    Waitms 200
    Cls
    Waitms 200
    Do
    Locate 1 , 1
    Lcd "Stunde"
    Locate 1 , 10
    Lcd _hour
    If Pind.7 = 0 Then
    Incr _hour
    Locate 1 , 10
    Lcd _hour
    End If
    If _hour > 23 Then
    _hour = 00
    End If
    Loop Until Pind.3 = 0
    Waitms 200
    Cls
    Waitms 200
    End Sub
    
    
    
    'Minute
    Sub Minute
    Waitms 200
    Cls
    Waitms 200
    Do
    Locate 1 , 1
    Lcd "Minute"
    Locate 1 , 10
    Lcd _min
    If Pind.7 = 0 Then
    Incr _min
    Locate 1 , 10
    Lcd _min
    End If
    If _min > 59 Then
    _min = 00
    End If
    Loop Until Pind.4 = 0
    Waitms 200
    Cls
    Waitms 200
    End Sub
    
    Return
    
    
    'einstellen
    Sub Einstellen
    Gosub Stunde
    Gosub Minute
    End Sub
    Return

  3. #23
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Die weiteren Locates im Modus kannst Du dir sparen. Wofür sind die Waits gedacht? Du rufst Subs mit Gosub und debounce auf. Wofür soll der Einstellungen "Knop" gut sein? Irgendwie ist einiges doppelt, bzw ich versteh nicht, welchen Zweck es erfüllt.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    habs gerade nochmal überarbeitet:
    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.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 Ausgabe
    Declare Sub Menue
    Dim Modus As Byte
    Declare Sub Einstellen
    Cls
    
    Time$ = "00:00:00"
    
    Do
       Locate 1 , 1
       Lcd Time$ ; "  " ;
       Debounce Pind.3 , 0 , Stunde , Sub
       Debounce Pind.4 , 0 , Minute , Sub
       Debounce Pind.2 , 0 , Menue , Sub
       Debounce Pind.7 , 0 , Einstellen , Sub
    Loop
    
    
    
    
    
    Menue:
    Incr Modus
       If Modus = 4 Then Modus = 0
       Locate 2 , 1
       If Modus = 0 Then
          Locate 2 , 1
          Wait 1
          Lcd "Aus  "
       End If
    
    
       If Modus = 1 Then
          Locate 2 , 1
          Wait 1
          Lcd "MP3  "
          Portb.0 = 1
       Else
          Portb.0 = 0
       End If
    
    
    
       If Modus = 2 Then
          Locate 2 , 1
          Wait 1
          Lcd "Radio"
          Portb.1 = 1
       Else
          Portb.1 = 0
       End If
    
    
    
       If Modus = 3 Then
          Locate 2 , 1
          Wait 1
          Lcd "AUX  "
          Portb.2 = 1
       Else
          Portb.2 = 0
       End If
    Return
    
    
    
    'Stunde
    Sub Stunde
       Incr _hour
       If _hour > 23 Then
          _hour = 00
       End If
    End Sub
    
    
    
    
    'Minute
    Sub Minute
       Incr _min
       If _min > 59 Then
          _min = 00
       End If
    End Sub
    
    Return

    nun muss ich irgendwie die weckzeit einstellen und ausgeben wie gehe ich da vor zwecks variablen und so?

  5. #25
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Versuch doch erstmal selber und poste, wenn Du an einem "Problem" verzweifelst. Denk Dir, wie es geht, und bringe es so Stück für Stück ins Programm.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  6. #26
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    so hab hier das ganze mal mit variablen mal noch mit der weckzeit
    gemacht:
    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.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
    Dim Modus As Byte
    Dim Stellenminute As Byte
    Dim Stellenstunde As Byte
    Cls
    
    Time$ = "00:00:00"
    
    Do
       Locate 1 , 1
       Lcd Time$ ; "  " ;
       Locate 1 , 12
       Lcd Stellenstunde
       Locate 1 , 14
       Lcd ":"
       Locate 1 , 15
       Lcd Stellenminute
       Debounce Pind.2 , 0 , Menue , Sub
       Debounce Pind.3 , 0 , Stunde , Sub
       Debounce Pind.4 , 0 , Minute , Sub
       Debounce Pind.5 , 0 , Stundew , Sub
       Debounce Pind.6 , 0 , Minute W , Sub
    Loop
    
    
    
    
    
    Menue:
    Incr Modus
       If Modus = 4 Then Modus = 0
       Locate 2 , 1
       If Modus = 0 Then
          Locate 2 , 1
          Wait 1
          Lcd "Aus  "
       End If
    
    
       If Modus = 1 Then
          Locate 2 , 1
          Wait 1
          Lcd "MP3  "
          Portb.0 = 1
       Else
          Portb.0 = 0
       End If
    
    
    
       If Modus = 2 Then
          Locate 2 , 1
          Wait 1
          Lcd "Radio"
          Portb.1 = 1
       Else
          Portb.1 = 0
       End If
    
    
    
       If Modus = 3 Then
          Locate 2 , 1
          Wait 1
          Lcd "AUX  "
          Portb.2 = 1
       Else
          Portb.2 = 0
       End If
    Return
    
    
    
    'Stunde
    Sub Stunde
       Incr _hour
       If _hour > 23 Then
          _hour = 00
       End If
    End Sub
    
    
    
    
    'Minute
    Sub Minute
       Incr _min
       If _min > 59 Then
          _min = 00
       End If
    End Sub
    
    Return
    
    'MinuteW
    Sub Minutew
    Incr Stellenminute
       If Stellenminute > 59 Then
       Stellenminute = 00
       End If
    End Sub
    Return
    
    
    'Stundew
    Sub Stundew
    Incr Stellenstunde
       If Stellenstunde > 23 Then
       Stellenstunde = 00
       End If
    End Sub
    Return

    nun habe ich dazu noch ne frage. wie bekomme ich es hin dass stellen
    minute und stellenstunde mit 00 anzeigen. so wird mir nur eine 0
    angezeigt wo dann beim überlauf die letzte ziffer immer stehen bleibt.

    dann noch ne frage ich habe das ganze mit der anzeige so gelöst:

    Locate 1 , 12
    Lcd Stellenstunde
    Locate 1 , 14
    Lcd ":"
    Locate 1 , 15
    Lcd Stellenminute
    gibt es da ne elegantere möglichkeit?

  7. #27
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    so also ich bin fast fertig. probleme habe ich noch mit 2 sachen:

    1. ich möchte dass das sub onoff immer erscheint wenn konfiguration = 0 jedoch soll eben der taster pind.6 mit debounce auch entprellt sein.

    2. dann habe ich noch ein problem mit dem format. meine weckzeit wird mir immer als 0:0 ausgegeben ich will aber 00:00 haben wie mache ich das?

    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.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 Licht
    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
       Lcd Stellenstunde ; ":" ; Stellenminute
       Debounce Pind.2 , 0 , Menue , Sub
       Debounce Pind.3 , 0 , Stellenmenue , Sub
    
       If Konfiguration = 1 Then                                'Wecker stellen
          Debounce Pind.4 , 0 , Stundew , Sub
          Debounce Pind.5 , 0 , Minutew , Sub
       End If
    
       If Konfiguration = 2 Then                                'Uhr stellen
          Debounce Pind.4 , 0 , Stunde , Sub
          Debounce Pind.5 , 0 , Minute , Sub
       End If
    
       If Konfiguration = 0 Then                                'Wecker an/aus
       Debounce Pind.6 , 0 , Onoff , Sub
       End If
    
    
       If Stellenstunde = _hour And Stellenminute = _min And Anaus = 1 Then
                   Portb.5 = 1
                   Else
                   Portb.5 = 0
       End If
    
       Debounce Pind.7 , 0 , Licht , Sub
    
    Loop
    
    
    
    'Stellenmenü                                                'Menü zum einstellen Wecker/Uhr
    Sub Stellenmenue
    Incr Konfiguration
       If Konfiguration = 3 Then Konfiguration = 0
       Locate 2 , 11
       If Konfiguration = 0 Then
          Locate 2 , 11
          Wait 1
          Lcd "      "
       End If
    
    
       If Konfiguration = 1 Then
          Locate 2 , 11
          Wait 1
          Lcd "Wecker"
       End If
    
    
    
       If Konfiguration = 2 Then
          Locate 2 , 11
          Wait 1
          Lcd "   Uhr"
       End If
       End Sub
    Return
    
    
    'Menü                                                       'Menü MP3, Radio, Aux
    Menue:
    Incr Modus
       If Modus = 4 Then Modus = 0
       Locate 2 , 1
       If Modus = 0 Then
          Locate 2 , 1
          Wait 1
          Lcd "Aus  "
       End If
    
    
       If Modus = 1 Then
          Locate 2 , 1
          Wait 1
          Lcd "MP3  "
          Portb.0 = 1
       Else
          Portb.0 = 0
       End If
    
    
    
       If Modus = 2 Then
          Locate 2 , 1
          Wait 1
          Lcd "Radio"
          Portb.1 = 1
       Else
          Portb.1 = 0
       End If
    
    
    
       If Modus = 3 Then
          Locate 2 , 1
          Wait 1
          Lcd "AUX  "
          Portb.2 = 1
       Else
          Portb.2 = 0
       End If
    Return
    
    
    
    'Stunde                                                    'Hier wird die Stunde der Uhr hochgezählt
    Sub Stunde
       Incr _hour
       If _hour > 23 Then
          _hour = 00
       End If
    End Sub
    
    
    
    'Minute                                                     'Hier wird die Minute der Uhr hochgezählt
    Sub Minute
       Incr _min
       If _min > 59 Then
          _min = 00
       End If
    End Sub
    
    Return
    
    
    
    'MinuteW                                                    'Hier wird die Minute des Weckers hochgezählt
    Sub Minutew
    Incr Stellenminute
       If Stellenminute > 59 Then
       Stellenminute = 0
       End If
    End Sub
    Return
    
    
    
    'Stundew                                                    'Hier wird die Stunde des Weckers hochgezählt
    Sub Stundew
    Incr Stellenstunde
       If Stellenstunde > 23 Then
       Stellenstunde = 0
       End If
    End Sub
    Return
    
    
    
    'onoff                                                      'Hier wird der Wecker ein- und ausgeschaltet
    Sub Onoff
    Incr Anaus
       If Anaus = 2 Then Anaus = 0
       Locate 2 , 13
       If Anaus = 0 Then
          Locate 2 , 14
          Wait 1
          Lcd "aus"
       End If
    
       If Anaus = 1 Then
          Locate 2 , 14
          Wait 1
          Lcd " an"
       End If
    End Sub
    Return
    
    
    
    
    'Licht                                                      'Hier wird das Licht für 4 Sekunden eingeschaltet
    Sub Licht
    
       Portc.5 = 1
       Wait 4
    
    End Sub
    Return

  8. #28
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von xbgamer
    Declare Sub Stunde
    Declare Sub Minute
    Declare Sub Menue
    Declare Sub Stundew
    Declare Sub Minutew
    Declare Sub Onoff
    Declare Sub Licht
    Declare Sub Stellenmenue
    Debounce erwartet Subs vom Label-Typ, keine richtige Sub.
    Die Declares kannst du alle löschen.

    Dies
    Code:
    Sub Stellenmenue
    Incr Konfiguration
       If Konfiguration = 3 Then Konfiguration = 0
       Locate 2 , 11
       If Konfiguration = 0 Then
          Locate 2 , 11
          Wait 1
          Lcd "      "
       End If
       If Konfiguration = 1 Then
          Locate 2 , 11
          Wait 1
          Lcd "Wecker"
       End If
       If Konfiguration = 2 Then
          Locate 2 , 11
          Wait 1
          Lcd "   Uhr"
       End If
       End Sub
    Return
    sollte so aussehen
    Code:
    Stellenmenue:
    Incr Konfiguration
       If Konfiguration = 3 Then Konfiguration = 0
       Locate 2 , 11
       If Konfiguration = 0 Then
          Locate 2 , 11
          Wait 1
          Lcd "      "
       End If
       If Konfiguration = 1 Then
          Locate 2 , 11
          Wait 1
          Lcd "Wecker"
       End If
       If Konfiguration = 2 Then
          Locate 2 , 11
          Wait 1
          Lcd "   Uhr"
       End If
    Return
    Zitat Zitat von xbgamer
    2. dann habe ich noch ein problem mit dem format. meine weckzeit wird mir immer als 0:0 ausgegeben ich will aber 00:00 haben wie mache ich das?
    Z.B. so
    Code:
    If Stellenstunde<10 Then Lcd "0"
    Lcd Stellenstunde ; ":"
    If Stellenminute<10 Then Lcd "0"
    Lcd Stellenminute

  9. #29
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    also das mit dem format verstehe ich nicht so ganz. muss ich dass in die hauptschleife reinfügen oder kann ich es auch in die sub einfügen?

    dann habe ich noch das problem dass wenn ich das menü durchdrücke dass ich wenn es klar ist wieder zum aktivieren des weckers auf die taste pind.6 drücken muss dass überhaupt mal wieder an oder aus erscheint.

    ich will aber dass der zustand bleibt und sobald ich wieder bei konfiguration = 0 bin dass der zustand von der onoff schleife angezeigt wird.

    wie mach ich das am besten?

  10. #30
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.05.2006
    Ort
    Oberschopfheim
    Alter
    36
    Beiträge
    380
    ich bin jetzt soweit fertig nur wie startet man die uhr denn mit welchem befehl?

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen