příkaz stayON mi drží jen asi 30000ms

Odpovědět
goikyf
Příspěvky: 3
Registrován: 16 kvě 2020, 21:48
Reputation: 0

příkaz stayON mi drží jen asi 30000ms

Příspěvek od goikyf » 16 kvě 2020, 21:56

Zdravím,
jsem úplný začátečník, potřebuji zatím vytvořit zpožděné vypnutí relé. Mám následující program stažený z internetu, ale když prodloužím dobu int stayON = na více jak 30000, tak to už nevypne nikdy. Na internetu jsem nenašel nikde příčinu.
Děkuji za radu.

int pinButton = 8;
int Relay = 2;
int stateRelay = LOW;
int stateButton;
int previous = LOW;
long time = 0;
long debounce = 500;
int stayON = 5000; //stay on for 5000 ms

void setup() {
pinMode(pinButton, INPUT);
pinMode(Relay, OUTPUT);
}

void loop() {
stateButton = digitalRead(pinButton);
if(stateButton == HIGH && previous == LOW && millis() - time > debounce) {
if(stateRelay == HIGH){
digitalWrite(Relay, LOW);
} else {
digitalWrite(Relay, HIGH);
delay(stayON);
digitalWrite(Relay, LOW);
}
time = millis();
}
previous == stateButton;
}

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

Re: příkaz stayON mi drží jen asi 30000ms

Příspěvek od pavel1tu » 16 kvě 2020, 22:16

UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

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

Re: příkaz stayON mi drží jen asi 30000ms

Příspěvek od Hanz » 16 kvě 2020, 22:59

myslím, že v kodu místo int stayON příjde unsigned long stayON

Kód: Vybrat vše

int pinButton = 8;
int Relay = 2;
int stateRelay = LOW;
int stateButton;
int previous = LOW;
long time = 0;
long debounce = 500;
unsigned long stayON = 5000; //stay on for 5000 ms

void setup() {
pinMode(pinButton, INPUT);
pinMode(Relay, OUTPUT);
}

void loop() {
stateButton = digitalRead(pinButton);
if(stateButton == HIGH && previous == LOW && millis() - time > debounce) {
if(stateRelay == HIGH){
digitalWrite(Relay, LOW);
} else {
digitalWrite(Relay, HIGH);
delay(stayON);
digitalWrite(Relay, LOW);
}
time = millis();
}
previous == stateButton;
}

goikyf
Příspěvky: 3
Registrován: 16 kvě 2020, 21:48
Reputation: 0

Re: příkaz stayON mi drží jen asi 30000ms

Příspěvek od goikyf » 17 kvě 2020, 11:07

Děkuji, funguje. Budu se pomalu doučovat a zkoušet.

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

Re: příkaz stayON mi drží jen asi 30000ms

Příspěvek od pavel1tu » 17 kvě 2020, 20:38

Ale no tak, příšťe mu dejte alespoň týden jestli to s nápovědou nedá ...
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

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

Re: příkaz stayON mi drží jen asi 30000ms

Příspěvek od kiRRow » 17 kvě 2020, 21:10

No ták. Dyť má pravdu chlapec :) ... a to tu nedávno horko a těžce drtil blikání ledkou a dvě tlačítka s millis :) ... jde vidět, že pokročil :)

goikyf
Příspěvky: 3
Registrován: 16 kvě 2020, 21:48
Reputation: 0

Re: příkaz stayON mi drží jen asi 30000ms

Příspěvek od goikyf » 17 kvě 2020, 22:18

Přesně tak :) byl to první den (možná druhý) s arduinem. Teprve zjišťuju jak na to, a mám radost, když něco funguje. Díky za odkaz výše na funkce. Měl jsem jen omezený seznam, tento jsem nenašel. Ještě bych do něj rád brzo přidal nějaké PWM a možná pak ještě něco. Postupně. Díky

Odpovědět

Kdo je online

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