Умный полив

Mulmuga
Offline
Зарегистрирован: 13.02.2020

Приветствую любителей Ардуино!!!

Скажу сразу, не судите строго так как полный чайник, возможно на форуме и есть подобная информация, но перелопатить такой обьем информации нет времени, сын притащил со школы с кружка данный конструктор, в общем вроде как бы более менее разобрался, схему собрал, скетч с горем пополам состряпал, и даже работает, но показания датчика влажности на дисплее 1602 I2C вообще ни о чем, показывает целое число от 3 до 8, как сделать нормальные показания в процентах...Датчик влажности

#include <LCD_1602_RUS.h>
#include <Wire.h>              // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602

LCD_1602_RUS lcd(0x27,16,2); // присваиваем имя lcd для дисплея 16х2


const int moistureA0 = A0;
const int Relay = 4;
int sensorValue = 0;


void setup() {
   pinMode(moistureA0, INPUT);
   pinMode(Relay,OUTPUT);
   lcd.init();      // инициализация LCD дисплея
   lcd.backlight(); // включение подсветки дисплея 
   lcd.setCursor(0,0);       // устанавливаем курсор на 1 символ первой строки
   lcd.print(L"BЛАЖНОСТЬ");
   delay(1000);
   lcd.setCursor(0,1);       // устанавливаем курсор на 1 символ второй строки
   lcd.print(L"ОЖИДАНИE");
   delay(1000);
 
   
}

void loop() {

  long sensorValue = analogRead(moistureA0);
  if (sensorValue <=300){
  digitalWrite(Relay, HIGH);
  lcd.setCursor(0,1);
  lcd.print("        ");
  delay(100);
  lcd.setCursor(0,1);
  lcd.print("ПОЛИВ");
  delay(1000);
   }
  else {
  digitalWrite(Relay, LOW);
  lcd.setCursor(13,0);
  lcd.print(sensorValue);
  lcd.setCursor(0,1);
  lcd.print(L"ОЖИДАНИE");
  }
  }

 

b707
Онлайн
Зарегистрирован: 26.05.2017

ссылку на дачик влажности дайте.

И схему подключения нарисуйте

Mulmuga
Offline
Зарегистрирован: 13.02.2020
sadman41
Offline
Зарегистрирован: 19.10.2016

Скорее всего у него датчик-вилка, которые на Али за 40р продают. 

Такие датчики в % переводить особого смысла нет.

-NMi-
Offline
Зарегистрирован: 20.08.2018

А откуда там проценты? С А0 читаем и ежли < 300 попугаев - поливаем. Там и датчика-то нет, фейк какой-то.

Это, извините, как в "шохе" кнопку круиз-контролья искать.)))

Mulmuga
Offline
Зарегистрирован: 13.02.2020

Датчик на A0 + на +, - на -, S на S, дисплей показывает значит правильно, реле на 4 цифровом, далее мотор, но не в этом суть, мне нужны показания...https://prntscr.com/r1pqks

Mulmuga
Offline
Зарегистрирован: 13.02.2020

Да просто вилка, и в интернете ничего найти не могу, через комп кажет, в чай пихаю кажет 700, на воздухе менее 300...https://prntscr.com/r1pikl

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Поставьте после строки №45 задержку типа delay(1000); или просто перенесите строку №38 между строками №№46 и 47

Чё получается?

Mulmuga
Offline
Зарегистрирован: 13.02.2020

В земле получается, чем меньше значение тем типа суше земля, чем выше соответственно влажность выше, в каких это единицах не понятно.....

sadman41
Offline
Зарегистрирован: 19.10.2016

В условных (0...1023). Минус % за конвертацию и президентский налог.

 

Mulmuga
Offline
Зарегистрирован: 13.02.2020

Да все тоже, показания датчика 3 реле сработало, мокрым пальцем зажимаю кажет 6 реле отключилось...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Скетч-то где?

sadman41
Offline
Зарегистрирован: 19.10.2016

Serial.println(moistureA0) после строки #30 и в Arduino IDE монитор смотреть, что выдаёт analogRead()

 

Mulmuga
Offline
Зарегистрирован: 13.02.2020

sadman41 пишет:

В условных (0...1023). Минус % за конвертацию и президентский налог.

 

Как в проценты перевести? 

Mulmuga
Offline
Зарегистрирован: 13.02.2020


#include <LCD_1602_RUS.h>
#include <Wire.h>              // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602

LCD_1602_RUS lcd(0x27,16,2); // присваиваем имя lcd для дисплея 16х2


const int moistureA0 = A0;
const int Relay = 4;
int sensorValue = 0;


void setup() {
   pinMode(moistureA0, INPUT);
   pinMode(Relay,OUTPUT);
   lcd.init();      // инициализация LCD дисплея
   lcd.backlight(); // включение подсветки дисплея 
   lcd.setCursor(0,0);       // устанавливаем курсор на 1 символ первой строки
   lcd.print(L"BЛАЖНОСТЬ");
   delay(1000);
   lcd.setCursor(0,1);       // устанавливаем курсор на 1 символ второй строки
   lcd.print(L"ОЖИДАНИE");
   delay(1000);
 
   
}

void loop() {

  long sensorValue = analogRead(moistureA0);
  if (sensorValue <=300){
  digitalWrite(Relay, HIGH);
  lcd.setCursor(0,1);
  lcd.print("        ");
  delay(100);
  lcd.setCursor(0,1);
  lcd.print("ПОЛИВ");
  delay(1000);
   }
  else {
  digitalWrite(Relay, LOW);
  lcd.setCursor(13,0);
  lcd.print(sensorValue);
  lcd.setCursor(0,1);
  lcd.print(L"ОЖИДАНИE");
  }
 
   
  
   
   

}

ЕвгенийП пишет:

Скетч-то где?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mulmuga пишет:

 Как в проценты перевести? 

Пока никак - сначала добиться, чтобы в попугаях показывала нормально. Не кидайтесь на всё сразу.

Сделайте, что я сказал и заодно вставьте печать, как сказал сэдмэн. И скетч и протокол печати в студию.

sadman41
Offline
Зарегистрирован: 19.10.2016

Mulmuga пишет:

sadman41 пишет:

В условных (0...1023). Минус % за конвертацию и президентский налог.

 

Как в проценты перевести? 

sadman41 пишет:

Такие датчики в % переводить особого смысла нет.

 
Mulmuga
Offline
Зарегистрирован: 13.02.2020

sadman41 пишет:

Serial.println(moistureA0) после строки #30 и в Arduino IDE монитор смотреть, что выдаёт analogRead()

 

в мониторе ноль, сухими альцами берешь 30 + -, мокрыми 700...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mulmuga пишет:



#include <LCD_1602_RUS.h>
#include <Wire.h>              // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602

LCD_1602_RUS lcd(0x27,16,2); // присваиваем имя lcd для дисплея 16х2


const int moistureA0 = A0;
const int Relay = 4;
int sensorValue = 0;


void setup() {
   pinMode(moistureA0, INPUT);
   pinMode(Relay,OUTPUT);
   lcd.init();      // инициализация LCD дисплея
   lcd.backlight(); // включение подсветки дисплея 
   lcd.setCursor(0,0);       // устанавливаем курсор на 1 символ первой строки
   lcd.print(L"BЛАЖНОСТЬ");
   delay(1000);
   lcd.setCursor(0,1);       // устанавливаем курсор на 1 символ второй строки
   lcd.print(L"ОЖИДАНИE");
   delay(1000);
 
   
}

void loop() {

  long sensorValue = analogRead(moistureA0);
  if (sensorValue <=300){
  digitalWrite(Relay, HIGH);
  lcd.setCursor(0,1);
  lcd.print("        ");
  delay(100);
  lcd.setCursor(0,1);
  lcd.print("ПОЛИВ");
  delay(1000);
   }
  else {
  digitalWrite(Relay, LOW);
  lcd.setCursor(13,0);
  lcd.print(sensorValue);
  lcd.setCursor(0,1);
  lcd.print(L"ОЖИДАНИE");
  }
 
   
  
   
   

}

ЕвгенийП пишет:

Скетч-то где?

Вы издеваетесь? Я же Вам сказал задержку вставить и сказал куда (после строки №45). Где задержка?

sadman41
Offline
Зарегистрирован: 19.10.2016

Конечно ноль, Serial.begin за вас же Пушкин не прописал скетчу.

Mulmuga
Offline
Зарегистрирован: 13.02.2020


#include <LCD_1602_RUS.h>
#include <Wire.h>              // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602

LCD_1602_RUS lcd(0x27,16,2); // присваиваем имя lcd для дисплея 16х2


const int moistureA0 = A0;
const int Relay = 4;
int sensorValue = 0;


void setup() {
   pinMode(moistureA0, INPUT);
   pinMode(Relay,OUTPUT);
   lcd.init();      // инициализация LCD дисплея
   lcd.backlight(); // включение подсветки дисплея 
   lcd.setCursor(0,0);       // устанавливаем курсор на 1 символ первой строки
   lcd.print(L"BЛАЖНОСТЬ");
   delay(1000);
   lcd.setCursor(0,1);       // устанавливаем курсор на 1 символ второй строки
   lcd.print(L"ОЖИДАНИE");
   delay(1000);
 
   
}

void loop() {

  long sensorValue = analogRead(moistureA0);
  if (sensorValue <=300){
  digitalWrite(Relay, HIGH);
  lcd.setCursor(0,1);
  lcd.print("        ");
  delay(100);
  
  lcd.print("ПОЛИВ");
  delay(1000);
   }
  else {
  digitalWrite(Relay, LOW);
  lcd.setCursor(13,0);
  lcd.print(sensorValue);
  lcd.setCursor(0,1);
  lcd.setCursor(0,1);
  lcd.print(L"ОЖИДАНИE");
  lcd.setCursor(0,1);
  }

ЕвгенийП пишет:

Mulmuga пишет:



#include <LCD_1602_RUS.h>
#include <Wire.h>              // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602

LCD_1602_RUS lcd(0x27,16,2); // присваиваем имя lcd для дисплея 16х2


const int moistureA0 = A0;
const int Relay = 4;
int sensorValue = 0;


void setup() {
   pinMode(moistureA0, INPUT);
   pinMode(Relay,OUTPUT);
   lcd.init();      // инициализация LCD дисплея
   lcd.backlight(); // включение подсветки дисплея 
   lcd.setCursor(0,0);       // устанавливаем курсор на 1 символ первой строки
   lcd.print(L"BЛАЖНОСТЬ");
   delay(1000);
   lcd.setCursor(0,1);       // устанавливаем курсор на 1 символ второй строки
   lcd.print(L"ОЖИДАНИE");
   delay(1000);
 
   
}

void loop() {

  long sensorValue = analogRead(moistureA0);
  if (sensorValue <=300){
  digitalWrite(Relay, HIGH);
  lcd.setCursor(0,1);
  lcd.print("        ");
  delay(100);
  lcd.setCursor(0,1);
  lcd.print("ПОЛИВ");
  delay(1000);
   }
  else {
  digitalWrite(Relay, LOW);
  lcd.setCursor(13,0);
  lcd.print(sensorValue);
  lcd.setCursor(0,1);
  lcd.print(L"ОЖИДАНИE");
  }
 
   
  
   
   

}

ЕвгенийП пишет:

Скетч-то где?

Вы издеваетесь? Я же Вам сказал задержку вставить и сказал куда (после строки №45). Где задержка?

sadman41
Offline
Зарегистрирован: 19.10.2016

Сдаётся мне, что лавочку надо прикрывать или ссыпать тему в песочницу.

b707
Онлайн
Зарегистрирован: 26.05.2017

да он реально издевается...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы явно издеваетесь.

Ещё раз, для альтернативно понятливых: вставьте задержку delay(1000); после строки  #45 (по коду из поста #15).

Сделайте это, выложите скетч и скажите, что изменилось.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так, прекратите строчить как из пулемёта не читая что Вам пишут.

Последняя попытка:

1. Вставьте правильно задержку
2. Выложите (правильно) код с задержкой
3. Напишите, что показывается на экране.

Если и с третьего раз будет что-то не так, я умываю руки

Mulmuga
Offline
Зарегистрирован: 13.02.2020

На экране ни чего не меняется...

 

Mulmuga
Offline
Зарегистрирован: 13.02.2020
 
 
#include <LCD_1602_RUS.h>
#include <Wire.h>              // библиотека для управления устройствами по I2C 
#include <LiquidCrystal_I2C.h> // подключаем библиотеку для LCD 1602
 
LCD_1602_RUS lcd(0x27,16,2); // присваиваем имя lcd для дисплея 16х2
 
 
const int moistureA0 = A0;
const int Relay = 4;
int sensorValue = 0;
 
 
void setup() {
   pinMode(moistureA0, INPUT);
   pinMode(Relay,OUTPUT);
   lcd.init();      // инициализация LCD дисплея
   lcd.backlight(); // включение подсветки дисплея 
   lcd.setCursor(0,0);       // устанавливаем курсор на 1 символ первой строки
   lcd.print(L"BЛАЖНОСТЬ");
   delay(1000);
   lcd.setCursor(0,1);       // устанавливаем курсор на 1 символ второй строки
   lcd.print(L"ОЖИДАНИE");
   delay(1000);
 
   
}
 
void loop() {
 
  long sensorValue = analogRead(moistureA0);
  if (sensorValue <=300){
  digitalWrite(Relay, HIGH);
  lcd.setCursor(0,1);
  lcd.print("        ");
  delay(100);
  lcd.setCursor(0,1);
  lcd.print("ПОЛИВ");
  delay(1000);
   }
  else {
  digitalWrite(Relay, LOW);
  lcd.setCursor(13,0);
  lcd.print(sensorValue);
 
  lcd.setCursor(0,1);
  lcd.print(L"ОЖИДАНИE");
  delay(1000);
  
  } 
}
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mulmuga пишет:

На экране ни чего не меняется...

Понятно, значит мои многочисленные просьбы (пункты №№ 1-3 из #25) по-прежнему игнорируются. Ну, что ж, я хотел Вам помочь, но Вы упёрлись рогом и сопротивляетесь до последнего. Дело Ваше.

До свиданья, разбирайтесь сами. 

Mulmuga
Offline
Зарегистрирован: 13.02.2020

ЕвгенийП пишет:

Mulmuga пишет:

На экране ни чего не меняется...

Понятно, значит мои многочисленные просьбы (пункты №№ 1-3 из #25) по-прежнему игнорируются. Ну, что ж, я хотел Вам помочь, но Вы упёрлись рогом и сопротивляетесь до последнего. Дело Ваше.

До свиданья, разбирайтесь сами. 

Спасибо и на том!

b707
Онлайн
Зарегистрирован: 26.05.2017

Mulmuga - остановитесь, почитайте ветку с начала - внимательно, с полчаса или час, подумайте - и сделайте, что вам говорят.

Ну или действительно разбирайтесь сами - тогда не засоряйте форум пустыми сообщениями.

Mulmuga
Offline
Зарегистрирован: 13.02.2020

b707 пишет:

Mulmuga - остановитесь, почитайте ветку с начала - внимательно, с полчаса или час, подумайте - и сделайте, что вам говорят.

Ну или действительно разбирайтесь сами - тогда не засоряйте форум пустыми сообщениями.


Понятно спасибо, просто эта задержка ничего не меняет, хоть так хоть эдак, хотяб те значения что в мониторе вывести на дисплей, вот что он мне кажет 3 4 5 6 7 8, где те значения с монитора 30 700 и т.д

Mulmuga
Offline
Зарегистрирован: 13.02.2020

b707 пишет:

Mulmuga - остановитесь, почитайте ветку с начала - внимательно, с полчаса или час, подумайте - и сделайте, что вам говорят.

Ну или действительно разбирайтесь сами - тогда не засоряйте форум пустыми сообщениями.


Понятно спасибо, просто эта задержка ничего не меняет, хоть так хоть эдак, хотяб те значения что в мониторе вывести на дисплей, вот что он мне кажет 3 4 5 6 7 8, где те значения с монитора 30 700 и т.д

Mulmuga
Offline
Зарегистрирован: 13.02.2020

Всем спасибо! Модератор будте так любезны, тему ф помойку!