- 3D-Druck Einstieg und Tipps         
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
    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.

  2. #2
    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?

  3. #3
    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:	4
Größe:	8,1 KB
ID:	29098

    Ne leider auch nicht.
    Und nur ohne "1" ebenfalls nicht.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    und mit And statt AND

    Ich weiss nicht ob Bascom casesensitive ist?
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Groß- und Kleinschreibung ist bei Bascom glaube ich ziemlich egal.

    Was definitiv ein Problem zu sein scheint, sind die Klammern. Bascom meckert nämlich auch schon bei einer einfachen, unverschachtelten AND-Verknüpfung, wenn man sie in Klammern setzt. Da die Klammern ja aber aufgrund der Verschachtelung nötig wären, kann man das Problem lösen, indem man die beiden Verknüpfungen mit einem Hilfs-Bit nacheinander ausführen lässt:

    Code:
    Dim Taste_old As Bit
    Dim Taste_new As Bit
    Dim X As Bit
    Dim Modus As Byte
    
    
    Do
    
    
    X = Taste_old Xor Taste_new
    X = X And Taste_new
    
    
    If X = 1 Then Incr Modus
    
    
    Loop

    Dieser Code wird bei mir jedenfalls anstandslos kompiliert.

    Und @ Bow-Hunter: Ganz einfach kann man einen Tastendruck erkennen, wenn man den Taster einen Interrupt auslösen lässt, indem der Taster einen Pegelwechsel am Interrupt-Eingangspin bewirkt. Dann braucht man die ganze "Merkerei" mit Taste_old und Taste_new nicht...

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    23.12.2013
    Beiträge
    21
    So Leute, das ist jetzt die Finale Version von mir. Jetzt funktioniert alles.
    Bei Stromzufuhr ist alles aus.
    Beim ersten und zweiten schalten blinkt es unterschiedlich.
    Beim dritten schalten geht alles wieder aus.
    So wollte ich das haben.

    Jetzt ein paar Fragen zum Code.
    Was bedeutet Dim - As Bit?
    und Dim - As Integer?
    und Xor?
    Diese Begriffe sagen mir noch nichts.

    Und wieso muss ich ca. ne halbe Sekunde den Taster drücken bis der Attiny13 reagiert?



    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
    Dim X As Bit
    
    Modus = 1
    Anzahlmodi = 3
    Taste_new = 0
    
    Do
    
       Taste_old = Taste_new
       Taste_new = Pinb.0
    
       X = Taste_old Xor Taste_new
       X = X And Taste_new
    
       If X = 1 Then Incr Modus
    
       If Modus > Anzahlmodi Then Modus = 1
       Select Case Modus
       Case 1
          Gosub Lichteffekt1
       Case 2
          Gosub Lichteffekt2
       Case 3
          Gosub Lichteffekt3
    
       End Select
    
    Loop
    End
    
    Lichteffekt1:
    
    Portb.1 = 0
    Portb.2 = 0
    Portb.3 = 0
    Portb.4 = 0
    
    Return
    
    Lichteffekt2:
    
    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
    
    Lichteffekt3:
    
    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
    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
    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

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Bad Bramstedt
    Alter
    45
    Beiträge
    1.369
    Hallo Bow-Hunter,

    das was du in dem Code jetzt tust nennt sich "pollen" - das bedeutet so viel wie : du fragst den Taster im Hauptprogramm in einem Duchlauf der Hauptschleife ab. Der Grund, warum das jetzt ca 500ms oder etwas genauer sogar ca 600ms dauert, der sollte dir bewußt werden wenn du dir mal überlegst was passiert wenn du eine Unterroutione (gosub) anlegst und dann mit dem Tasterinput dort hin verzweigst? Zeit unempfindlicher wäre ein Interrupt der etwas weiter oben schon vorgeschlagen wurde. Ich empfehle einmal mit dem Cursor auf "Dim" zu gehen und dann F1 zu drücken -> Bascom Hilfe. Zusaätzlich verweise ich mal auf diese Seite (klick mich) - hier findest du unter anderem auch was informatives zum Interrupt.

    Viele Grüße
    Jörg

Ä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, 12:03
  2. von einem zu anderem springen?
    Von robots4-ever im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 08.04.2012, 20: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, 13:39
  4. 3 Taster von RN-LCD-Adapter mit einem Port abfragen
    Von masabuana im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 20.07.2007, 12:23
  5. Von Unterprogramm zum Hauptprogrammanfang springen
    Von Hübi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 06.02.2007, 18:15

Berechtigungen

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

LiFePO4 Speicher Test