Problem mit Sanft-Aus-An-Lauflicht

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Problem mit Sanft-Aus-An-Lauflicht

      Guten Tag,

      ich habe eine Frage, ob mir jemand vielleicht weiter helfen kann.
      Wir haben aktuell eine Aufgabe bekommen, doch nach 3 Stündigem probieren habe ich einfach keinen Weg gefunden.
      Um Hilfe wäre ich sehr dankbar!


      Beim Betätigen des Tasters wird das Lauflicht kontinuierlich langsamer und bleibt dann bei der generierten LED-Anzahl für drei Sekunden stehen. Anschließend beschleunigt das Lauflicht auf dieUrsprungsgeschwindigkeit.
      Ursprung aus voriger Aufgabe mit der weiter gearbeitet werden soll ist folgender:




      $regfile = "m8def.dat" 'ATMega8-Deklaration
      $crystal = 3686400 'Taktfrequenz 3,686400MHz
      Ddrd = &B0000000
      Ddrb = &B0111111
      Portd.2 = 1

      Dim X As Byte
      Dim I As Byte
      Dim Z As Byte
      Dim A As Byte
      A = 0
      I = 0
      '-------------------------------------------------------------------------------

      Do

      For I = 0 To 5 Step 1
      Portb.i = 1
      Waitms 150


      If Pind.2 = 0 Then
      Portb = &B00000000
      Waitms 500
      X = Rnd(6)

      For Z = 0 To X
      Portb.z = 1
      Next Z

      Wait 3
      Portb = &B00000000
      A = 0
      End If


      Next I



      For I = 5 To 0 Step -1
      Portb.i = 0
      Waitms 150


      If Pind.2 = 0 Then
      Portb = &B00000000
      Waitms 500
      X = Rnd(6)

      For Z = 0 To X
      Portb.z = 1
      Next Z

      Wait 3
      Portb = &B00000000
      A = 0
      End If
      Next I

      Loop
      End

      Danke im Voraus!

      Mit freundlichen Grüßen
      Michael
    • Hi, noch nicht so recht kapiert, was du machen musst. "bleibt dann bei der generierten LED-Anzahl für drei Sekunden stehen."
      Aber gut. Wenn was langsamer werden soll, dann kann man Pausen zwischen der Aktion immer größer werden lassen. Soll was schneller werden, dann die Pause zwischen den Aktionen immer kleiner machen.
      Wenn du bei sowas
      For I = 0 To 5 Step 1
      Portb.i = 1
      Waitms 150
      next i
      für den Wert 150 beim waitms eine Variable verwendest, die mit 150 initialisierst und dann innerhalb der for..next einfach um zB 100 erhöhst, dann braucht es immer länger, bis die nächste Led aufleuchtet.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Also das Ziel der Aufgabe ist es, ein Lauflicht zu generieren das beim betätigen des Tasters immer langsamer wird dann bei der generierten Zahl von RND stehen bleibt 3 Sekunden so bleibt dann wieder langsam fahrt aufnimmt und auf der ursprünglichen Geschwindigkeit wie vorher ist.
    • Ok, kapiert. Ich würde es so versuchen, dass beim Drücken des Tasters die Led gewürfelt wird, das hast du schon gemacht, dann den Wert für das waitms bei jedem Durchlauf erhöht wird. Das geht so lange, bis das waitms eine gewisse Länge erreicht, oder überschritten hat, dann wird noch so lange weiter gemacht, bis die richtige Led angeschalten wird. So mal im Groben.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • man könnte das mit einer statemachine machen. Schau mal dazu ins Lexikon.
      states wären
      Taste gedrückt
      frisch gedrückt oder schon länger
      vorgegebene längste Wartezeit erreicht j/n
      an der gewürfelten Led angekommen ja/nein
      Wartezeit abgelaufen j/n
      Taste losgelassen
      vorgegebene kürzeste Wartezeit erreicht j/n
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------