- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 22

Thema: Mit Taster von einem Loop zum nächsten springen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Mcgrizzly123
    Registriert seit
    15.06.2012
    Beiträge
    142
    Hi

    du musst die Variablen Modus und AnzahlModi auch definieren.

    Code:
    $regfile = "attiny13.dat"
    $crystal = 1200000
    $hwstack = 0
    $swstack = 0
    $framesize = 0
    
    Config Portb.1 = Output
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Portb.4 = Output
    Config Pinb.0 = Input
    
    Dim Modus As Integer
    Dim Anzahlmodi As Integer
    Modus = 1
    Anzahlmodi = 2
    
    do
       If Pinb.0 = 1 Then Incr Modus
       If Modus > AnzahlModi then Modus=1
       Select Case Modus
       Case 1
          Gosub Lichteffekt1
       Case 2
          Gosub Lichteffekt2
    
       end select
    
    loop
    end
    
    Lichteffekt1:
    
    Portb.1 = 1
    Portb.2 = 0
    Portb.3 = 1
    Portb.4 = 0
    Waitms 100
    Portb.3 = 0
    Portb.4 = 1
    Waitms 100
    Portb.3 = 1
    Portb.4 = 0
    Waitms 100
    Portb.1 = 0
    Portb.2 = 1
    Portb.3 = 0
    Portb.4 = 1
    Waitms 100
    Portb.3 = 1
    Portb.4 = 0
    Waitms 100
    Portb.3 = 0
    Portb.4 = 1
    Waitms 100
    
    Return
    
    Lichteffekt2:
    
    Portb.1 = 1
    Portb.2 = 1
    Portb.3 = 1
    Portb.4 = 1
    Waitms 100
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 0
    Portb.4 = 0
    Waitms 100
    
    Return
    | Mfg |
    | McGrizzly123 |

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    23.12.2013
    Beiträge
    21
    Okay, zumindest bekomme ich jetzt das Programm gespeichert. Habs grad mal auf den Tiny übertragen. Es spielt bei Stromzufuhr sofort den ersten Lichteffekt ab und reagiert nicht auf den Taster oder auf den Reset.
    Ich probier das ganze morgen nach der Arbeit nochmal.
    Schon mal danke bis hier hin...

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von Bow-Hunter Beitrag anzeigen
    Okay, zumindest bekomme ich jetzt das Programm gespeichert. Habs grad mal auf den Tiny übertragen. Es spielt bei Stromzufuhr sofort den ersten Lichteffekt ab und reagiert nicht auf den Taster oder auf den Reset.
    Ich probier das ganze morgen nach der Arbeit nochmal.
    Du drückst die Taste zu lange

    Code:
    If Pinb.0 = 1 Then Incr Modus
    Angenommen dein do-loop benötigt 1ms für einen Durchlauf, dann wird bei jedem Durchlauf Modus inkrementiert!

    Du musst also die Flanke erfassen, wenn das Signal der Taste von 0 auf 1 springt und nur dann Modus inkrementieren.

    Code:
    $regfile = "attiny13.dat"
    $crystal = 1200000
    $hwstack = 0
    $swstack = 0
    $framesize = 0
    
    Config Portb.1 = Output
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Portb.4 = Output
    Config Pinb.0 = Input
    
    Dim Modus As Integer
    Dim Anzahlmodi As Integer
    Dim Taste_old As Bit
    Dim Taste_new As Bit
    
    Modus = 1
    Anzahlmodi = 2
    Taste_new = 0
    
    
    do
    
       Taste_old = Taste_new
       Taste_new = Pinb.0
       If ((Taste_old XOR Taste_new) AND Taste_new) = 1 Then Incr Modus
    
       If Modus > AnzahlModi then Modus=1
       Select Case Modus
       Case 1
          Gosub Lichteffekt1
       Case 2
          Gosub Lichteffekt2
    
       end select
    
    loop
    end
    BASIC ist lange her bei mir, ich hoffe es hat keine Tippfehler.

    Hier noch die Erklärung zum Ausdruck ((Taste_old XOR Taste_new) AND Taste_new):
    (Taste_old XOR Taste_new)
    liefert 1 Wenn sich der Wert von Taste geändert hat, also seit der letzten Abfrage gedrückt oder losgelassen wurde.
    Ich gehe davon aus, dass eine gedrückte Taste eine 1 liefert, das hängt jetzt aber von deiner Hardware ab.

    Der Ganze Ausdruck liefert nur 1 wenn die Taste gedrückt wurde.

    Die Hilfsvariable Taste_new benötigt man, weil sich Pinb.0 zwischen zwei Abfragen ändern könnte.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    23.12.2013
    Beiträge
    21
    Code:
    If ((Taste_old XOR Taste_new) AND Taste_new) = 1 Then Incr Modus
    Hier zeigt er mir eine Fehlermeldung an. Daher habe ich diese Zeile mal im Code weggelassen.

    Code:
    $regfile = "attiny13.dat"
    $crystal = 1200000
    $hwstack = 10
    $swstack = 10
    $framesize = 10
    
    Config Portb.1 = Output
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Portb.4 = Output
    Config Pinb.0 = Input
    
    Dim Modus As Integer
    Dim Anzahlmodi As Integer
    Dim Taste_old As Bit
    Dim Taste_new As Bit
    
    Modus = 1
    Anzahlmodi = 2
    Taste_new = 0
    
    Do
    
       Taste_old = Taste_new
       Taste_new = Pinb.0
       If Pinb.0 = 1 Then Incr Modus
    
    
       If Modus > Anzahlmodi Then Modus = 1
       Select Case Modus
       Case 1
          Gosub Lichteffekt1
       Case 2
          Gosub Lichteffekt2
    
       End Select
    
    Loop
    End
    Lustig:
    Solange ich den Taster gedrückt halte laufen alle Lichteffekte nach einander ab.
    Jenes Lichteffekt, dass gerade läuft während ich den Taster los lasse, läuft dann nur noch alleine.
    Im Grunde ganz witzig aber nicht das was ich zur zeit möchte.

    Ist vielleicht nur ein Tippfehler im obigen Code?

    Danke Peter
    Gruß Glenn

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo Glenn,

    Zitat Zitat von Bow-Hunter Beitrag anzeigen
    Code:
    If ((Taste_old XOR Taste_new) AND Taste_new) = 1 Then Incr Modus
    Hier zeigt er mir eine Fehlermeldung an. Daher habe ich diese Zeile mal im Code weggelassen.
    TOLL, und welche Meldung ?????

    Zitat Zitat von Bow-Hunter Beitrag anzeigen
    Lustig:
    Solange ich den Taster gedrückt halte laufen alle Lichteffekte nach einander ab.
    Jenes Lichteffekt, dass gerade läuft während ich den Taster los lasse, läuft dann nur noch alleine.
    Im Grunde ganz witzig aber nicht das was ich zur zeit möchte.
    Das ist genau das Problem.
    Dein Programm erkennt die gedrückte Taste und zählt dann dauernd durch.
    Der Rest scheint zu funktionieren.

    Ist also nur das Problem mit der Fehlermeldung.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    23.12.2013
    Beiträge
    21
    Klicke auf die Grafik für eine größere Ansicht

Name:	Unbenannt.PNG
Hits:	16
Größe:	9,3 KB
ID:	29093
    Diese Fehlermeldung, ich hoffe es hilft.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo,
    Lösch mal das "= 1" in der fraglichen Zeile.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Ähnliche Themen

  1. Drei Led´s mit einem Taster unabhängig von einander schalten
    Von p@ty im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 61
    Letzter Beitrag: 10.07.2014, 13:03
  2. von einem zu anderem springen?
    Von robots4-ever im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 08.04.2012, 21:24
  3. Screens wechseln mit 2 Taster (oder mit einem Taster)
    Von tordy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 14.07.2009, 14:39
  4. 3 Taster von RN-LCD-Adapter mit einem Port abfragen
    Von masabuana im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 20.07.2007, 13:23
  5. Von Unterprogramm zum Hauptprogrammanfang springen
    Von Hübi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 06.02.2007, 19:15

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress