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
intreceiverpin=3;
4
IRrecvirrecv(receiverpin);
5
decode_resultsresults;
6
7
LiquidCrystallcd(4,5,6,7,8,9);
8
floatsensor=0;
9
floatcelsius=0;
10
floatvoltage=0;
11
intbewegung=13;
12
intbewegungsstatus=0;
13
intledg=11;
14
intledr=12;
15
16
17
voidsetup(){
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
voidtranslateIR()
30
{
31
switch(results.value)
32
33
{
34
case16724175:
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
case16743045:
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
voidloop()
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.
Dirk W. schrieb:> if(bewegungsstatus==HIGH)
Der vergleich mit HIGH ist eigentlich überflüssig.
> Aber die Bedingung hinter IF, wird nicht abgearbeitet.> Monitor der Wert "2" und der Wert "3" ausgegeben.
Wenn es immer in den else zweig kommt, ist bewegungsstatus immer
ungleich 1 zu diesem Zeitpunkt.
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.
Dirk W. schrieb im Beitrag #4221624:
> switch(results.value)>> {> case 16724175:
Ist das wirklich ernstgemeint?
Ansonsten:
Keine Crosspostings und bitte einen Moment darüber nachdenken, wo
ein Beitrag veröffentlicht wird. Arduino-Sketches haben mit
"PC-Programmierung" nichts zu tun, das solltest Du auch von selbst
herausfinden können.