View difference between Paste ID: Luk4uS3A and 1DS5CWQG
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
            }