Stránka 1 z 4
Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 18:16
od Kony
Ahoj, chtel bych ovladat pres Arduino rele na které budou připojeny dva větráky. tyto větráky budou regulovat teplotu ve skříni 3D tiskárny.
Nyní mám na MEGU DHT22 a displey.
Chtěl bych pomoci tlačítek nastavovat aktuální teplotu ve skříni a dle toho aby se spouštěly větráky a regulovaly teplotu.
Mohl by mi prosim někdo pomoct ?
jedná se mi o to:
Mít dvě tlačítka (mikrospínače)
Jedním přidávat teplotu a druhým ubírat teplotu a dle toho aby se udržovala teplota ve skříni
zatím mám toto :
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);
void setup()
{
Serial.begin(115200);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Aktualni:");
lcd.setCursor(0,1);
lcd.print("Nastaveni: ");
}
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");
delay(500);
}
Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 18:58
od Kony
nyní jsem přidal tlačítko, kterým bych nastavoval teplotu o 5 stupnu, ale ne a ne fungovat... porad to vypisuje promenou 0
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 tlacPinPlus = 52;
int stavTlacPlus = 0;
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(tlacPinPlus, INPUT);
}
void loop()
{
if (stavTlacPlus == HIGH) {
teplota = (teplota + 5);
}
else {
teplota = (teplota - 5);
}
float tep = mySensor.readTemperature();
Serial.println(stavTlacPlus);
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");
delay (1000);
}
zapojeno tlačítko z Pinu 52 přes tlačítko do +
Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 19:26
od Kony
nyní mám toto :
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); // pin 52 nastaven jako vstup
}
void loop()
{
if (digitalRead(52) == HIGH){
Serial.print("aaaa");
}
Serial.println(teplota);
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");
delay (1000);
}
a pořád to vypisuje nesmysli...... ikdyž nedržím tlačítko tak to vypisuje
Kód: Vybrat vše
3 -> 21.90
19:26:36.406 -> aaaa0
19:26:36.406 -> 21.90
19:26:37.438 -> 0
19:26:37.717 -> 21.90
19:26:38.700 -> 0
19:26:38.700 -> 21.90
19:26:39.733 -> 0
19:26:40.015 -> 21.90
19:26:40.999 -> 0
19:26:40.999 -> 21.90
19:26:42.012 -> aaaa0
19:26:42.294 -> 21.90
19:26:43.281 -> aaaa0
19:26:43.281 -> 21.90
19:26:44.316 -> 0
19:26:44.551 -> 21.80
19:26:45.574 -> 0
19:26:45.574 -> 21.80
19:26:46.557 -> aaaa0
19:26:46.840 -> 21.80
19:26:47.870 -> aaaa0
19:26:47.870 -> 21.80
19:26:48.852 -> 0
19:26:49.134 -> 21.80
19:26:50.164 -> 0
19:26:50.164 -> 21.80
19:26:51.146 -> 0
19:26:51.428 -> 21.80
19:26:52.413 -> 0
19:26:52.413 -> 21.80
19:26:53.444 -> aaaa0
19:26:53.725 -> 21.80
Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 19:45
od AstroMiK
Lepší je spínat pin proti GND a v sekci setup mít nastaveno pinMode na INPUT_PULLUP.
Potom je sepnuté tlačítko čteno jako LOW a rozepnuté jako HIGH.
Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 19:46
od Kony
muzes mi to pleas vysvetlit ??? nechapu zapojeni a nastaveni
Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 19:56
od AstroMiK
Pin 52 zapojit přes tlačítko do GND.
V sekci setup()
změnit řádku:
na:
Tím se na pin připojí vnitřní odpor proti +5V, takže i rozpojené tlačítko se bude číst jako logická "1" (HIGH).
Když se tlačítko sepne, tak se pin zkratuje do GND a tím se "přebije" původní HIGH na LOW.
Vysvětlení je na internetu spousta. Našel jsem přes Google třeba tenhle obrázek:
zdroj:
http://elextutorial.com/learn-arduino/a ... -resistor/
Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 20:01
od Kony
Uz i hodnoty jedou
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 52 nastaven jako vstup
}
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);
}
if (digitalRead(53) == LOW){
teplota = (teplota-5);
Serial.println(teplota);
}
delay (500);
}
Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 20:36
od Kony
snazim se dle teploty urcovat sepnuti rele
Kód: Vybrat vše
if (tep>teplota){
digitalWrite(50) == LOW);
else
digitalWrite(50) == HIGH);
}
Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 20:42
od AstroMiK
Přidej hysterezi, aby ti to kolem té nastavené teploty nekmitalo:
Kód: Vybrat vše
if (tep > (teplota + 2)) digitalWrite(50, LOW);
if (tep < (teplota - 2)) digitalWrite(50, HIGH);
Re: Ovladaní vetráku dle teploty a displeye
Napsal: 24 říj 2020, 20:59
od AstroMiK
... a máš v setupu nastaveno:
Než stačím odpovědět, tak tvoje příspěvky mizí...