Нужна помощь!

NoNam
Offline
Зарегистрирован: 10.06.2017
#include <LCD5110_Basic.h>


#include "DHT.h" //библиотека для работы с DHT 
#define DHTPIN 2 //Обозначаем номер пина, к которому подключен датчик DHT11 
#define Relay 12 //Обозначаем номер пина, к которому подключен реле 
LCD5110 myGLCD(7,6,5,4,3);
DHT dht(DHTPIN, DHT11); //инициируем датчик DHT 

extern uint8_t SmallFont[]; // малый шрифт (из библиотеки)
extern uint8_t MediumNumbers[];

void setup(){ 
pinMode (Relay, OUTPUT); //Инициализируем режим работы порта в режиме выхода 
dht. begin(); 
 myGLCD.InitLCD();
} 

void loop() { 
delay (1000); 
float h = dht.readHumidity(); //Считываем влажность в переменную "h" 
float t = dht.readTemperature(); //Считываем температуру в переменную "t" 
if (isnan(t) || isnan(h)) { //если неправильно считалась информация { 
myGLCD.print ("errorDHT",CENTER, 0); //выводим надпись в программе
} else  {
  delay (1000);
  float h = dht.readHumidity();
  float t = dht.readTemperature(); 
  myGLCD.clrScr(); // очистка экрана
  myGLCD.setFont(SmallFont); // задаём размер шрифта
  myGLCD.printNumI( t, LEFT, 0);// выводим на строке 0, равнение по левому краю  
  myGLCD.print("c", CENTER, 0);// знак цельсии
  myGLCD.printNumI( h, LEFT, 16); // выводим в строке 16 
  myGLCD.print("%", CENTER, 16); //знак %
  delay (1000); // задержка 1 сек
}
if (h > 60) //Указываем условие, если переменная "h" (влажность) больше 40% 
{ 
digitalWrite (Relay, LOW); //то включаем наше реле, которое приводит в действие вентилятор 
} 
else //иначе 
{ 
digitalWrite (Relay, HIGH); //Реле будет выключено, вентилятор не работает 
} 
/*Вы можете изменить переменную на переменную . Мы привели вам самый простой пример, его идею можно использовать для создания качественного проекта! */ 
}

реле работать не хочет( где ошибка парни! Уно, LCD5110, DHT11,реле!

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

А поподробнее нельзя? Что этот код должен делать? Что делает? Чем первое отличается от второго?

NoNam
Offline
Зарегистрирован: 10.06.2017

Евгений, спасибо за ваше внимание! Это грубо)))регулятор влажности должен быть,! на данный момент на дисплее отображаются показания! пытался соединить два рабочих када ! Первый вариант выводит показания с датчика на экран, а второй кодвключал и выключал реле при разных переменных(  t, h ) вот попробывал совместить, но что то не так

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

Ну, давайте подробнее. Вы должны написать что-то вроде вот такого: "я хотел, чтобы при температуре Х влючилось реле, это делается в строке ххх, а при температуре Y - выключилось, это делается в строке zzz. Но оно сцуко включается сразу, при темепратуре Y как и положено выключается, а потом уже не включается никогда". Вот примерно так. Ну, что Вы предлагает нам догадываться что Вы хотели и что у Вас получается?

nik182
Offline
Зарегистрирован: 04.05.2015

Удалить строки 27,28. В строке 37 вместо 60 написать 40.0

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

Реле подключить к блоку питания 12V/6A.

NoNam
Offline
Зарегистрирован: 10.06.2017

expected unqualified-id befor "if"

ошибка компиляции

NoNam
Offline
Зарегистрирован: 10.06.2017

как при приеме на работу офф!! Нет опыта, иди на...! 

nick209
Offline
Зарегистрирован: 13.08.2017

Вам нужно немного прочитать про объявление переменных, вам будет понятнее где их лучше объявлять и где они будут работать.

И еще, переменные типа float очень не любят математические операции с другим типом переменных. У вас идет сравнение float с целым числом 60, это неправильно. Не уверен что реле не работает именно из за этого, но это вполне возможно.

И еще, почитайте про работу с Serial, вам будет легче на ходу отслеживать изменения и сразу появится понимание где искать ошибку.

NoNam
Offline
Зарегистрирован: 10.06.2017

ВСЕМ СПАСИБО за наводки!!! Все заработало как надо!)) Вот скетч, вдруг кому пригодится!

#include <DHT.h> // библиотека датчика
#include <LCD5110_Basic.h> // подключаем библиотеку
#define DHTPIN 2
#define Relay 12
LCD5110 myGLCD(7,6,5,4,3); // объявляем номера пинов LCD
DHT dht(DHTPIN, DHT11);

extern uint8_t SmallFont[]; // малый шрифт (из библиотеки)
extern uint8_t MediumNumbers[]; // средний шрифт для цифр (из библиотеки)


void setup() {
  dht. begin();
  pinMode (Relay, OUTPUT);
  myGLCD.InitLCD(); // инициализация LCD дисплея
}

void loop(){

  delay (1000);
  int h = dht.readHumidity();
  int t = dht.readTemperature(); 
  myGLCD.clrScr(); // очистка экрана
  myGLCD.setFont(SmallFont); // задаём размер шрифта
  myGLCD.printNumI( t, LEFT, 0);// выводим на строке 0, равнение по левому краю  
  myGLCD.print("c", CENTER, 0);// знак цельсии
  myGLCD.printNumI( h, LEFT, 16); // выводим в строке 16 
  myGLCD.print("%", CENTER, 16); //знак %
   // задержка 1 сек

if (h > 60) //Указываем условие, если переменная "h" (влажность) больше 40% 
{ 

digitalWrite (Relay, LOW); //то включаем наше реле, которое приводит в действие вентилятор 
} 
else //иначе 
{ 
digitalWrite (Relay, HIGH); //Реле будет выключено, вентилятор не работает 
} 

}

единственно пишет вот такое предупреждение, 

warning: deprecated conversion from string constant to 'char*' но в ообщем работает)