Jak vypsat hodnotu před 10min?

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
vcasek
Příspěvky: 4
Registrován: 23 říj 2018, 19:44
Reputation: 0

Jak vypsat hodnotu před 10min?

Příspěvek od vcasek » 23 říj 2018, 19:56

na 16x2 lcd mi jde hodnota z mg811 CO2 senzoru.

lcd.setCursor(0, 1);

lcd.print(" CO2 ppm= ");
if (hodnota <400) {
lcd.print( "<400" );
} else {
lcd.print(hodnota);
}

delay(1000);

je mozny na druhej radek vypsat hodnotu 10minut starou?
prosim

vcasek
Příspěvky: 4
Registrován: 23 říj 2018, 19:44
Reputation: 0

Re: Jak vypsat hodnotu před 10min?

Příspěvek od vcasek » 23 říj 2018, 20:42

ajo

lcd.setCursor(0, 1);

lcd.print(" CO2 ppm ");
if (hodnota <400) {
lcd.print( "<400" );
} else {
lcd.print(hodnota);
}
delay(1000);

lcd.setCursor(0, 0);

lcd.print(" -10 min ");
if (hodnota <400) {
lcd.print( "<400" );
} else {
lcd.print(hodnota);
}
delay(600000);

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Jak vypsat hodnotu před 10min?

Příspěvek od AstroMiK » 23 říj 2018, 20:56

S tou dlouhou pauzou to určitě nepůjde.

Musíš si aktuální hodnoty někam odkládat. Nejlepší je asi do nějakého pole.
A z toho pole si pak můžeš brát ty starší uložené hodnoty a zobrazovat je.

Tady je takový rychlý nástřel, jak by to mohlo vypadat. (Doplň si tam čtení aktuální hodnoty a knihovny pro práci s displejem)
Prvních 10 minut to bude ukazovat starou hodnotu nulovou, ale pak už se by měly zobrazovat skutečně změřené staré hodnoty.

Kód: Vybrat vše


int pole_starych_hodnot[9];          // polozky v poli jsou cislovane od 0 do 9
byte pocitadlo_sekund=0;             // pomocne pocitadlo sekundovych smycek

void setup(void)
  {
     // doplnit, co je treba
  }



void loop(void)
  {


   // int hodnota = ..........  // tady se vlozi prikaz pro cteni aktualni hodnoty z cidla

    
    pocitadlo_sekund ++ ;                                                            // Kazda smycka trva 1 sekundu. Tady je pocitadlo smycek.
    
    if (pocitadlo_sekund == 60)                                                      // Kazdych 60 pruchodu smyckou (to je kazdou minutu) se ...
      {
        pocitadlo_sekund = 0;                                                        // ... vynuluje pocitadlo sekund ...
        for (byte index_pole = 1 ; index_pole <10 ; index_pole++)                    // ... a cele pole starych hodnot ...
          {
            pole_starych_hodnot[index_pole - 1] = pole_starych_hodnot[index_pole];   // ...  se posune o jednu pozici "dolu".
          }
        pole_starych_hodnot[9] = hodnota;                                            // Na uvolnenou nejvyssi pozici se ulozi aktualni namerena hodnota.
      }


    // zobrazeni aktualni hodnoty na displeji:
      lcd.setCursor(0, 1);
      lcd.print(" CO2 ppm= ");
      if (hodnota <400) {
      lcd.print( "<400" );
      } else {
      lcd.print(hodnota);
      }


    // zobrazeni 10 minut stare hodnoty na displeji:
      lcd.setCursor(0, 0);
      lcd.print("-10 minut= ");
      if (pole_starych_hodnot[0] <400) {                       // 10 minut stara hodnota je ulozena v promenne 'pole_starych_hodnot[0]'
      lcd.print( "<400" );
      } else {
      lcd.print(pole_starych_hodnot[0]);
      }

    
    delay(1000);

    
  }

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

Re: Jak vypsat hodnotu před 10min?

Příspěvek od pavel1tu » 24 říj 2018, 11:46

CO2 plánuji vyčítat jednou za 5 min - již jsem to testoval - simulací hodnot poťákem.

Do pole ukládám 12 hodnot co 5 minut - historie za hodimu,
každých 5 minut vyčtu novou hodnotu, posunu ukazovátko na proměnnou v poli o jedna a uložím
ze starších hodnot (ukazovátko -1, -2 atd.) budu asi dělat graf, nebo průměr, ještě nevím

do budoucna přidám LAN modul a budu to ukládat na WWW server do databáze - hudba budoucnosti
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

vcasek
Příspěvky: 4
Registrován: 23 říj 2018, 19:44
Reputation: 0

Re: Jak vypsat hodnotu před 10min?

Příspěvek od vcasek » 24 říj 2018, 19:18

moc dekuju

vcasek
Příspěvky: 4
Registrován: 23 říj 2018, 19:44
Reputation: 0

Re: Jak vypsat hodnotu před 10min?

Příspěvek od vcasek » 25 říj 2018, 14:34

Tak po 10min. kdy se ma vypsat stara hodnota se Nano restartuje. Zkusim to na Unu. Je to jenom detajl ktetej nepotrebuju nutne. Restart arduina po nejaky dobe pripadne vypnuti ale budu taky resit tak se to hodi.

Odpovědět

Kdo je online

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