SHOW:
|
|
- or go back to the newest paste.
1 | #include <OneWire.h> | |
2 | #include <DallasTemperature.h> | |
3 | //relay and moisture sensor | |
4 | //http://robocraft.ru/blog/arduino/444.html in russian | |
5 | //temperature from DS18B20 | |
6 | ||
7 | ||
8 | ||
9 | ||
10 | ||
11 | ||
12 | // Data wire is plugged into pin 3 on the Arduino | |
13 | #define ONE_WIRE_BUS 3 | |
14 | ||
15 | // Setup a oneWire instance to communicate with any OneWire devices | |
16 | OneWire oneWire(ONE_WIRE_BUS); | |
17 | ||
18 | // Pass our oneWire reference to Dallas Temperature. | |
19 | DallasTemperature sensors(&oneWire); | |
20 | ||
21 | // Assign the addresses of your 1-Wire temp sensors. | |
22 | // See the tutorial on how to obtain these addresses: | |
23 | // http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html | |
24 | ||
25 | DeviceAddress insideThermometer = { 0x28, 0x2B, 0xE6, 0xDA, 0x02, 0x00, 0x00, 0x43 }; | |
26 | //DeviceAddress outsideThermometer = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 }; | |
27 | //DeviceAddress dogHouseThermometer = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F }; | |
28 | ||
29 | #define moisture_input 0 // analog pin 0 | |
30 | #define divider_top 9 // moisture resistor digital pin 9 | |
31 | #define divider_bottom 10 // moisture sensor 1 digital pin 10 | |
32 | int waterPump =7; // led, water pump digital pin 7 | |
33 | int moisture; | |
34 | int Koguprotsent; //moisture % in Estonian | |
35 | int tempHigh =6; // relay who open window | |
36 | int tempLow =5; //relay who close window | |
37 | ||
38 | int X=0; | |
39 | ||
40 | void setup(void) | |
41 | { | |
42 | ||
43 | pinMode (tempLow, OUTPUT); | |
44 | pinMode (tempHigh, OUTPUT); | |
45 | pinMode (waterPump, OUTPUT); | |
46 | digitalWrite(waterPump, LOW); | |
47 | digitalWrite (tempLow, LOW); | |
48 | digitalWrite (tempHigh, LOW); | |
49 | // start serial port | |
50 | Serial.begin(9600); | |
51 | // Start up the library | |
52 | sensors.begin(); | |
53 | // set the resolution to 10 bit (good enough?) | |
54 | sensors.setResolution(insideThermometer, 10); | |
55 | // sensors.setResolution(outsideThermometer, 10); | |
56 | // sensors.setResolution(dogHouseThermometer, 10); | |
57 | } | |
58 | ||
59 | void printTemperature(DeviceAddress deviceAddress) | |
60 | { | |
61 | float tempC = sensors.getTempC(deviceAddress); | |
62 | if (tempC == -127.00) { | |
63 | Serial.print("Error getting temperature"); | |
64 | } else { | |
65 | Serial.print("C: "); | |
66 | Serial.print(tempC); | |
67 | //-- panin koodi siia..,comment in estonian means nothing, only for me | |
68 | } | |
69 | ||
70 | - | if (tempC >= 27 && X ==0){ // if temp => 27 window opened |
70 | + | if (tempC >= 24 && X ==0){ // if temp => 27 window opened |
71 | digitalWrite(tempHigh, HIGH); | |
72 | delay(6000); | |
73 | digitalWrite(tempHigh, LOW); | |
74 | X = 1; | |
75 | } | |
76 | ||
77 | - | if (tempC <= 24 && X ==1){ // if temp <= 24 window close |
77 | + | if (tempC <= 22 && X ==1){ // if temp <= 24 window close |
78 | ||
79 | X = 0; | |
80 | ||
81 | digitalWrite(tempLow, HIGH); | |
82 | delay(6000); | |
83 | digitalWrite(tempLow, LOW); | |
84 | } | |
85 | ||
86 | ||
87 | ||
88 | ||
89 | // Serial.print(" F: "); | |
90 | // Serial.print(DallasTemperature::toFahrenheit(tempC)); | |
91 | ||
92 | } | |
93 | ||
94 | void loop(void) | |
95 | { | |
96 | //---- soil | |
97 | ||
98 | // Serial.print("Getting Soil Moisture...\n\r"); | |
99 | moisture=SoilMoisture(); // soilmoister as variable | |
100 | - | Koguprotsent = ((moisture*100)/970); // my moisture max value sensors in water was 950 |
100 | + | Koguprotsent = (moisture/1024); // moisture % |
101 | Serial.print("Sensors moisture value: "); | |
102 | Serial.println(moisture); | |
103 | ||
104 | Serial.print("Moisture is "); | |
105 | Serial.print(Koguprotsent); | |
106 | Serial.print(" % "); | |
107 | ||
108 | Serial.println(); | |
109 | ||
110 | ||
111 | delay(1000); // pause 1 sec. | |
112 | ||
113 | ||
114 | ||
115 | - | if (Koguprotsent >= 90){ //if moisture is 90 % water pump off |
115 | + | if (Koguprotsent >= 80){ //if moisture is 90 % water pump off |
116 | ||
117 | digitalWrite(waterPump, LOW); | |
118 | ||
119 | } | |
120 | if (Koguprotsent <= 75){ | |
121 | ||
122 | - | digitalWrite(waterPump, LOW); // if moisture is 75 % water pump on. I have China relay block where LOW is on and HIGH is off |
122 | + | digitalWrite(waterPump, LOW); // if moisture is 75 % water pump on |
123 | delay(1000); //how many sec water pump is ON | |
124 | digitalWrite(waterPump, HIGH); // water pump OFF | |
125 | ||
126 | ||
127 | } | |
128 | ||
129 | //---------- temp | |
130 | delay(1000); | |
131 | Serial.print("Getting temperatures...\n\r"); | |
132 | sensors.requestTemperatures(); | |
133 | ||
134 | Serial.print("Inside temperature is: "); | |
135 | printTemperature(insideThermometer); | |
136 | Serial.print("\n\r"); | |
137 | // Serial.print("Outside temperature is: "); | |
138 | // printTemperature(outsideThermometer); | |
139 | // Serial.print("\n\r"); | |
140 | // Serial.print("Dog House temperature is: "); | |
141 | // printTemperature(dogHouseThermometer); | |
142 | // Serial.print("\n\r\n\r"); | |
143 | } | |
144 | ||
145 | ||
146 | ||
147 | ||
148 | int SoilMoisture(){ | |
149 | int reading; | |
150 | // set driver pins to outputs | |
151 | pinMode(divider_top,OUTPUT); | |
152 | pinMode(divider_bottom,OUTPUT); | |
153 | ||
154 | // drive a current through the divider in one direction | |
155 | digitalWrite(divider_top,LOW); | |
156 | digitalWrite(divider_bottom,HIGH); | |
157 | ||
158 | // wait a moment for capacitance effects to settle | |
159 | delay(1000); | |
160 | ||
161 | // take a reading | |
162 | reading=analogRead(moisture_input); | |
163 | ||
164 | // reverse the current | |
165 | digitalWrite(divider_top,HIGH); | |
166 | digitalWrite(divider_bottom,LOW); | |
167 | ||
168 | // give as much time in 'reverse' as in 'forward' | |
169 | delay(1000); | |
170 | ||
171 | // stop the current | |
172 | digitalWrite(divider_bottom,LOW); | |
173 | ||
174 | return reading; | |
175 | ||
176 | //relays for temp | |
177 | pinMode(tempHigh,OUTPUT); | |
178 | ||
179 | ||
180 | ||
181 | ||
182 | ||
183 | } |