Anfänger sucht Hilfe

    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!

    • Anfänger sucht Hilfe

      Hallo Liebe Profis,

      ich bin blutiger Anfänger und versuche nun nach rund 20-jähriger Abstinenz wieder in Basic hineinzufinden um einige kleine Steuerungen meiner Modelleisenbahn zu realisieren.

      Leider bin ich (fast) am verzweifeln, da mein Progrämmchen nicht so funktionieren will, wie ich es mir vorstelle. Im Simulator sind die Funktionen leider so nicht dynamisch testbar, bzw. soweit möglich zu simulieren, funktioniert das so wie gewünscht.

      Hier eine kurze Beschreibung:

      1. Nach Bestätigen einer Hardwaretaste an PB3 soll die Beleuchtung des Rummelplatzes eingeschaltet werden. (Programmzeilen 69-76). Das sollte wie ein T-Flip-Flop funktionieren. Einen ähnlichen Codeschnipsel fand ich schon im Forum. Mit der Änderung der Abfrage der Taste auf logisch 0, da meine Taster gegen GND schalten und die pull-up-Widerstände eingeschaltet sind.
      Leider funktioniert diese Gebilde so nicht. Der Ausgang bleibt aus.

      2. Die Karussells 1 und 2 funktionieren wie gewünscht.

      3. Ab Zeile 103 soll ein Riesenrad nachempfunden werden. In 6 Schritten soll dar Ausgang kurz eingeschaltet werden, dann stehen bleiben (Nachbildung des Ein-und Aussteigens). Danach soll das Rad eine definierte Zeit (hier rund 40 sec) laufen und dann das Prozedere wiederholen. Leider funktioniert das so nicht. Der Asugang wird eingeschaltet und bleibt auf logisch 1.


      Ich hoffe auf hilfreiche Mitglieder in diesem Forum meine Denkfehler zu finden und bin für Hinweise sehr dankbar.

      Mit freundlichem Gruß

      Christian
      Dateien
      • Karusell.bas

        (6,16 kB, 17 mal heruntergeladen, zuletzt: )
      Mit freundlichem Gruß

      Christian
    • Der Alias für den Taster muss

      BASCOM-Quellcode

      1. Taste Alias Pinb.3

      heissen und dein Timer läuft auch keine 40 Sekunden sondern nur im Millisekunden-Bereich.

      Für 100 Millisekunden sollte der Timer so konfiguriert werden


      BASCOM-Quellcode

      1. Const Timer0_Preload = 158
      2. Config Timer0 = Timer, Prescale = 1024
      3. Enable Timer0
      4. Timer0 = Timer0_Preload
      5. On Timer0 Isr_Timer0
      6. Enable Interrupts
      7. Do
      8. Loop
      9. End
      10. Isr_Timer0:
      11. Timer0 = Timer0_Preload
      12. '...Interruptcode...
      13. Return
      Alles anzeigen
      In der Timer-Isr dann eine Variable hochzählen lassen um die 40 Sekunden zu erreichen.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Ich sehe das so, dass doch cirka 1 Sekunde erreicht wird, denn in der Timerroutine wird bis 4 gezählt und der Timer 0 bringt ca 215 ms bei dem 1200000´er Takt, den der Attiny13 von Hause aus mitbringt. Die Cristal$- Einstellung ist allerdings nicht richtig konfiguriert.
      Im Programm selber werden dann die Sekunden aufaddiert und danach geschaltet.
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Hallo,

      vielen Dank für die ersten Antworten.

      Danke djmsc, ich bin mit Blindheit geschlagen. JA natürlich, und jetzt funktioniert mein Flip-Flop wie gewünscht.

      Zum Thema der Konfiguration des Timers. Ich ging von der einfachen Berechnung aus: Wert in $crystal dividiert durch prescale (1024000/1024=1000) also 1 sec. Ist es nicht möglich den Takt durch $crystal frei einzustellen?

      Trotzdem finde ich die Problem in den Zeilen 104 bis 124 nicht

      Viele Grüße
      Christian
      Mit freundlichem Gruß

      Christian
    • chrisabi schrieb:

      Ist es nicht möglich den Takt durch $crystal frei einzustellen?
      Man kann zwar schon etwas mit der Angabe bei $crystal spielen aber nicht in so großen Unterschieden. Nach der Angabe bei $crystal richten sich ja die Berechnungen für Wait.

      Mit den Pausen bei dem Riesenrad musst du natürlich auch noch die Zeit in die Abfrage mit einbeziehen.

      BASCOM-Quellcode

      1. If K3 = 1 And Laufk3 < 40 Then 'wenn Rad läuft überspringe Start/Stopp Prozedur
      2. For I = 1 To 6 'Schleife für 6 mal Start/ Stopp
      3. If Pausek3 = 10 Then 'nach Ablauf ca 10 sec Start
      4. K3 = 1 'Rücksetzen Pausenzeit
      5. Pausek3 = 0
      6. End If
      7. If Laufk3 = 5 Then 'Lauf ca 5 sec
      8. K3 = 0 'Stopp
      9. Laufk3 = 0 'Rücksetzen Laufzeit
      10. End If
      11. Next 'Nach Ablauf Start/Stopp Rad ein
      12. K3 = 1
      13. Else
      14. 'If Laufk3 = 40 Then '40 sec Lauf
      15. K3 = 0
      16. Laufk3 = 0
      17. 'End If
      18. end if
      Alles anzeigen
      Ist jetzt nicht getestet könnte aber so gehen und lass bitte die GOTOs weg.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • djmsc schrieb:

      Mit einem 8-Bit Timer? Eher nicht.
      4 x 215 ms (und in der ISR wird bis 4 gezählt, ehe die einelnen Variablen addiert werden) ergibt 860 ms, also ca 1 Sekunde (wenn man großzügig ist).

      ceperiga schrieb:

      Im Programm selber werden dann die Sekunden aufaddiert und danach geschaltet.
      Das das ein 8 Bit- Timer ist weiß ich selber. a_68_7bac02a1
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • djmsc schrieb:



      BASCOM-Quellcode

      1. If K3 = 1 And Laufk3 < 40 Then 'wenn Rad läuft überspringe Start/Stopp Prozedur
      2. For I = 1 To 6 'Schleife für 6 mal Start/ Stopp
      3. If Pausek3 = 10 Then 'nach Ablauf ca 10 sec Start
      4. K3 = 1 'Rücksetzen Pausenzeit
      5. Pausek3 = 0
      6. End If
      7. If Laufk3 = 5 Then 'Lauf ca 5 sec
      8. K3 = 0 'Stopp
      9. Laufk3 = 0 'Rücksetzen Laufzeit
      10. End If
      11. Next 'Nach Ablauf Start/Stopp Rad ein
      12. K3 = 1
      13. Else
      14. 'If Laufk3 = 40 Then '40 sec Lauf
      15. K3 = 0
      16. Laufk3 = 0
      17. 'End If
      18. end if
      Alles anzeigen
      Ist jetzt nicht getestet könnte aber so gehen und lass bitte die GOTOs weg.
      Hallo,

      das kann so nicht gehen. K3 wird aus den Startbedingungen heraus log. 0 sein. Die Abfrage in Zeile 1 wird also zur ELSE Zeile springen und K3 auf 0 halten. K3 wird also niemals zu log 1 werden.

      Unter Beachtung de Empfehlung zur Goto-Entfernung ergibt sich das angehangene Programm, welche aber ebenfalls eine dauerhafte log 1 an K3 hat. Ich glaube irgendwo einen Schreibfehler zu haben, der die Fehlermeldung überdeckt
      Dateien
      • Karusell.bas

        (6,45 kB, 6 mal heruntergeladen, zuletzt: )
      Mit freundlichem Gruß

      Christian
    • Achtung: Mit $crystal wird der Takt NICHT eingestellt. Kein bisschen.
      Der Takt wird durch die Fuses und ggf. den angeschlossenen Quartz bestimmt.
      Bei $crystal schreibt man dann für den Compiler, was mit mit Fuses/Quartz für einen Takt eingestellt hat.
      Der Compiler glaubt Dir das, was Du bei $crystal schreibst und berechnet darauf basierend die WAITs und ähnliches. Schreibt man bei $crystal nicht den Takt hin, der tatsächlich vorhanden ist, dann hat das Auswirkungen, ist aber Murkserei.
    • So, jetzt hatte ich ein wenig Zeit. Ich finde Dein Vorhaben für den Attiny13 sehr optimistisch. Die Timerfunktion und die Zufallszahlenberechnung kosten viel Platz.

      Dein Programm verharrt während der Riesenradroutine dort und steuert die anderen Ausgänge nicht mehr an. Daher sicherlich die Timerlösung. Bei Deinem Problem kann man das Hauptprogramm aber durchaus mit Wait steuern.

      Hier mal ein "schnelles" Programmbeispiel für die Ansteuerung der beiden anderen Ausgänge mit festen Zeiten. Wenn Du die Zufallszahlenfunktion unbedingt wünschst, nimm doch einen Attiny25. Der ist pinkopatibel und bietet den notwendigen Speicherplatz.

      Im Testprogramm stehen die Zeiten auf 100ms statt auf 1 Sekunde. Ich wollte schließlich "schnell" was sehen.

      Auf meinem Experimentierboard läuft das Programm so, wie ich das versucht habe aus Deinen Angaben rauszulesen (mit Attiny13)

      Das Programm belegt jetzt 78%. Man könnte jetzt versuchen in einer Unterroutine die Erzeugung beider Zufallszahlen zusammenzufassen, hab ich jetzt aber noch nicht probiert. Das könnte ganz knapp passen.

      Edit: reicht nicht, 101%

      BASCOM-Quellcode

      1. '-------------------------------------------------------------------------
      2. 'Karusellsteuerung mit ATtiny13a
      3. '-------------------------------------------------------------------------
      4. 'Info-file
      5. '-------------------------------------------------------------------------
      6. $regfile = "attiny13a.dat"
      7. $crystal = 1200000
      8. $hwstack = 6
      9. $swstack = 6
      10. $framesize = 28
      11. '-------------------------------------------------------------------------
      12. 'Pindefinitionen
      13. '------------------------------------------------------------------------
      14. 'PB0: Ausgang für Karusell 1
      15. 'PB1: Ausgang für Karusell 2
      16. 'PB2: Ausgang für Riesenrad
      17. 'PB3: Eingang für Start (Toggle-Mode)
      18. 'PB4: Ausgang für Dauerlicht
      19. 'PB5:
      20. 'da PB5 als I/O genutzt wird muss fuse bit RSTDISBL abgewählt (angehakt) werden
      21. '-------------------------------------------------------------------------
      22. 'I/O Konfiguration
      23. '-------------------------------------------------------------------------
      24. Ddrb = &B00010111 'PB0,1,2,4 sind Output, PB3 Input
      25. Portb = &B00001000 'Pull-up für Inputs einschalten
      26. '-------------------------------------------------------------------------
      27. 'Variablendecleration
      28. '-----------------------------------------------------------------------
      29. K1 Alias Portb.0
      30. K2 Alias Portb.1
      31. Riesenrad Alias Portb.2
      32. Dauerlicht Alias Portb.4
      33. Taste Alias Pinb.3
      34. Dim Laufk1 As Byte
      35. Dim Laufk2 As Byte
      36. Dim Laufk3 As Byte
      37. dim durchlaufzaehler as byte
      38. '-------------------------------------------------------------------------
      39. 'Programmbeginn
      40. '-------------------------------------------------------------------------
      41. Do
      42. '------------------------------------------------------------------------
      43. 'Dauerlicht Ein/Aus
      44. '------------------------------------------------------------------------
      45. Debounce Taste , 0 , Taster_gedrueckt , Sub
      46. '------------------------------------------------------------------------
      47. 'Karusell 1
      48. '-----------------------------------------------------------------------
      49. if laufk1 < 10 then
      50. k1=1
      51. else
      52. k1=0
      53. end if
      54. if laufk1 =15 then laufk1=0
      55. '-------------------------------------------------------------------------
      56. 'Karusell 2
      57. '-------------------------------------------------------------------------
      58. if laufk2 < 9 then
      59. k2=1
      60. else
      61. k2=0
      62. end if
      63. if laufk2 =17 then laufk2=0
      64. '-------------------------------------------------------------------------
      65. 'Riesenrad
      66. '-------------------------------------------------------------------------
      67. If Riesenrad = 1 And Laufk3 > 40 Then 'wenn Rad läuft und Laufzeit abgelaufen
      68. Riesenrad = 0 'Rad aus
      69. durchlaufzaehler =0 'Bedingung für Pausendurchlauf erfüllen
      70. End If
      71. select case durchlaufzaehler
      72. case 1 to 10 : riesenrad=0 '1. Stop
      73. case 11 to 15:riesenrad=1
      74. case 16 to 25: riesenrad=0 '2.Stop
      75. case 26 to 30:riesenrad=1
      76. case 31 to 40: riesenrad=0 '3.Stop
      77. case 41 to 45:riesenrad=1
      78. case 46 to 55: riesenrad=0 '4.Stop
      79. case 56 to 60:riesenrad=1
      80. case 61 to 70: riesenrad=0 '5.Stop
      81. case 71 to 75:riesenrad=1
      82. case 76 to 85: riesenrad=0 '6.Stop
      83. case 86: laufk3=0:riesenrad=1 'Bedingung zum 40 Sekunden lauf wieder erfüllt
      84. end select
      85. incr durchlaufzaehler
      86. incr laufk1
      87. incr laufk2
      88. waitms 100
      89. '-------------------------------------------------------------------------
      90. Loop
      91. '-----------------------------------------------------------------------------
      92. 'Sub- Unterroutinen für Tasterauswertung:
      93. '-----------------------------------------------------------------------------
      94. Taster_gedrueckt:
      95. toggle dauerlicht
      96. Return
      97. End 'end program
      Alles anzeigen
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Hallo,

      vielen Dank an ceperiga für die viele Mühe. Dieses Musterprogramm hilft meinem Wiedereinstieg in Basic. Das letzte Mal ist schon mehr als 25 Jahre her.

      Die Lösung mit Schleifenzähler ist super. Ich verstehe jetzt endlich den debounce-Befehl.

      Das die Zykluszeit nicht ausreicht und damit das Programm "steckenbleibt" vermutete ich schon einmal, denn nach dem Auskommentieren des Karussells funktionierte die Riesenradsteuerung. Ich verwarf aber den Gedanken wieder, denn bei meinem Freeware-BASCOM zeigte der flash-Speicher 86% Belegung. Eine Prüfung der Zykluszeit verfolgte ich nicht.

      Ich werde wohl auf einen "größeren" AVR umsteigen, denn ich habe noch einige Ideen, die ich in meine Rummelplatzsteuerung einbauen möchte. Weiterhin finde ich es realitätsnäher, wenn die Pausenzeiten zufällig gewählt werden.

      Für die Ergänzung bin ich dankbar. Man lernt nie aus.

      Mit dankbaren Grüßen

      Christian
      Mit freundlichem Gruß

      Christian
    • Vielleicht hilft das beim Wiedereinstieg: bascomforum.de/lexicon/index.p…mikrocontroller-kurs-mck/. Vieles wird Dir bekannt sein, aber es wird sicher auch Neues dabei sein. Dort findest Du auch eine Erklärung zum debounce- Befehl: MCK 1.2.1 Entprellen von Tastern.


      Als praktische Controllerboadrs habe ich inzwischen die ARDUINO- Boads schätzen gelernt. Da ist das wichtigste schon drauf und diese sind gut mit BASCOM programmierbar. Den Mikrocontrollerkurs werde ich in Kürze um einen ARDUINO- Einstieg mit BASCOM erweitern. Um diese nutzen zu können reicht aber schon dieser Lexikoneintrag: Arduino Uno mit BASCOM über Bootloader nutzen (Erste Schritte)


      Gruß ceperiga
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Eventuell kannst da ja aus meinem (nicht ganz fertigen Projekt Signalinterface auch den einen oder anderen Denkanstoß nehmen.
      Im Prinzip musst du dir vorstellen, dass in der Hauptschleife ein Zähler durch einen Timer, der im Interrupt läuft, hochgezählt wird.
      Und entsprechend dem Zählerstand (eben ein Select--Case) wird ein Ereignis (Port ein oder ausschalten) ausgelöst.
      Da dieser Zähler eben durch einen Timer verändert wird, sind damit auch Millisekunden (kleinster Schritt ist die Timerlaufzeit) genaue Schaltzeiten realisierbar.

      Im Prinzip ist das auf die alte Relaistechnik bezogen ein Schrittschaltwerk (Drehwähler) der mit einem zeitgenauen Impuls immer wieder weiter geschaltet wird und je nach Schritt eben einen Verbraucher ein oder aus schaltet, ich gebe aber auch zu, dass das genannte Projekt schon etwas komplexer ist.
      Man kann aber das ganze auch durchaus auf nur einer Ebene und nicht wie ich auf 15 Ebenen (drei Ports können jeweils eine von 15 möglichen Funktionen ausführen praktisch "gleichzeitig") aufbauen.
    • chrisabi schrieb:

      Weiterhin finde ich es realitätsnäher, wenn die Pausenzeiten zufällig gewählt werden
      Wenn man das Programm bei der Arbeit beobachtet, finde ich das auch mit festen Zeiten für die beiden anderen Ausgänge das ganze nicht großartig anders aussieht, als wenn Zufallszahlen verwendet würden. Die Impuls- und Pausenwerte der beiden Ausgänge sind stark asymetrisch zueinander, sodass der Betrachter eigentlich kein System dahinter erkennen kann, was ja mit den Zufallszahlen eigentlich gewünscht wird.
      Eventuell kann man an den Impuls- und Pausenwerten noch etwas "spielen", aber der Effekt wird sehr ähnlich undurchsichtig bleiben.

      Hast Du Bilder oder ein "Filmchen"? Wäre mal interessant zu sehen.
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Hallo.

      ceperiga schrieb:

      Hast Du Bilder oder ein "Filmchen"? Wäre mal interessant zu sehen.
      klar, mache ich, sobald das Progrämmchen steht und die Hardware fertig aufgebaut ist. Im Moment experimentiere ich noch, ob ich einen Motortreiber oder ein Relais für die Ansteuerung der Karussellmotoren nehme. Das Riesenrad ist ursprünglich ein Faller-Modell. Die Konstruktion für Spur N aber kompletter Mist. Ich baue ein neues Ständerwerk, um eine vernünftige Stabilität zu bekommen.

      Ich habe das Programm inzwischen auf einen 90S8015 umgeschrieben (der lag in der Packung für das STK500. Die alte Type kann für diese Applikation gute Dienste leisten ) und nutze nun den Timer1 für Karussell 1 und 2. Für das Riesenrad teste ich beide Lösungen (Timer und select case). Mal sehen was besser geht.

      Da ich nun einen AVR einsetze, der viele Ausgänge hat, werde ich auch die "Lichtspiele" für die Jahrmarktsbuden mit integrieren. Falls der Speicher es hergibt, werden auch noch einige Liedchen als Musik abgespielt, wenn eines der 3 Karussells läuft.

      Aber das dauert noch.

      Viele Grüße

      Christian
      Mit freundlichem Gruß

      Christian
    • chrisabi schrieb:

      Für das Riesenrad teste ich beide Lösungen (Timer und select case). Mal sehen was besser geht.
      Wieso beide Lösungen? Die Timer- ISR würde auch nur den Schalttakt vorgeben, was ich im Programm mit dem Waitbefehl gemacht habe um Rssourcen zu sparen. Die Verwendung des Timers ist elegant und bei vielen Programmen alternativlos, bei Deinem Programm stört das allerdings gar nicht. Auch wenn es "feinfüliger" werden soll (insbesondere bei der Tasterabfrage) kannst Du immer noch mit waitms 100 arbeiten und die Schaltzeiten verzehnfachen. Das Ergebnis bleibt bekanntlich das selbe, nur die Reaktionszeit auf den Tastendruck verringert sich, aber selbst das sollte bei der Anwendung nicht stören.

      stefanhamburg schrieb:

      bitte schreib nicht Basic sondern BASCOM.
      Ich glaube chrisabi meint den Wiedereinstieg in die Programmierung von einer basicbasierten Sprache zu BASCOM
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Hallo ceperiga,

      ich habe inzwischen wieder etwas Zeit gefunden, um an meinem Projekt weiterzuarbeiten.
      Ich habe deine Lösung ausprobiert und rätsle über deine Zykluszeitangaben. Kannst du mir bitte verraten, wie du die Zykluszeiten berechnest, um die Anzahl der Durchlaufzyklen zu definieren.

      Bei mir zeigt der Compiler (BASCOM DEMO) übrigens für Zeile 89 einen Fehler. "Error:35 Line xxx 3 parameters expected".
      Offensichtlich darf man in der DEMO-Version das nicht so schreiben.

      Zwischen Zeile 95 und 96 fehlt noch "incr laufk3"

      Parallel arbeite ich noch an meiner ursprünglichen Lösung mit Timer-Interrupt, denn "nur Übung macht den Meister". Einen Fehler fand ich schon.
      Mit freundlichem Gruß

      Christian

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von chrisabi ()

    • So,
      hab noch einmal auf das Programm gesehen. Der Effekt war zwar vorhanden (so wie es auf meiner Platine lief), programmtechnisch war das aber nicht korrekt.

      Der gesamte Zeitablauf für das Riesenrad passt in die Select- Case- Schleife. Da gibt es dann nicht mehr viele andere Befehle und Bedingungen. Finde ich jetzt die einfachste Lösung. Speicherbedarf beim Attiny13: 76%

      BASCOM-Quellcode

      1. '-------------------------------------------------------------------------
      2. 'Karusellsteuerung mit ATtiny13a
      3. '-------------------------------------------------------------------------
      4. 'Info-file
      5. '-------------------------------------------------------------------------
      6. $regfile = "attiny13a.dat"
      7. $crystal = 1200000
      8. $hwstack = 6
      9. $swstack = 6
      10. $framesize = 28
      11. '-------------------------------------------------------------------------
      12. 'Pindefinitionen
      13. '------------------------------------------------------------------------
      14. 'PB0: Ausgang für Karusell 1
      15. 'PB1: Ausgang für Karusell 2
      16. 'PB2: Ausgang für Riesenrad
      17. 'PB3: Eingang für Start (Toggle-Mode)
      18. 'PB4: Ausgang für Dauerlicht
      19. 'PB5:
      20. 'da PB5 als I/O genutzt wird muss fuse bit RSTDISBL abgewählt (angehakt) werden
      21. '-------------------------------------------------------------------------
      22. 'I/O Konfiguration
      23. '-------------------------------------------------------------------------
      24. Ddrb = &B00010111 'PB0,1,2,4 sind Output, PB3 Input
      25. Portb = &B00001000 'Pull-up für Inputs einschalten
      26. '-------------------------------------------------------------------------
      27. 'Variablendecleration
      28. '-----------------------------------------------------------------------
      29. K1 Alias Portb.0
      30. K2 Alias Portb.1
      31. Riesenrad Alias Portb.2
      32. Dauerlicht Alias Portb.4
      33. Taste Alias Pinb.3
      34. Dim Laufk1 As Byte
      35. Dim Laufk2 As Byte
      36. dim durchlaufzaehler as byte
      37. '-------------------------------------------------------------------------
      38. 'Programmbeginn
      39. '-------------------------------------------------------------------------
      40. Do
      41. '------------------------------------------------------------------------
      42. 'Dauerlicht Ein/Aus
      43. '------------------------------------------------------------------------
      44. Debounce Taste , 0 , Taster_gedrueckt , Sub
      45. '------------------------------------------------------------------------
      46. 'Karusell 1
      47. '-----------------------------------------------------------------------
      48. if laufk1 < 10 then
      49. k1=1
      50. else
      51. k1=0
      52. end if
      53. if laufk1 =16 then laufk1=0
      54. '-------------------------------------------------------------------------
      55. 'Karusell 2
      56. '-------------------------------------------------------------------------
      57. if laufk2 < 9 then
      58. k2=1
      59. else
      60. k2=0
      61. end if
      62. if laufk2 =17 then laufk2=0
      63. '-------------------------------------------------------------------------
      64. 'Riesenrad
      65. '-------------------------------------------------------------------------
      66. select case durchlaufzaehler
      67. case 1 to 10 : riesenrad=0 '1. Stop
      68. case 11 to 15:riesenrad=1
      69. case 16 to 25: riesenrad=0 '2.Stop
      70. case 26 to 30:riesenrad=1
      71. case 31 to 40: riesenrad=0 '3.Stop
      72. case 41 to 45:riesenrad=1
      73. case 46 to 55: riesenrad=0 '4.Stop
      74. case 56 to 60:riesenrad=1
      75. case 61 to 70: riesenrad=0 '5.Stop
      76. case 71 to 75:riesenrad=1
      77. case 76 to 85: riesenrad=0 '3.Stop
      78. case 86 to 126: riesenrad=1 '40 Sekunden Laufzeit für das Riesenrad
      79. case else: durchlaufzaehler=0
      80. end select
      81. incr laufk1
      82. incr laufk2
      83. incr durchlaufzaehler
      84. '===================================
      85. 'Dieser Waitbefehl steuert den Zeitablauf
      86. 'für jeweils einen Zähldurchgang
      87. 'Erhöhung auf 1000 schafft Deinen Sekundenzähler
      88. '-----------------------------------
      89. 'Dieser Waitbefehl kann durch eine Timerinterruptroutine
      90. 'ersetzt werden, wenn der Speicherplatz des
      91. 'Controllers ausreicht
      92. '-----------------------------------
      93. waitms 100
      94. '===================================
      95. '-------------------------------------------------------------------------
      96. Loop
      97. '-----------------------------------------------------------------------------
      98. 'Sub- Unterroutinen für Tasterauswertung:
      99. '-----------------------------------------------------------------------------
      100. Taster_gedrueckt:
      101. toggle dauerlicht
      102. Return
      103. End 'end program
      Alles anzeigen
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.