příkaz stayON mi drží jen asi 30000ms
příkaz stayON mi drží jen asi 30000ms
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;
}
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;
}
- 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
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: příkaz stayON mi drží jen asi 30000ms
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
Děkuji, funguje. Budu se pomalu doučovat a zkoušet.
- 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
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: příkaz stayON mi drží jen asi 30000ms
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
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
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti