ккк. программы полив. Измените эти значения, основываясь на своих значениях калибровки
Скачать 155.93 Kb.
|
/* Измените эти значения, основываясь на своих значениях калибровки */ #define soilWet 500 // Определяет максимальное значение, при котором, мы решили, что почва 'влажная' #define soilDry 750 // Определяет минимальное значение, при котором, мы решили, что почва 'сухая' // Выводы, подключенные к датчику #define sensorPower 7 #define sensorPin A0 void setup() { pinMode(sensorPower, OUTPUT); // Изначально оставляем датчику выключенным digitalWrite(sensorPower, LOW); Serial.begin(9600); } void loop() { // получить показание из функции ниже и напечатать его int moisture = readSensor(); Serial.print("Analog Output: "); Serial.println(moisture); // определить состояние нашей почвы if (moisture < soilWet) { // слишком влажная Serial.println("Status: Soil is too wet"); } else if (moisture >= soilWet && moisture < soilDry) { // идеальное состояние Serial.println("Status: Soil moisture is perfect"); } else { // слишком сухая - пора поливать Serial.println("Status: Soil is too dry - time to water!"); } delay(1000); // Для проверки берем показания раз в секунду // Обычно вам необходимо проверять показания, возможно, раз или два в день Serial.println(); } // Данная функция возвращает аналоговый результат измерений датчика влажности почвы int readSensor() { digitalWrite(sensorPower, HIGH); // Включить датчик delay(10); // Дать время питанию установиться int val = analogRead(sensorPin); // Прочитать аналоговое значение от датчика digitalWrite(sensorPower, LOW); // Выключить датчик return val; // Вернуть аналоговое значение влажности } int soilMoistureValue = 0; int percentage=0; void setup() { pinMode(3,OUTPUT); Serial.begin(9600); } void loop() { soilMoistureValue = analogRead(A0); Serial.println(percentage); percentage = map(soilMoistureValue, 490, 1023, 100, 0); if(percentage < 10) { Serial.println(" pump on"); digitalWrite(3,LOW); } if(percentage >80) { Serial.println("pump off"); digitalWrite(3,HIGH); } } int GLED= 13; // мокрая почва D13 int RLED= 12; // сухая почва D12 int SENSE= 0; // аналоговый сигнал датчика влажности почвы A0 int value= 0; void setup() { Serial.begin(9600); pinMode(GLED, OUTPUT); pinMode(RLED, OUTPUT); Serial.println("SOIL MOISTURE SENSOR"); Serial.println("-----------------------------"); } void loop() { value= analogRead(SENSE); value= value/10; Serial.println(value); if(value<50) { digitalWrite(GLED, HIGH); } else { digitalWrite(RLED,HIGH); } delay(1000); digitalWrite(GLED,LOW); digitalWrite(RLED, LOW); } const int sensor_pin = A1; /* Датчик подключен на пин А1 */ void setup() { Serial.begin(9600); /* Скорость порта 9600 */ } void loop() { float moisture_percentage; int sensor_analog; sensor_analog = analogRead(sensor_pin); moisture_percentage = ( 100 - ( (sensor_analog/1023.00) * 100 ) ); Serial.print("Moisture Percentage = "); Serial.print(moisture_percentage); Serial.print("%\n\n"); delay(1000); } Чтобы процесс окисления проходил медленнее, можно подключить питание датчика на цифровой вход Ардуино и подавать напряжение только на время измерения. Схема подключения: Пример кода для снятия показаний: int moisture = 0; // показания датчика влажности unsigned long moisture_time = 0; // таймер датчика влажности unsigned long time_abs = 0; // Разница во времени void setup() { pinMode (8, OUTPUT); // Датчик влажности - питание digitalWrite (8, LOW); } void loop() { time_abs = millis() - moisture_time; // Сколько времени прошло time_abs = abs(time_abs); if (time_abs > 3600000) { // Раз в час get_moisture(); // Снимаем показания датчика влажности moisture_time = millis(); } } void get_moisture() { digitalWrite (8, HIGH); // Включаем датчик влажности delay (3000); moisture = analogRead(A0); // получение значения влажности с аналогового вывода датчика digitalWrite (8, LOW); } При снятии показаний раз в час датчик способен прожить до трех месяцев. Сделаете снятие показаний раз в четыре часа - может и год протянет. Постоянно заказывать датчики лень, поэтому можно сделать датчик самому - для этого нужно два гвоздя и клеммная колодка, можно обойтись без пайки: |