Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 21:04
uuuplne krrááááááásne to funguje, presne dle mych predstav
České fórum pro všechny nadšence do Arduina a dalších technologií.
https://forum.hwkitchen.cz/
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íuuuplne krrááááááásne to funguje, presne dle mych predstav
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);
}
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);
}
no nedávno jsem se tě ptal, jestli máš kod odzkoušený a odpověď byla
radoval jsem se a kod sestavil, zde je odkaz na video : https://www.youtube.com/watch?v=ImpQfZzVSvgano kod mam odzkouseny a funkcni.