www.mikrocontroller.net

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


Autor: Beginy (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Config Adc = Single , Prescaler = Auto
> Start Adc

kann zwar kein BASCOM aber wahrscheinlich wandelt der ADC nur einmal

Otto

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast Posti (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
funktion=0
main:
if Taster=1 then
   if funktion=0 then
      funktion=1
      wartezeit=Poti-Wert
      LED AN
   endif
endif

if Taster=0 then
   if funktion=2 then
      funktion=0
   elseif funktion=1 then
      funktion=2
      wartezeit=Poti-Wert
   endif
endif

if wartezeit>0 then
   wartezeit--
elseif funktion!=0 then
   LED AUS
   funktion=2
endif     

goto main

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

MfG

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.