-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtemperatureDropMonitor.ino
More file actions
141 lines (118 loc) · 3.15 KB
/
Copy pathtemperatureDropMonitor.ino
File metadata and controls
141 lines (118 loc) · 3.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <OneWire.h>
#include <DallasTemperature.h>
int maxFallOff = 0;
const int tempPin = 2;
const int buttonPin = 9;
const int resetPin = 10;
const int buzzPin = 8;
const int statePin = 7;
const int dip1 = 3;
const int dip2 = 4;
const int dip3 = 5;
const int dip4 = 6;
int buttonState = 0;
int resetState = 0;
int dip1state = 0;
int dip2state = 0;
int dip3state = 0;
int dip4state = 0;
float refTemp = 0;
float temp = 0;
// nastavení komunikace senzoru přes pin
OneWire oneWire(tempPin);
// převedeme onewire do Dallasu
DallasTemperature sensors(&oneWire);
void setup(void)
{
pinMode(buzzPin, OUTPUT);
pinMode(statePin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(resetPin, INPUT);
pinMode(dip1, INPUT);
pinMode(dip2, INPUT);
pinMode(dip3, INPUT);
pinMode(dip4, INPUT);
Serial.begin(9600);
setMaxFallOff();
// zapnutí senzoru
sensors.begin();
}
void loop() {
// get temperature from sensor
sensors.requestTemperatures();
temp = sensors.getTempCByIndex(0);
// should I set refTemp?
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
refTemp = temp;
}
// should I reset refTemp?
resetState = digitalRead(resetPin);
if (resetState == HIGH) {
refTemp = 0;
setMaxFallOff();
}
// write current temp to serial
Serial.print("temp: ");
Serial.println(temp);
// if refTemp is set, turn on status LED,
// print refTemp and
// difference to serial
if (refTemp != 0 ){
digitalWrite(statePin, HIGH);
float diff = temp - refTemp;
Serial.print("ref temp: ");
Serial.println(refTemp);
Serial.print("diff: ");
Serial.println(diff);
// if difference is greater than maxFallOff,
// make buzzing to buzz output, where is tranzistor
// for piezo buzzer
if (diff < maxFallOff) {
digitalWrite(buzzPin, HIGH);
delay(1000);
digitalWrite(buzzPin, LOW);
delay(500);
Serial.println("Buzz");
} else {
digitalWrite(buzzPin, LOW);
}
} else {
// if refTemp is not set, turn off state LED
digitalWrite(statePin, LOW);
}
delay(1000);
}
void setMaxFallOff() {
// Get setting of maxFallOff from dipswitch and set it
// to variable
bool isSet = false;
dip1state = digitalRead(dip1);
if (dip1state == HIGH) {
Serial.println("setting max fallOff to 2C");
maxFallOff = -2;
isSet = true;
}
dip2state = digitalRead(dip2);
if (dip2state == HIGH) {
Serial.println("setting max fallOff to 3C");
maxFallOff = -3;
isSet = true;
}
dip3state = digitalRead(dip3);
if (dip3state == HIGH) {
Serial.println("setting max fallOff to 4C");
maxFallOff = -4;
isSet = true;
}
dip4state = digitalRead(dip4);
if (dip4state == HIGH) {
Serial.println("setting max fallOff to 5C");
maxFallOff = -5;
isSet = true;
}
if (isSet == false) {
Serial.println("setting max fallOff to 0C");
maxFallOff = 0;
}
}