• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Zahler für Attiny

Birabeach

Geocacher
:hilfe: :hilfe: Hallo :hilfe: :hilfe:

für einen Cache bräuchte ich eine Zählerabfrage für einen Tinny 13v.
Bis jetzt habe ich nur reaktive Lichter gebaut mit den Programmen aus dem Kochbuch.
Ein paar andere Sachen habe ich auch noch geschaft aber eine Zählabfrage bekomme ich einfach nicht hin.

Hier das Problem:
Es soll nach 3-4 mal Einganssignal ein Port geschalten werden.
wenn aber nur einmal oder zweimal ein Signal kommt soll nix passieren .
wenn innerhab sagen wir 30 Sekunden kein weiteres Signal kommt soll sich der Zähler wieder auf Null stellen.

Das ganze ist für eine Stage mit Handy und da immer mal wieder eineBetreiber SMS kommt soll nix passieren, nur wenn man anruft.

Danke schonmal im vorraus.
 

thomas_st

Geowizard
Birabeach schrieb:
Hier das Problem:
Es soll nach 3-4 mal Einganssignal ein Port geschalten werden.
wenn aber nur einmal oder zweimal ein Signal kommt soll nix passieren .
Ich würde es so machen - Pseudocode mit Interrupts (ich liebe Interrupts ;) ):
Code:
Function init
   Pin A so initialisieren, dass er einen Interrupt PC auslöst, wenn er geschaltet wird
   Pin B auf Ausgang initialisieren
   Watchdog auf 2 s initialisieren
   Watchdog soll Interrupt WD auslösen
End Function init

Function ISR PC
   WDZähler = 0
   AuslöseZähler = AuslöseZähler + 1
   if AuslöseZähler > 2 then AuslöseFlag = TRUE
End Function ISR PC
   
Function ISR WD
   WDZähler = WDZähler + 1
   if WDZähler > 15 then AuslöseZähler = 0
End Function ISR WD
   
Function Hauptprogramm
   Ausführen init
   Endlosschleife
       If AuslöseFlag == TRUE then
           Aktiviere Pin B
           AuslöseFlag = FALSE
       End If
   End Endlosschleife
End Function Hauptprogramm

HTH,
Thomas(_st)
 

Marcel123

Geocacher
das einfachste wäre doch wenn du einfach bei jedem tastendruck eine variable um 1 erhöhst. hat die variable den gewünschten wert erreicht führst du einen befehl aus und stzt die variable auf 0 zurück. dann noch nen timer der alle 30 sekunden die variable auf 0 setzt und gut is...

p.s. welche programmiersprache benutzt du
 
Oben