-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Die "Weihnachts"-PIC16F84 Frage

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    19.05.2008
    Ort
    Lausitz
    Beiträge
    46

    Die "Weihnachts"-PIC16F84 Frage

    Anzeige

    Hallo @all,
    Weihnachtszeit-Lichterzeit! So ist es und so soll es sein. Jedes Jahr ärgere ich mich über die "Grottenschlechten" Fensterbilder. Ein grausames Gemisch von Blinkgeber Sternschnuppen und überdrehten Lichterketten. Also, als Elektroniker sage ich den Nachbarn den Kampf an!!!!!!!!
    Mit unzähligen LED habe ich eine Weihnachtsglocke gelötet. (übrigens sehr gelungen!) Nun will ich dieser "Leben "einhauchen, indem ich das Glockenpendel zum "Schwingen" bringe. Kein Problem, ein Rechts-Links Lauflicht übernimmt die Aufgabe ohne Probleme. Es sieht absolut echt aus. Was ich vermisse ist das langsame "anschwingen" des Pendels,ein schneller werden und wieder ein "Ausschwingen" Ich dachte in mein Listing einfach noch ein Unterprogramm einzubinden das verschiedene Zeiten des Rechts-Linksschieben erlaubt. Aber wenn ich mit Return aus den UP springe geht er ja zu call und läuft UP wieder ab. Wie springe ich in ein zweites UP und wie springe ich geziehlt zurück????
    Wer hat ne Idee???
    (Hier das Programm von mir was so super geht)
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    17.08.2004
    Beiträge
    1.065
    So, mal sehen. Also ich hab gerade ein Problem bei deinem Code, ich sehe nur EIN Unterprogramm bzw dessen Aufruf, und das wäre CALL Wait.
    Du möchtest ein Ausklingen machen? Ich baue mir immer Wait-Schleifen, die so lange, wie der Wert im Akku* Konstante in Milisekunden, wartet. Also ne einstellbare Wait-Schleife. Du könntest dann eine Aussenschleife machen, in der du den Wert hochzählst. Dh mit jedem Schleifendurchlauf steigt der Wert in W (oder auch einer vereinbarten Speicherzelle) und damit wird die Pauselänger, die Pendelfrequenz langsamer. Du kannst dann ab einem bestimmten Wert die Schleife beenden und hast dann dein Standbild.

    Grobe Form in Pseudo Code
    Schleifen Variablen Initialisieren
    Anfang: Scheife prüfen (ist die Variable größer X, dann weiter sonst nach Ende: )
    Pendel Link
    Warte für X *Konstante sekunden (also movfw X, call Wait)
    Pendel Rechts
    Warte für X *Konstante sekunden (also movfw X, call Wait)
    X=X+1;
    Goto Anfang:
    Ende: Fertig

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Die Lösung, die Du suchst, ist im Prinzip der Ansatz von the_Ghost:

    Irgendwo zählst Du ja eine Variable hoch/runter, der die Wartezeit zwischen zwei Frames (d.h. Bildern) steuert. Dieser Zählwert muss variieren. D.h. er muss während der Schwingung in Richtung Mitte ansteigen, und danach wieder abfallen.
    Wenn Du einen Timer nutzt, dann ändere einfach den Timerzielwert. (Je nach Timermodus der End- oder Startwert)

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.09.2006
    Ort
    Hamburg
    Alter
    35
    Beiträge
    987
    Hi du hast doch da die warte schleife (wait) mach die doch am anfang bei jeden durchlauf nen pahr werte kleiner und irgentwan denn wieder etwas schneller damit haste den des anschwingen / auschwingen
    Legastheniker on Bord !

    http://www.Grautier.com - Projektseite
    http://www.grautier.com/wiki/doku.php?id=bt-index - BT-BUS

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    @theborg: Danke, dass Du die Gedanken unserer Posts nochmal zusammengefasst hast.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.07.2006
    Ort
    Karlsruhe/München
    Alter
    27
    Beiträge
    587
    Du musst die Geschwindigkeit wie einen Sinus gestalten. Ich hänge dir mal 2 Grafiken an, wie du es programmieren könntest.

    Anmerkung: 0, %pi/2 = ganz außen %pi/4 = mitte
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken delete_6.png   delete_11.png  

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Es ist nicht nötig, einen Sinus zu programmieren. Das ist viel zu komplex. Eine simple, lineare Steigerung ist für ein subjektives Schwingen ausreichend. Beachte: Wieviele Bilder werden es insgesamt? 5? 7? 9? Viel mehr nicht.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.07.2006
    Ort
    Karlsruhe/München
    Alter
    27
    Beiträge
    587
    Ja, braucht man nicht unbedingt, wenn es wenige sind, kann man auch ein Lookuptable verwenden....
    Oder halt in ein Linear-workarrount... wobei ich auch denke, dass der unterschied nur minimal sein wird...

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    19.05.2008
    Ort
    Lausitz
    Beiträge
    46
    Hallo,
    erstmal vielen Dank für eure Anregungen. Ich habe später selbst bemerkt das nur ein UP da ist, wie the_Ghost erkannt hat. Bin irgendwie mit goto und call durcheinander gekommen. Habe mir auch schon gedacht mittels dem TMR0 ein UP zu schreiben das einfach mal länger mal kürzer "zählt" Mal sehen ob ich dass so hinbekomme.

    Auf jeden Fall DANKE an alle die mitgedacht haben!!!!

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Zitat Zitat von s.o.
    Ja, braucht man nicht unbedingt, wenn es wenige sind, kann man auch ein Lookuptable verwenden....
    Oder halt in ein Linear-workarrount... wobei ich auch denke, dass der unterschied nur minimal sein wird...
    Da hast Du vollkommen Recht. Eine Tabelle würde hier wohl allen Ansprüchen genügen, egal ob linear oder sinus.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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