Arduino-Sketch, If bedingung nicht erkannt.

Gast #4221609
Lesenswert?

Hallo,

momentan bastle ich an einer Temperatur-Anzeige mit Bewegungssensor, der 
auf einem LCD Display ausgeben soll, wenn eine Bewegung erkannt wird. 
Mein Sketch ist so programmiert, dass ich die Temperatur-Anzeige alleine 
aktivieren kann oder aber am Abend Temperatur-Anzeige plus 
"Alarmfunktion".

hier der Sketch:
1
#include <LiquidCrystal.h>
2
#include <IRremote.h>
3
int receiverpin = 3;
4
IRrecv irrecv(receiverpin);
5
decode_results results;
6

7
LiquidCrystal lcd(4,5,6,7,8,9);
8
float sensor = 0;
9
float celsius = 0;
10
float voltage = 0;
11
int bewegung=13;
12
int bewegungsstatus=0;
13
int ledg=11;
14
int ledr=12;
15

16

17
void setup() {
18
  
19
  lcd.begin(16,2);
20
  lcd.clear();
21
  pinMode(bewegung, INPUT);
22
  pinMode(ledg, OUTPUT);
23
  pinMode(ledr, OUTPUT);
24
  irrecv.enableIRIn();
25
  Serial.begin(9600);
26

27
}
28

29
void translateIR()
30
{
31
switch(results.value)
32

33
{
34
  case 16724175:
35
  
36
    
37
    if(bewegungsstatus==HIGH)
38
{
39
            lcd.setCursor(0,0);
40
            lcd.print("Eindringling");
41
            lcd.setCursor(0,1);
42
            lcd.print("Erkannt");
43
            digitalWrite(ledr, HIGH);
44
            digitalWrite(ledg, LOW);
45
            delay(10000);
46
            lcd.clear();
47
            Serial.println("1");
48
 
49

50
}
51

52
else
53

54
{
55
            lcd.setCursor(0,0);
56
            lcd.print("Temperatur:");
57
            lcd.setCursor(0,1);
58
            lcd.print(celsius,0);
59
            lcd.setCursor(3,1);
60
            lcd.print("Grad");
61
            digitalWrite(ledr, LOW);
62
            digitalWrite(ledg, HIGH);
63
            Serial.println("2");
64
 
65
}
66

67
break;
68

69
case 16743045:
70

71
                lcd.setCursor(0,0);
72
                lcd.print("Temperatur:");
73
                lcd.setCursor(0,1);
74
                lcd.print(celsius,0);
75
                lcd.setCursor(3,1);
76
                lcd.print("Grad");
77
                digitalWrite(ledr, LOW);
78
                digitalWrite(ledg, HIGH);
79
                Serial.println("3");
80
break;
81
}
82
}
83
void loop()
84
{
85
            bewegungsstatus=digitalRead(bewegung);
86
            sensor = analogRead(0);
87
            voltage = (sensor*5000)/1024;
88
            voltage = voltage - 500;
89
            celsius = voltage/10;
90
            
91
            
92
  if (irrecv.decode(&results))
93
  {
94
  translateIR();
95

96
  {
97
  irrecv.resume();
98
  }
99
}
100
}

Der Switch funktioniert, mit werden auf dem Monitor der Wert "2" und der 
Wert "3" ausgegeben.

Aber die Bedingung hinter IF, wird nicht abgearbeitet. Ich kann mit der 
Hand vor dem Sensor winken, tanzen, Kniebeugen machen. Die Bewegung wird 
nicht erkannt.

Warum nicht?

Ohne Switch mit einfachen Anweisungen funktioniert alles.
Gast #4221636
Lesenswert?

Dirk W. schrieb im Beitrag #4221624:
> Der Switch funktioniert, mit werden auf dem Monitor der Wert "2" und der
> Wert "3" ausgegeben.

Dann gib doch einfach "bewegungsstatus" auch noch auf dem Display aus.
Wenn das immer "0" oder "LOW" ist, dann funktioniert das "if", aber dein 
Sensor nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren