Mit Poti einstellbare An/Ab Verzögerung Tiny 13

Gast #1103520
Lesenswert?

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 #1103544
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren