Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Příspěvek od Kony » 26 kvě 2021, 22:01

vyreseno

Kód: Vybrat vše

unsigned long aktualniMillis1; //aktualni cas
unsigned long predchoziMillis1; //cas poseldni akce
unsigned long aktualniMillis5; //aktualni cas
unsigned long predchoziMillis5; //cas poseldni akce
void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Seriovy port aktivni");
}

void loop() {
  // put your main code here, to run repeatedly:
  aktualniMillis1 = millis(); //podivam se na hodinky
  aktualniMillis5 = millis(); //podivam se na hodinky
  Serial.println(aktualniMillis1);
  Serial.println(aktualniMillis5);
    if(aktualniMillis1 - predchoziMillis1 > 10000) { //pokud zhasnout ubehlu uz 500ms od posledni akce?
            predchoziMillis1 = aktualniMillis1; //v tento cas jsem provedl posledni akci
             Serial.println("Po 10000"); //zhasni led
    }
        else if(aktualniMillis5 - predchoziMillis5 > 50000) { //pokud zhasnout ubehlu uz 500ms od posledni akce?
            predchoziMillis5 = aktualniMillis5; //v tento cas jsem provedl posledni akci
             Serial.println("Po 50000"); //zhasni led
    }
  delay(1000);

}

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Příspěvek od KamilV » 26 kvě 2021, 22:19

:o
Jako rozhodně to neřeší původní dotaz, ale asi ses dostal tam, kam jsi potřeboval.

Kony
Příspěvky: 382
Registrován: 09 dub 2020, 11:43
Reputation: 0

Re: Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Příspěvek od Kony » 26 kvě 2021, 22:44


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

Re: Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Příspěvek od kiRRow » 27 kvě 2021, 17:10

Ano. Přesně tak se programuje. Nejprve si řekneš co přesně chceš a kdy chceš aby se dělo, pak teprve začneš psát kód, nebo vkopírovávat funkční bloky a podprogramy na své místo v programu. Já si třeba složitější programy i kreslím na papír ve formě vývojového diagramu.

PS: zbav se delay, neskutečný nešvár tahle věc ... použít se dá snad jedině v momentě, kdy úmyslně chci zablokovat celý program

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Příspěvek od KamilV » 27 kvě 2021, 19:57

Ještě pár bodů k zamyšlení, kdybys to chtěl posunout ještě dál:
K čemu si definuješ char server, když to stejně nikde nepoužíváš a vkládáš URL natvrdo?

Jakou výhodu přináší

Kód: Vybrat vše

#define typDHT22 DHT22   // DHT 22 (AM2302)
DHT mojeDHT(pinDHT, typDHT22);
místo

Kód: Vybrat vše

DHT mojeDHT(pinDHT, DHT22);
Někdy si říkám, že je lepší žádný komentář, než mylný.

Kód: Vybrat vše

if(aktualniMillis1 - predchoziMillis1 > 60000) { //pokud zhasnout ubehlu uz 500ms od posledni akce?

Arthur
Příspěvky: 39
Registrován: 02 čer 2021, 03:37
Reputation: 0

Re: Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Příspěvek od Arthur » 02 čer 2021, 04:52

Myslím, že použití delay.( ) pro zpoždění je v pořádku.

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Příspěvek od gilhad » 02 čer 2021, 05:12

@Artur: IMHO pouze pokud program má dělat jednu jedinou věc, přerušení nepřichází v úvahu, nikdy nebude vylepšován a nebude veřejně dostupný, protože jinak ho někdo použije jako základ něčeho, co předchozí nesplňuje.
A ani potom neprináší žádnou zvláštní výhodu.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Příspěvek od jankop » 02 čer 2021, 11:39

V případě, že se jedná o ESP8266, jako v tomto případě, tak je delay() doporučováno v situaci, kdy volaná funkce trvá déle než 50ms. Je to proto, aby se umožnilo uvolnil čas pro TCP/IP a WiFi stack. Ve svých programech používám delay() pouze při připojování k WiFi a pak pouze ve výjimečných případech, kdy je například třeba vyčkat pouze 1ms na reset externího obvodu. Souhlasím tedy s názorem, že delay() v dobrém programu nemá místo. Základem je smyčka loop(), ve které jsou časově závisle podmínky, které volají požadované funkce.
Pak to vypadá nějak takto:

Kód: Vybrat vše

void loop(void) {
  server.handleClient();
  MDNS.update();
  // periodic sensor reading
  if ((((millis() - SensorReadPeriod) > TimeSensorTemp) && (millis() > SensorReadPeriod)) || TimeSensorTemp == 0) {
    TimeSensorTemp = millis();
    // reading valid data from sensor
    GetSensor();
  }
  // periodic sending of data to the host
  if (((((millis() - SendPeriod) > TimeSendTemp) && (millis() > SendPeriod)) || TimeSendTemp == 0) && SendToTmep) {
    TimeSendTemp = millis();
    // Send valid data to host
    SendData();
  }
}
Ty testy proměných na nulu jsou proto, aby se požadované funkce provedly okamžitě po restartu obvodu a například zobrazení požadovaných hodnot bylo ihned a nečekalo se třeba minuty na první výsledek.

Uživatelský avatar
Caster
Příspěvky: 380
Registrován: 11 zář 2019, 09:02
Reputation: 0

Re: Odesílání hodnot po cca 10 minutách mimo zobrazovaní

Příspěvek od Caster » 02 čer 2021, 12:25

Není na to nic složitého. Na ATtiny202 používám interní RTC. Každou hodinu generuji přerušení, kdy změřím hodnoty a odešlu je přes SigFox vysílač do sítě. Napájení je z 12V zásuvky auta. Skoro 2 roky to běží bez nejmenších problémů.

Odpovědět

Kdo je online

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