Stránka 1 z 1
Vynulování hodnoty, pokud se nemění
Napsal: 17 kvě 2019, 09:51
od QRocky
Ahojte, potřeboval bych poradit, jak můžu do tohoto kódu vepsat vynulování proměnné "state" pokud zůstává například tři vteřiny na stejné hodnotě. Uvažoval jsem o funkci milis, ale popravdě nevím, jak na to...
Prosím o radu. Děkuji
Kód: Vybrat vše
int Aura = 3;
int state; // Vyctena hodnota z bluetooth
int AuraPWM;
void setup() {
pinMode(Aura, OUTPUT);
Serial.begin(38400);
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0)
{
state = Serial.read();
AuraPWM = state * 10;
}
Serial.println(state);
delay(1000);
analogWrite(Aura, state);
}
Re: Vynulování hodnoty, pokud se nemění
Napsal: 17 kvě 2019, 10:35
od jankop
Potřebuješ vynulovat, pokud se hodnota tři vteřiny nemění nebo pokud nebyla žádná hodnota tři vteřiny přijata?
Re: Vynulování hodnoty, pokud se nemění
Napsal: 17 kvě 2019, 10:41
od QRocky
jankop píše: ↑17 kvě 2019, 10:35
Potřebuješ vynulovat, pokud se hodnota tři vteřiny nemění nebo pokud nebyla žádná hodnota tři vteřiny přijata?
Ahoj, potřebuju vynulovat, pokud se hodnota nemění.
Re: Vynulování hodnoty, pokud se nemění
Napsal: 17 kvě 2019, 12:11
od jankop
Tohle by mohlo fungovat
Kód: Vybrat vše
#define Aura 3
int state = 0; // Vyctena hodnota z bluetooth
int OldState = 0;
int8_t AuraPWM = 0;
long unsigned OldMillis = 0;
void setup() {
pinMode(Aura, OUTPUT);
Serial.begin(38400);
Serial.begin(9600);
}
void loop() {
if (millis() - OldMillis > 3000) {
OldMillis = millis();
if (state - OldState == 0) {
state = 0;
}
OldState = state;
}
if (Serial.available() > 0)
{
state = Serial.read();
AuraPWM = state * 10;
if (state != OldState) {
OldMillis = millis();
OldState = state;
}
}
Serial.println(state);
delay(1000);
analogWrite(Aura, state);
}
Ještě aby to bylo úplně košér, tak je vhodné vypustit delay()
Kód: Vybrat vše
#define Aura 3
int state = 0; // Vyctena hodnota z bluetooth
int OldState = 0;
int8_t AuraPWM = 0;
long unsigned OldMillis = 0;
long unsigned OldMillis2 = 0;
void setup() {
pinMode(Aura, OUTPUT);
Serial.begin(38400);
Serial.begin(9600);
}
void loop() {
if (millis() - OldMillis > 3000) {
OldMillis = millis();
if (state - OldState == 0) {
state = 0;
}
OldState = state;
}
if (Serial.available() > 0)
{
state = Serial.read();
AuraPWM = state * 10;
if (state != OldState) {
OldMillis = millis();
OldState = state;
}
}
if (millis() - OldMillis2 > 1000) {
OldMillis2 = millis();
Serial.println(state);
analogWrite(Aura, state);
}
}