Ovladaní vetráku dle teploty a displeye

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od Kony » 24 říj 2020, 21:04

uuuplne krrááááááásne to funguje, presne dle mych predstav

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od Hanz » 25 říj 2020, 01:17

uuuplne krrááááááásne to funguje, presne dle mych predstav
taky bych se rád potěšil, jak jsi to vyřešil ? uvítám, když zveřejníš kod nejen pro mě , ale i pro ostatní ;) díky

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od Kony » 25 říj 2020, 12:08

Kód: Vybrat vše

#include <DHT.h>
#include <LiquidCrystal.h>

// inicializace pinu, lze vyměnit za jiné volné
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define pinDHT 8
DHT mySensor(pinDHT, DHT22);
int teplota;

void setup()
{
  Serial.begin(115200);
  lcd.begin(16,2);
  lcd.setCursor(0,0);
  lcd.print("Aktualni:");
  lcd.setCursor(0,1);
  lcd.print("Nastaveni: ");
  pinMode(52, INPUT_PULLUP);   // pin 52  nastaven jako vstup
  pinMode(53, INPUT_PULLUP);   // pin 53  nastaven jako vstup
  pinMode(50, OUTPUT);
}

void loop()
{
  float tep = mySensor.readTemperature();
  lcd.setCursor(10,0);
  lcd.print("    ");
  lcd.setCursor(10,0);
  lcd.print(tep);
  Serial.println(tep);
  lcd.setCursor(14,0);
  lcd.print((char)223);
  lcd.print("C");
     if (digitalRead(52) == LOW){
   teplota = (teplota+5);
   Serial.println(teplota);
   lcd.setCursor(11,1);
   lcd.print("     ");
  } 
       if (digitalRead(53) == LOW){
   teplota = (teplota-5);
   Serial.println(teplota);
   lcd.setCursor(11,1);
   lcd.print("     ");
   }
   Serial.println(teplota);  
  lcd.setCursor(11,1); 
  lcd.print(teplota);
  lcd.setCursor(14,1);
  lcd.print((char)223);
  lcd.print("C");
  if (tep > (teplota + 2)) digitalWrite(50, LOW);
  if (tep < (teplota - 2)) digitalWrite(50, HIGH);
  delay (200);
}

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od Hanz » 25 říj 2020, 23:16

zdravím, díky za zveřejnění kodu.
Mám k němu otázečku - máš kod odzkoušený ? a dále by mě zajímalo, proč chceš nastavovat teplotu dvěma tlačítkama ? když to může být třeba takto :

Kód: Vybrat vše

int zelena = 10;
int cervena = 9;
int modra = 11;
int zluta = 12;
int RELE = 4;

#include "DHT.h"
#define typDHT11 DHT11
#define pinDHT 3
DHT mojeDHT(pinDHT, typDHT11);

// knihovny pro LCD přes I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// nastavení adresy I2C (0x27 moje adresa), + počet znaků a řádků LCD, moje lcd je 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);


void setup() {
  
  Serial.begin(9600);   
  lcd.begin(16, 2);   // inicializace LCD  
  lcd.backlight();  // zapnutí podsvícení  
  lcd.print(" LCD  pripraven  ");  // vytisknutí hlášky na první řádek
  
  pinMode(zelena, OUTPUT);
  pinMode(modra, OUTPUT);
  pinMode(cervena, OUTPUT);
  pinMode(zluta, OUTPUT);
  pinMode(RELE, OUTPUT);

  mojeDHT.begin();
}


void loop() {

  float teplota = mojeDHT.readTemperature();
  float vlhkost = mojeDHT.readHumidity();

  if (isnan(teplota) || isnan(vlhkost)) {
    Serial.println("Chyba při čtení z DHT senzoru!");
    lcd.setCursor(0, 0);
    lcd.print(" Erorr read DHT ");  // vypis na lcd >> chyba při čtení DHT
    lcd.setCursor(0, 1);
    lcd.print("                ");  // vymazání druhého řádku na lcd
  } else {
    Serial.print("Teplota: ");
    Serial.print(teplota);
    Serial.print(" stupnu Celsia, ");
    lcd.setCursor(0,0);
    lcd.print("Teplota: ");
    lcd.print(teplota);
    lcd.setCursor(14,0);
    lcd.print((char)223);  // znak pro stupeň Celsia
    lcd.print("C");
    Serial.print("vlhkost: ");
    Serial.print(vlhkost);
    Serial.println("  %");
    lcd.setCursor(0, 1);
    lcd.print("Vlhkost: ");
    lcd.print(vlhkost);
    lcd.print(" %"); 
  }

  if (teplota < 26) {    
    digitalWrite(zelena, LOW);
  }else
  { digitalWrite(zelena, HIGH); // když je teplota vyšší jak 26 stupňů rožne se zelená led
  }
   
  if (vlhkost < 85) {
    digitalWrite(modra, LOW);
  }else
  { digitalWrite(modra, HIGH);  // když je vlhkost vyšší jak 85 procent rožne se modrá led
  }
  
  if (teplota > 26 && vlhkost > 85) {
    digitalWrite(cervena, HIGH);  // když teplota a vlhkost překločily horní limity rožne se červená led
    digitalWrite(RELE, LOW);  // relé sepne motor ventilátoru 
    digitalWrite(zluta, HIGH);  // když běží motor ventilátoru svítí žlutá led 
    Serial.println("senzory >> ALARM <<");
    Serial.println("Klimatizace ZAP"); 
    lcd.setCursor(0, 0);
    lcd.print("sensory  ALARM  ");
    lcd.setCursor(0, 1);
    lcd.print("Klimatizace ZAP ");    
  }

  else {
    digitalWrite(cervena, LOW);
    digitalWrite(RELE, HIGH);
    digitalWrite(zluta, LOW);  
  }

  delay(1500);
}
tento kod může být určitě jiný a lepší, ale je včera postavený a vyzkoušený, teplotu si nastavíš jakou potřebuješ a vlhkost u 3d tiskárny je dobré si taky hlídat. Pravda je , že teplotu si tady nenastavíš tlačítkem, ani potenciometrem, no dobré by to bylo - mám co zlepšovat
Jen pro inspiraci přikládám printScreen výpisu na seriový monitor https://ctrlv.cz/ZBNL
Obrázek
Přílohy
ZBNL.png

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od Kony » 26 říj 2020, 08:29

ano kod mam odzkouseny a funkcni.
Teplotu nastavuji dvema, protoze jeden plus a druhý mínus hodnota

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od pavel1tu » 26 říj 2020, 10:46

Pěkná práce, dále jen úvaha:
když vezmu tu MEGU a další - asi nejdražší "termostat" co jsem za život potkal ;) ale moje první meteostanice mne stála tak 4000Kč (každá další 1200Kč) - není nad tu radost když to chodí.

Kod by chtělo učesat, okomentovat a dát do hotových projektů - může ho někdo použít do svých začátků s MEGA
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od Kony » 26 říj 2020, 11:04

nebude to jen termostat, ale navic to bude ovladat dalsi rele, bude to mit jeste na sobe cidlo koure, otevreneho ohne a dalsi pxcovinky..
Kod musim ucesat :))

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od Kony » 26 říj 2020, 20:30

Tak se musim tedy pochlubit :))))

https://ibb.co/hLgf27y

https://ibb.co/DWd5RWn

Hanz
Příspěvky: 262
Registrován: 25 dub 2019, 23:52
Reputation: 0

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od Hanz » 27 říj 2020, 22:58

musím ti pogratulovat k tomuto
no nedávno jsem se tě ptal, jestli máš kod odzkoušený a odpověď byla
ano kod mam odzkouseny a funkcni.
radoval jsem se a kod sestavil, zde je odkaz na video : https://www.youtube.com/watch?v=ImpQfZzVSvg
má kod pracovat tak, jak je v ukázce, nebo ti chodí jinak a mám někde chybu ? , což se může stát.

Obrázek
mini 2.jpg
kod použit z přízpěvku zde od Kony » 25 říj 2020, 12:08

PS: může mi prosím někdo vysvětlit, proč se mi na lcd vypisuje cca jen poloviční hodnota naměřené teploty a navíc místo hodnoty, která se objevuje a zase mizí,u výpisu "Aktualní : nan °C" ? díky
Přílohy
mini 1.jpg

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: Ovladaní vetráku dle teploty a displeye

Příspěvek od Kony » 28 říj 2020, 11:34

Me to chodi uplne v pohode.... natocim taky video

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 47 hostů