Arduino Zähler?


18.07.2022, 09:53

LOW bedeutet übrigens, dass der Melder ein signal gibt, weil ich den internen Pullup Widerstand benutze, deswegen ist es falsch herum

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Ich hab schon ewig nix mehr mit dem Arduino gemacht, aber meine erste Überlegung war folgende:

2 Variablen, eine zum Zählen (int oder so) und eine (bool?) zum merken, das schon gezählt wurde.

Nennen wir die Zählvariable count und die Merkvariable memo.

Dann soll er in deiner if-Schleife nur count um 1 erhöhen, wenn memo false ist und danach memo auf true setzen.
Zusätzlich gibt es noch eine zweite if-Schleife, in der abgefragt wird, ob beide BWM wieder high sind; damit wird memo wieder auf false gesetzt.

Dann müsste jede Auslösung nur 1x gezählt werden.


Hannes178 
Beitragsersteller
 18.07.2022, 10:40

so hab das jetzt geschrieben das sollte ja funktionieren?

if (Arming == 1) {

    Sensor1 = digitalRead(27);
    Sensor2 = digitalRead(26);

    if ((Sensor1 == LOW) || (Sensor2 == LOW))  {

      digitalWrite(33, LOW);

      state = 0;

      alarmON();
    }

if (state == 0) {
      counter++;
      state = 1;   
}
1
140Colin  18.07.2022, 10:46
@Hannes178

Wird so nicht in jedem Programmdurchlauf state auf 0 gesetzt und damit zu oft gezählt?

So hätte ich mir das jetzt vorgestellt:

if (Arming == 1) {

    Sensor1 = digitalRead(27);
    Sensor2 = digitalRead(26);

    if ((Sensor1 == LOW) || (Sensor2 == LOW))  {

      digitalWrite(33, LOW);

      if (state == 0) {
      counter++;
      state = 1;   
      }
  
        alarmON();
      }
  
  if ((Sensor1 == HIGH) && (Sensor2 == HIGH))  {
        state = 0;   
}
0
Hannes178 
Beitragsersteller
 18.07.2022, 10:59
@140Colin

ne kann er ja nicht, weil state nur wieder auf 0 geht, wenn einMelder ausgelöst wird. kann aber auch sein, dass ich was verwechsel.

Das würde ja bedeuten mit dem && dass beide auslösen müssen, was ich ja nicht will, deswegen | | das oder bedeutet.

if ((Sensor1 == HIGH) && (Sensor2 == HIGH)) {
state = 0;
1
Hannes178 
Beitragsersteller
 18.07.2022, 11:05
@140Colin

ach ne vergiss was ich gesagt habe, hatte einen Denkfehler, weil er ja erst wieder auf 0 machen darf, wenn das Signal wieder weg ist da sonst die ganze Zeit gezählt wird. danke :))

1
Hannes178 
Beitragsersteller
 18.07.2022, 10:12

ja genau sowas hab ich mir auch gedacht aber wusste nicht wie aber das hat mir echt geholfen, vielen dank

1