Stránka 1 z 1

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

Napsal: 16 kvě 2020, 21:56
od goikyf
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;
}

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

Napsal: 16 kvě 2020, 22:16
od pavel1tu

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

Napsal: 16 kvě 2020, 22:59
od Hanz
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;
}

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

Napsal: 17 kvě 2020, 11:07
od goikyf
Děkuji, funguje. Budu se pomalu doučovat a zkoušet.

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

Napsal: 17 kvě 2020, 20:38
od pavel1tu
Ale no tak, příšťe mu dejte alespoň týden jestli to s nápovědou nedá ...

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

Napsal: 17 kvě 2020, 21:10
od kiRRow
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 :)

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

Napsal: 17 kvě 2020, 22:18
od goikyf
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