Forum: Mikrocontroller und Digitale Elektronik Mit Poti einstellbare An/Ab Verzögerung Tiny 13


von Beginy (Gast)


Angehängte Dateien:

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

von Otto (Gast)


Lesenswert?

> Config Adc = Single , Prescaler = Auto
> Start Adc

kann zwar kein BASCOM aber wahrscheinlich wandelt der ADC nur einmal

Otto

von Otto (Gast)


Lesenswert?

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

von Gast Posti (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.