- Labornetzteil AliExpress         
Ergebnis 1 bis 2 von 2

Thema: LED mit Taster weiterschalten Einstellung im EPROM speichern

  1. #1

    LED mit Taster weiterschalten Einstellung im EPROM speichern

    Anzeige

    E-Bike
    Hallo
    ich bin Anfänger mit Bascom und möchte LEDs wie bei einem Lauflicht mit einem Taster weiter schalten. Bei jedem Tastendruck soll eine LED weiter geschaltet werden. Wenn ich bei LED Nr. 5 angekommen bin, soll beim nächsten Tastendruck wieder die erste LED angehen und so weiter.
    Es soll immer nur eine LED an sein. Außerdem soll sich der µC die zuletzt eingestellte LED merken und bei Neustart diese wieder einschalten. Des weiteren soll eine weitere LED die zuletzt eingestellte LED als Blinkzeichen ausgeben, zum Beispiel: wenn zuletzt LED Nr. 3 an war, soll der µC beim Start 3 mal blinken.
    Damit der µC nicht bei jeder Tastenänderung in den EPROM schreibt, sollte er erst 30 Sek. nach der letzten Änderung den Wert im EPROM abspeichen.
    Ich habe es bis jetzt nur geschafft die LED's mit dem Taster über IF-Abfragen weiter zu schalten und das Schreiben in den EPROM. Jedoch nicht erst nach 30 Sek. sondern bei jeder Änderung der LED.
    Der auskommentierte Code „EPROM Lesen“und „LED für die Blinkausgabe“ funktioniert aber dann kann ich die LEDs nicht weiter
    schalten.

    Mfg
    Michael


    Code:
    ' Prozessor  Attiny26
    
    ' Schaltung     : PA1-PA5 LED`s zur Anzeige - Taster an PA0
    '                 PA7 LED für die Blinkausgabe
    
    ' Funktion   : EEprom lesen und zuletzt eingestellte LED ansteuern
    
    ' Funktion   :LED 1-5 mit Taster an PA0 von zuletzt eingestelter Position
    ' weiterschalten und eingestellte LED nach 30 sek im EEprom abspeichern
    ' Sprache       : Bascom
    
    $regfile = "attiny26.dat"
    $crystal = 4000000
    '$Eeprom
    
    Declare Sub Tastendruck
    
    Ddra = &B11111110
    Porta = &B11111111
    
    'Dim Z As Byte
    'Dim B As Byte
    Dim X As Byte
    X = 0
    
    ' * * * * * * * * * * * * * * * Eprom Lesen Und Entsprechende Led Ansteuern
    
    'Readeeprom Z , 0
    'Z = Z - 1
    'Select Case Z
    'Case 1 : Reset Porta.5
    'Case 2 : Reset Porta.4
    'Case 3 : Reset Porta.3
    'Case 4 : Reset Porta.2
    'Case 5 : Reset Porta.1
    'End Select
    
    '********************** LED für die Blinkausgabe
    
    'For B = 0 To Z
    'Reset Porta.7
    'Waitms 500
    'Set Porta.7
    'Waitms 500
    'Next B
    'Stop
    
    '**********************Led weiterschalten
    
    Do
    Debounce Pina.0 , 0 , Tastendruck , Sub
    
    
    If X = 1 Then
    Porta.1 = 0
    End If
    If X = 2 Then
    Porta.1 = 1
    Porta.2 = 0
    End If
    If X = 3 Then
    Porta.2 = 1
    Porta.3 = 0
    End If
    If X = 4 Then
    Porta.3 = 1
    Porta.4 = 0
    End If
    If X = 5 Then
    Porta.4 = 1
    Porta.5 = 0
    End If
    If X = 6 Then
    Porta.5 = 1
    X = 1
    End If
    
    Loop
    
    
    
    '**********************Unterprogramm Tastenabfrage
    
    Sub Tastendruck
    X = X + 1
    'Writeeeprom X , 0
    End Sub
    
    End

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.02.2006
    Ort
    München
    Beiträge
    111
    Definiere Dir halt einen Timer der immer dann neu gestartet wird wenn ein Tastendruck erkannt wird. Nach 30 Sekunden wird über den Timer ein Interrupt ausgelöst der den Wert in den Eprom schreibt.
    Danach muss der Timer aber angehalten werden und darf erst beim nächsten Tastendruck gerstartet werden da er sonst (je nach Programmierung) alle 30 Sekunden den Eprom beschreibt.

Berechtigungen

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

Labornetzteil AliExpress