Stránka 2 z 4

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 24 říj 2020, 21:04
od Kony
uuuplne krrááááááásne to funguje, presne dle mych predstav

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 25 říj 2020, 01:17
od Hanz
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

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 25 říj 2020, 12:08
od Kony

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);
}

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 25 říj 2020, 23:16
od Hanz
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

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 26 říj 2020, 08:29
od Kony
ano kod mam odzkouseny a funkcni.
Teplotu nastavuji dvema, protoze jeden plus a druhý mínus hodnota

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 26 říj 2020, 10:46
od pavel1tu
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

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 26 říj 2020, 11:04
od Kony
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 :))

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 26 říj 2020, 20:30
od Kony
Tak se musim tedy pochlubit :))))

https://ibb.co/hLgf27y

https://ibb.co/DWd5RWn

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 27 říj 2020, 22:58
od Hanz
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

Re: Ovladaní vetráku dle teploty a displeye

Napsal: 28 říj 2020, 11:34
od Kony
Me to chodi uplne v pohode.... natocim taky video