Voltmeter Erweiterung, Dauer eines Zustandes

Hey Community,
ich möchte in meinem arduino Voltmeter aus dem Internet gerne eine Erweiterung haben.
Grundsätzlich funktioniert die Anzeige super, ich möchte aber wenn eine gemessene Spannung länger als 30 Sekunden gemessen wird das ein Hinweis angezeigt wird a'la Bitte schalten Sie das Gerät ab.

Ist sowas machbar?
Also quasi If A0 länger als 30 sek == 12V
Dann Warnmeldung

Gibt es so einen Befehl ?

Ja, ich denke, du hast gute Chancen!
Ein bisschen programmieren lernen, und dann klappt das schon.

"if" scheint mir genau das richtige zu sein.
Ja, da hast du eine gute Idee gehabt.

Vielen dank, nur leider hilft mir das aktuell nicht weiter.

Ein bisschen genauer wäre schon schön...

Hi

Da Du eh die Sekunden zählen musst oder erfassen musst, wie lange die aktuelle Spannung anliegt - warum nicht automatisch den Chip schlafen legen und alle Sekunde prüfen, ob sich die Spannung geändert hat?
Wenn Ja, dann wieder ganz wach werden, die Anzeige wieder anknipsen und den Messwert anzeigen.

Dazu schaue Dir vll. millis(), Blink without delay() und/oder die Nachtwächter Erklärung an.

Wobei ich anmerken möchte, daß Es NICHTS Schlimmeres gibt, als ein Messgerät, daß beim Messen einfach aus geht!!
Mit der Option, daß Es selber wieder an geht, aber ggf. doch brauchbar wird.
Dann: Wie genau soll der Messwert als GLEICH angesehen werden?
Der ADC hat 1024 Schritte, Schwankungen im letzten Bit sind normal, bei offenem Eingang kommt Da außerdem sonst was raus - also Abschalten nur möglich, wenn eine definierte Spannung anliegt - oder Abschalten/Anschalten zusätzlich auf Knopfdruck, wo dann das Anschalten explizit per Knopf sein sollte.

MfG

Mein Gedanke war den wert mit einem Toleranzbereich im letzten bit zu sehen.
In diesem Fall geht es wirklich darum die Meldung nach 30 Sekunden umzuschalten.

An millis habe ich auch gedacht, whrkich gesagt wüsste ich nicht wie ich das sinnvoll bei mor einsetze, die gefundenen Erklärungen zu millis verwirren mich mehr als zu erklären:-D

Vielen dank, nur leider hilft mir das aktuell nicht weiter.

Ein bisschen genauer wäre schon schön...

Wie hättest du es denn gerne?

Wenn ich jetzt die Sprache lerne, welche du auf dem Arduino verwendest, dann hilft dir das auch nicht weiter...
Denke ich mal, oder?

Suche mal hier im Forum nach Ablaufsteuerung, und endlichen Automaten.
Da kannst du sicherlich die ein oder andere Idee abstauben.

Danke für den Tipp mit blink without delay, das klingt wenigstens logisch und verständlich :slight_smile:

Hi

Dann such noch die Nachtwächtererklärung, und die Logik wird Dich überrennen :slight_smile:
Da wurde das blink without delay() an einem praktischen Beispiel aufgedröselt und ist, meiner Meinung nach, sehr gut zu verstehen.
Da hier im deutschen Forenzweig: in Deutsch.

MfG

const byte apin             = A0; // datenquelle
const int hysterese         = 3; // digit
int merker                  = 0; // fuer den Hysteresevergleich
unsigned long timestamp     = 0; // Zeit Merker
const unsigned long timeout = 1000UL*30UL; // Zeit bis Meldung

bool isInHysterese(const int avalue, int & merker, const int hysterese)
{
  if(((merker+hysterese) >= avalue)&&((merker-hysterese) <= avalue)) return true;
  merker = avalue; // veraenderung merken
  return false;
}


bool zeitabhandlung(bool flag, unsigned long & timestamp, const unsigned long timeout)
{
  if(!flag)  timestamp = millis();
  bool result = millis() - timestamp >= timeout; 
  if(result)  timestamp = millis();
  return result;
}


void setup() 
{
  Serial.begin(9600);
}

void loop() 
{
  if(zeitabhandlung(isInHysterese(analogRead(apin),merker,hysterese),timestamp,timeout)) Serial.println("Bitte schalten Sie das Gerät ab");
}