-
Notifications
You must be signed in to change notification settings - Fork 0
/
DPmeter_edit.ino
87 lines (82 loc) · 2.22 KB
/
DPmeter_edit.ino
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
#include <DallasTemperature.h>
#include <OneWire.h>
#define ONE_WIRE_PIN 6 //definování pinu pro teploměr (měření)
OneWire oneWire(ONE_WIRE_PIN); //nastavení instance pro komunikaci se senzorem
DallasTemperature sensors(&oneWire); //Reference ze senzoru přes oneWire knihovny
unsigned long cas1 = 0;
unsigned long cas2 = 0;
unsigned long tmr = 0;
int n = 0;
//nastavení výchozích hodnot proměnných pro měření času
int kapacita = 0; //nastavení výchozí hodnoty proměnné pro zápis funkce
int teplota = 0; //nastavení výchozí hodnoty proměnné pro zápis funkce
void setup() {
Serial.begin(9600); //setup zobrazení výstupu na 9600 baudu
sensors.begin(); //začátek měření
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
//nastavení pinů pro H-bridge
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
//nastavení pinů pro H-bridge větráku
}
void loop() {
//ventilátor
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
kapacita = Mereni();
teplota = MereniTeploty();
Serial.print("Kapacita: ");
Serial.println(kapacita);
Serial.print("Teplota: ");
Serial.print(teplota);
Serial.print("°C\n");
if (kapacita >= 100) {
Serial.println("MAM ROSU");
n++;
if (n >= 3){
Peltier_ohrv();
}
}
//podmínka pro oznámení stavu na PCB
else{
n = 0;
Peltier_chlz();
}
Serial.println("-----------------");
}
//základní cyklus s printem funkce
int Mereni() {
cas1 = 0;
cas2 = 0;
tmr = 0;
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
delay(250);
pinMode(5, INPUT);
digitalWrite(4, LOW);
cas1 = micros();
while (1) {
if (digitalRead(5) == LOW){
cas2 = micros();
tmr = cas2 - cas1;
return tmr;
}
}
}
int MereniTeploty() {
sensors.requestTemperatures(); //volání výstupu senzoru
return sensors.getTempCByIndex(0);
}
void Peltier_chlz() {
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
Serial.println("PELTIER: chlazení");
}
void Peltier_ohrv() {
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
Serial.println("PELTIER: probíhá ohřev pro opětovné měření");
}