Arduino, Neustart eines timers

OP #4445823
Hallo,
ich möchte für ein Projekt folgendes Software technich am Arduino (nano) 
umsetzen.

Der Arduino soll eine Photodiode auslesen  und wenn der Wert eine 
gewisse schwelle unterschreitet einen Transistor durchschalten, der 
daraufhin ein Licht ansteuert.
Wenn länger als nach X Minuten der Grenzwert nicht unterschritten wird, 
soll dann der Transistor wieder zurück schalten.

soweit so gut.
Bisher sieht das ganze wie folgt aus:
1
int ledband = 2;
2
void setup(){
3
 pinMode(ledband, OUTPUT);
4
 digitalWrite(ledband, HIGH); 
5
 Serial.begin(9600); }
6
void loop(){
7
 int val = analogRead(7);
8
 Serial.println(val);
9
 if(val <500){
10
  digitalWrite(ledband,LOW);
11
  delay(30000);}
12
 else{
13
   digitalWrite(ledband,HIGH);}

Nun soweit ist das auch wunderbar. allerdings soll nun noch folgendes 
dazu kommen.
wärend dem Delay (welches hier nur aus testzwecken auf 30sek. steht) 
soll dauerhaft der Wert an A7 erfragt werden, wenn dieser erneut denn 
wert unterschreitet soll von diesem Punkt an das ganze von 0 anfangen.
Es geht sich um sehr kurze Helle lichtimpulse.

ergo.
Blitz.
Wert unter 500, Delay fängt an von 30sek runter zu zählen
nach bsp. 10 sekunden ein erneuter blitz,
und er soll dann eben ignorieren wo er war, und von vorne die 30sek 
runter zählen.

ICh find dazu leider auch nach googeln keine Funktion. Gibt es da was 
einfaches, was auch ich als Anfänger verstehe :D?
Danke im vorraus,
Gruß Carsten
Gast #4445833
Carsten L. schrieb:
> ICh find dazu leider auch nach googeln keine Funktion.

Da musst Du schon ein bisschen Deinen Grips anstrengen und selbst
eine Lösung finden. Nur irgendetwas stupide abzutippen und eigentlich 
nicht verstehen was das alles bewirkt bringt Dich nicht wirklich 
weiter.

Dein Threadtitel ist falsch, denn Du sprichst nur von delay.....


Als Tipp: Den/die wirklichen Timer nutzen. Bspw. den Timer1 (16 bit) im
Sekundentakt laufen lassen.......mehr verrate ich nicht.
Gast #4445938
Einen Tipp gebe ich dir. Nimm das delay raus und setze dafür millis 
(BlinkWithoutDelays) ein. Während eines delays macht der Controller nix 
außer warten.  Da kannst du auch keinen anderen Zähler laufen lassen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.