- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 4 von 4

Thema: Ich möchte den ds1307 über eine RC5 Fernbedienung beschreiben.

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Du musst die numerischen Wertentsprechungen der per RC5 übertragenen Ziffern ermitteln. Das geht über die schon verwendete CASE-Struktur oder, indem man den Offset (RC5-Code der Ziffer "0") von den RC5-Zifferncodes abzieht. Laut deinem Codebeispiel scheint der Offset = 16 zu sein.
    Recht viel mehr braucht man gar nicht tun, weil die DS1307 ja mit BCD-Darstellung arbeitet. Sollte Bascom allerdings die Stunden/Minuten/Sekunden als zweistellige Zahlen erwarten, berechnet man eben die Ziffernfolge "1", "2" als 1*10 + 2*1 = 12

    Gruß
    RoboHolIC

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    31
    Danke Robo,

    das mit dem Offset, tolle Idee. Habe ich auch gleich umgesetzt.
    Das mit den mehrstelligen Zahlen ist auch genial. Leider schaffe ich es nicht, dass umzusetzen.

    Ich habe da eine do loop Schleife. Da komme ich so nicht weiter.
    Ich habe es mir so vorgestellt:
    Ich drücke die Menü Taste. Diese hat den Code 25. Damit aktiviere ich das Einstellen der Uhr.
    Dann kann ich über die Zifferntasten zum Beispiel 1235 für 12:35 eingeben.
    Wenn die entsprechende Sekunde erreicht ist, drücke ich OK (Code 24) und die Daten werden in den DS1307 geschrieben.
    Ich schaffe es nicht, die Codes in diesem Fall 1235 in eine Variable zu bringen.

    Hier mein Code:

    $regfile = "m16def.dat" 'ATmega 16


    $crystal = 8000000 'Quarz: 8 MHz
    $baud = 9600
    $lib "mcsbyte.lbx" ' for smaller code
    $lib "ds1307clock.lib" ' lib




    Config Rc5 = Pind.2


    Enable Interrupts


    Dim Address As Byte , Command As Byte


    Do


    Getrc5(address , Command)




    If Address = 0 Then
    Command = Command And &B01111111
    Command = Command - 16
    Print "command " ; Command
    End If


    Waitms 200




    Loop


    End

    Danke und Grüße

    Rici

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Hallo Rici.

    Der Fortschritt mit dem Offset ist doch schon mal was!

    Für die weitere Verarbeitung kannst du drei Wege beschreiten: Entweder eine blinde Eingabe von zwei (vier) Ziffern, Umrechnung und erst dann Übernahme der Zahl(en) in die RTC; oder jeden RC5-Empfang sofort einarbeiten: empfangenes Zeichen dekodieren, Byte mit zwei BCDs von der RTC holen, Bitmanipulation mit SHIFT, AND und OR, danach Byte zurückschreiben in die RTC. (verarbeitet Bascom bei der RTC Ziffern oder Zahlen ?) Im letzteren Fall kann es auch ohne Fehleingaben zu unstimmigen Werten kommen: wenn man von 17 Uhr auf 23 Uhr korrigiert, würde nach der ersten "2" nämlich "27:00" Uhr dastehen (fängt Bascom dergleichen ab?). Ich habe keinen Schimmer, was die DS1307 damit machen würde. Wenn es dir nicht zu viel Aufwand ist, probiere es aus, es ist ja doch die elegantere Eingabeoption.
    In jedem Fall sollte man auch eine Plausibilitätskontrolle der Werte machen. Das gilt auch für die blinde Eingabe von zwei bzw. vier Ziffern.

    Die dritte Möglichkeit wäre die inkrementelle Eingabe, wie sie bei Stand-Alone-Weckern , Armbanduhren etc. üblich ist: aktuelle Zahl holen, inkrementieren oder dekrementieren, ggf. Rollover/Rollunder bearbeiten, zurück in die RTC. Die Steuerung könnte so aussehen: Cursor hoch/runter +/- eine Stunde; Cursor links/rechts -10 / +1 Minute.

    Vielleicht gehen meine Beiträge auch etwas an deiner Bascom-Realität vorbei. Ich habe damit keinerlei Erfahrung damit, weil ich ausschließlich mit PIC-Controllern und Assembler arbeite und daher alles "zu Fuß" mache. Derzeit steht mein erstes RTC-Projekt mit einer DS1307 vor der Vollendung: Der TRAUMINATOR - ein Wecker und Nickerchen-Timer mit der Option zu "multimedialen" Wecksignalen: Rütteln, pusten, Ding-Dong-Klingel etc. und natürlich auch ein Piepser (, den ich bei käuflichen Weckern aber oft nicht höre, wenn ich auf dem falschen Ohr liege!!! Das war auch die Triebkraft zur Entwicklung eines eigenen bedarfsgerechten Schlafterminierungssystems). Bedient wird er lediglich mit drei Tasten - geht alles.

    Gruß
    RoboHolIC

Ähnliche Themen

  1. Ich möchte mir eine Steuerbare Sitzplatte bauen .
    Von HandyRipper im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 5
    Letzter Beitrag: 30.10.2009, 17:36
  2. Ich möchte eine Neuses Thema aufmachen, Fehler (Anfänger)
    Von jojo.glaser im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 19.12.2006, 23:48
  3. Wie stelle ich den rp5 auf meine fernbedienung ein
    Von sebi2011 im Forum Robby CCRP5
    Antworten: 1
    Letzter Beitrag: 17.09.2005, 21:41
  4. Ich möchte eine Kugelmaus als Drehgeber verwenden.
    Von Bastlwastl im Forum Sensoren / Sensorik
    Antworten: 27
    Letzter Beitrag: 08.08.2004, 18:39
  5. Ich möchte eine Robotter...
    Von Lord_Dante im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 7
    Letzter Beitrag: 06.03.2004, 20:50

Stichworte

Berechtigungen

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

12V Akku bauen