sepnutí po delším podržení tlačítka

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
nosac
Příspěvky: 11
Registrován: 06 lis 2019, 10:31
Reputation: 0

sepnutí po delším podržení tlačítka

Příspěvek od nosac » 11 pro 2019, 14:42

Potřebuji dopsat do programu pro ovládání topení tuto podmínku:
Pokud bude vstup D2 sepnutý alespoň 1 sekundu, sepni výstup 11 na 5 vteřin. Jde mi pouze o tu podmínku "sepnutý alespoň 1 sekundu.
Prosím o radu. Předpokládám, že pro znalé je to jednoduché, ale já se s tím trápím delší dobu.

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: sepnutí po delším podržení tlačítka

Příspěvek od kiRRow » 11 pro 2019, 17:45

Tipuji, že bojuješ s zákmity na tlačítku ... nebo vstupu ... a relé nebo co je na výstupu ... se při zmáčknutí několikrát sepne a rozepne než se ustálí. Použij example debounce a jako debounce čas nastav 10000ms ... negativní na tom bude to, že další stisk bude zaregistrován až po tom co bude tlačítko 1vteřinu puštěno, neuděláš dvojklik

nosac
Příspěvky: 11
Registrován: 06 lis 2019, 10:31
Reputation: 0

Re: sepnutí po delším podržení tlačítka

Příspěvek od nosac » 11 pro 2019, 18:03

no něco se občas naindukuje na vodič ke vstupu. Mám tam nastavený PULLUP na vstupu, ale asi je to málo. Mimo rozvaděč kde je zdroj a relé není problém, ale v rozvaděči to dělá neplechu. Jakoby se přepínal vstup z 1 na 0 a pak je delší dobu klid. Kdybych mu dal podmínku, že vstup musí být minimálně 1,10... vteřin seplý a pak proveď to co jsem mu napsal, tak to by mě stačilo na nahodilé rušení kolem vstupu. Relé na výstupu je ok. Mám to naprogramované takhle:

const int termostat = 2; // Pin D2 termostat
const int rele_1 = 11; // Pin D11 rele_1 - otevři topení
const int rele_2 = 12; // Pin D12 rele_2 - zavři topení

// virtualne promenne:
int stav_termostatu = 1; // toto je vych stav termostatu, musi být HIGH, protože relé sepne když je LOW
int virtualni_stav = 1; // tady jsem vytvoril virtualnu premennu, kterou budu prepisovat po kazde zmene vstupu D2 od termostatu

void setup() {
pinMode(termostat, INPUT_PULLUP); // nastav pin D2 ako vstup a zaroven napsane PULLUP protoze není odpor proti ruseni, ted OK
pinMode(rele_1, OUTPUT); // nastav rele_1 (pin D11) ako vystup
pinMode(rele_2, OUTPUT); // nastav rele_2 (pin D12) ako vystup
// pro začátek bude stav (pin D2) termostatu je jako v radku 7, t.j. HIGH ako vypnuto a taky
// pro začátek je virtualní proměnná "virtualni_stav" nastavná jako 1, viz řádek 8
digitalWrite(rele_1, HIGH); // rele_1 bude na začátku vypnute
digitalWrite(rele_2, HIGH); // rele_2 bude na začátku vypnute
}

void loop() {
stav_termostatu = digitalRead(termostat); // načítaj stav termostatu
if (stav_termostatu < virtualni_stav) // ak termostat sepl IN2 vůči GND
{
digitalWrite(rele_1, LOW); // zapni rele 1
delay(10000); // nech ho seplé 10 vteřin
digitalWrite(rele_1, HIGH); // vypni rele 1
virtualni_stav = 0; //zmen "virtualni_stav" na 0,
}else{ // jinak nech rele_1 v puvodnim stavu HIGH - vypnute
digitalWrite(rele_1, HIGH);
}
stav_termostatu = digitalRead(termostat); // načítaj stav termostatu
if (stav_termostatu > virtualni_stav) // termostat vypnul IN2 vůči GND
{
digitalWrite(rele_2, LOW); // rele 2 zapni
delay(10000); // nech ho seplé 10 vteřin
digitalWrite(rele_2, HIGH); // vypni rele 2
virtualni_stav = 1; //zmen "virtualni_stav" na 0,
}else{ // jinak nech rele_1 v puvodnim stavu HIGH - vypnute
digitalWrite (rele_2, HIGH);
}
}

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: sepnutí po delším podržení tlačítka

Příspěvek od kiRRow » 11 pro 2019, 18:24

na vkládání programů prosím používej tag code ... ikonka s </> ... lépe se to čte

jestli si to chceš vyřešit sám, opravdu se podívej na debounce example https://arduino.cz/arduino-zaklady-funkce-debounce/ není to fakt žádnej hardcore, odměnou ti bude fajn pocit :)

nosac
Příspěvky: 11
Registrován: 06 lis 2019, 10:31
Reputation: 0

Re: sepnutí po delším podržení tlačítka

Příspěvek od nosac » 11 pro 2019, 18:56

Aha? :o To jsem netušil, promiň příště to tak udělám. Díky za nasměrování, zkusím to nastudovat.

Odpovědět

Kdo je online

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