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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.