Mit Poti einstellbare An/Ab Verzögerung Tiny 13

Gast #1103520
Guten Abend

Möchte eine mit einem Poti einstellbare An-/ Ab- Verzögerung 
realisieren.
Wird die Taste (s. Schaltbild)  gedrückt, dann soll nach einer am Poti
einstellbaren Zeit von 0 - 255 sec. die LED leuchten und nach dem 
Loslassen der Taste nach derselben Zeit wieder erlöschen. Beim 
Compilieren wurde kein Fehler gemeldet.
Funktioniert trotzdem nicht. Könnte Ihr mal bitte drüberschauen.

Gruß

Beginy

Programm:
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 8
$swstack = 2
$framesize = 5

' Variablen
Dim Poti As Word

'ADC definieren
Config Adc = Single , Prescaler = Auto
Start Adc

Config Portb.3 = Output
Led Alias Portb.3

Config Pinb.2 = Input
Taster Alias Portb.2
Portb.2 = 1

' Hauptschleife
Do
     Poti = Getadc(2)
     'Wert von ADC1 wird in Variable Poti gespeichert , Eingang: PB 4

     'An-Verz
     If Taster = 0 Then
     Wait Poti
     Led = 1
     End If

     'Ab-Verz.
     If Taster = 1 Then
     Wait Poti
     Led = 0
     End If

  Loop

End
Angehängte Dateien:
Gast #1103534
Ausserdem musst Du Dir den Zustand merken:

     'An-Verz
     If Taster = 0 AND Flag = 1 Then
     Wait Poti
     Led = 1
     Flag = 0
     End If

     'Ab-Verz.
     If Taster = 1 AND Flag = 0 Then
     Wait Poti
     Led = 0
     Flag = 1
     End If
Gast #1103544
Hi

Hab von AVR's keinen Plan, verstehe das Programm aber so, daß in der 
Do-Loop-Schleife geprüft wird, ob der Taster gedrückt ist.
Ist Taster gedrückt -> warte, LED aus (egal, was in der Wartezeit mit 
dem Taster passiert.

Wenn kein Taster gedrückt ist -> LED an, warte, LED aus (auch egal, was 
mit dem Taster passiert).

Denke, Du brauchst ungefähr folgenden Ablauf

funktion=0, Taster nicht gedrückt, LED AUS
funktion=1, LED AN, Zeit gestartet
funktion=2, Taster gedrückt, Zeit abgelaufen, LED AUS

Beim Lösen des Tasters wärend der Leuchtdauer wird die Leuchtzeit neu 
gestartet.
1
funktion=0
2
main:
3
if Taster=1 then
4
   if funktion=0 then
5
      funktion=1
6
      wartezeit=Poti-Wert
7
      LED AN
8
   endif
9
endif
10

11
if Taster=0 then
12
   if funktion=2 then
13
      funktion=0
14
   elseif funktion=1 then
15
      funktion=2
16
      wartezeit=Poti-Wert
17
   endif
18
endif
19

20
if wartezeit>0 then
21
   wartezeit--
22
elseif funktion!=0 then
23
   LED AUS
24
   funktion=2
25
endif     
26

27
goto main

Dadurch hast Du allerdings keine genaue Leuchtdauer, da die Schleife, je 
nach Befehlsanzahl, unterschiedliche Laufzeit haben dürfte.

MfG

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.