Ukládání časových hodnot

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.
rickmann
Příspěvky: 20
Registrován: 17 pro 2019, 09:53
Reputation: 0

Ukládání časových hodnot

Příspěvek od rickmann » 01 led 2020, 17:16

Zdravím !
Jako totální začátečník bych potřeboval poradit :(nejlépe kdyby mi někdo prosím napsal vzor programu :) )
Potřeboval bych měřit čas sepnutí kontaktu a ukládat ho tak, abych občas kdyby byla potřeba píchnul noťas na arduino uno a hodnoty zkouknul jestli se mění . Zbytek okolo už zvládám .
Děkuji za pomoc R

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

Re: Ukládání časových hodnot

Příspěvek od pavel1tu » 01 led 2020, 17:40

Pokud to chápu, chceš program, který ti bude měřit (třeba), jak dlouho je log."1" na vstupu ?
Není nic jednoduššího, ale ....
1) kolik posledních měření chceš ukládat ? Paměť je dost omezená a po výpadku napájení, nebo když se Arduino kousne, o data přijdeš.
2) je možnost i ukládat min. a max. hodnoty

Výpis:
- v pohodě po sériové lince (USB) po odeslání nějakého příkazu do Arduina ti Arduino vysype uložené hodnoty.
- nebo SD karta do nějakého souboru, tu SD si pak přečteš v PC klidně

chce to definovat více i kolem HW - jak dlouhé časy předpokládáš a jakou chybu pažaduješ (podle toho se musí ošetřit HW nějakými odpory a kondikem tzv. zákmity kontaktu)

Klidně pomohu s tou verzí bez SD karty až to upřesníš .... kolik toho ukládat atd.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

rickmann
Příspěvky: 20
Registrován: 17 pro 2019, 09:53
Reputation: 0

Re: Ukládání časových hodnot

Příspěvek od rickmann » 01 led 2020, 18:12

Díky za zájem, časová hodnota by měla být okolo 3 minut a počet hodnot by byl tak okolo 15ti denně . Nevím jestli je to možné , ale stačili by hodnoty do velikosti paměti a staré přepisovat . Určitě by stačilo 50 posledních hodnot .Když dojde k výpadku, tak se nic neděje protože přijdou další data. Verzi bez SD karty bych ocenil . Zakmitnutí řeším optočlenem a rcčlenem, takže v tom bych potíž asi nečekal.
Jak píšu, v programování těchto věcí jsem malej kluk :-) Díky

Axamith
Příspěvky: 530
Registrován: 09 srp 2017, 08:17
Reputation: 0
Kontaktovat uživatele:

Re: Ukládání časových hodnot

Příspěvek od Axamith » 01 led 2020, 18:20

Případně si data ukládej na SD, nebo do databáze.

rickmann
Příspěvky: 20
Registrován: 17 pro 2019, 09:53
Reputation: 0

Re: Ukládání časových hodnot

Příspěvek od rickmann » 01 led 2020, 18:21

Mě bohatě stačí ty data porovnat. Zálohování nepotřebuji.

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

Re: Ukládání časových hodnot

Příspěvek od pavel1tu » 01 led 2020, 18:51

rickmann píše:
01 led 2020, 18:12
Díky za zájem, časová hodnota by měla být okolo 3 minut a počet hodnot by byl tak okolo 15ti denně . Nevím jestli je to možné , ale stačili by hodnoty do velikosti paměti a staré přepisovat . Určitě by stačilo 50 posledních hodnot .Když dojde k výpadku, tak se nic neděje protože přijdou další data. Verzi bez SD karty bych ocenil . Zakmitnutí řeším optočlenem a rcčlenem, takže v tom bych potíž asi nečekal.
Jak píšu, v programování těchto věcí jsem malej kluk :-) Díky
50 hodnot není problém, u GSM meteostanic ukládám i 200 hodnot, když nejdou odeslat.
Ale těch 3 minut se bojím - někdo tu dělal nějaké 5min intervaly a chtěl dost přesnost, nevím jak je Arduino přesné. Třeba to někdo zkoumal ....
A přesnost co požaduješ, jestli to spouštět od "přerušení"...
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

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

Re: Ukládání časových hodnot

Příspěvek od pavel1tu » 01 led 2020, 20:35

Tak mám to hotové,
ale musím to doladit

lidi, nefunguje mi ukládání do
int elapsed[10];
sem tam tam přetečou nesmysly, heeelp
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

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

Re: Ukládání časových hodnot

Příspěvek od pavel1tu » 01 led 2020, 21:12

Tak uz to funguje
STAR/STOP je na BIN 2 HIGH=start LOW=stop - jde to předělat
když po serialmonitoru napíšeš "p" a odešleš vypíše to všechny měření - lze upravit

je to složenina z mých projektů a z serialkomunikace je z místního budíku ;) od někoho

Kód: Vybrat vše

/*
  Mereni delky pulzu pomoci millis();
*/

byte casuji = 0;
byte cislomereni = 0;
unsigned long start, finished, over; // ulozeni casu START,STOP
unsigned long elapsed[10];           // vysledny napereny cas - pole pro 10 mereni

void setup()
{
  Serial.begin(9600);
  pinMode(2, INPUT); // start/stop 
}



void loop()
{
  if (digitalRead(2)==HIGH  && casuji==0)   //START
  {
    start=millis();
    delay(200); // potlaceni zakmitu
    Serial.println("Start...");
    casuji = 1;
  }
  if (digitalRead(2)==LOW && casuji==1)   //STOP
  {
    finished=millis();
    delay(200); // potlaceni zakmitu
    Serial.println("Stop...");
    casuji = 0;
    elapsed[cislomereni]=finished-start;
    Serial.print("Zmereno c.");
    Serial.println(cislomereni + 1);
    cislomereni++;
    if(cislomereni==9) cislomereni=0;
  }

  SerialComm();  //vycteni dat ze seriove linky
}

void OdeslatVysledky()
{
  for(int x=0; x<=9; x++) {
     float h,m,s,ms;
     elapsed[x];
     h=int(elapsed[x]/3600000);
     over=elapsed[x]%3600000;
     m=int(over/60000);
     over=over%60000;
     s=int(over/1000);
     ms=over%1000;
     Serial.print("Zaznam ");
     Serial.print(x+1);
     Serial.print("   Raw time: ");
     Serial.print(elapsed[x]);
     Serial.print("   Time: ");
     Serial.print(h,0);
     Serial.print("h ");
     Serial.print(m,0);
     Serial.print("m ");
     Serial.print(s,0);
     Serial.print("s ");
     Serial.print(ms,0);
     Serial.println("ms");
     
   }
}
  

//serial communication with PC
void SerialComm() {
  //first char - type of data
  //second and third char - data
  //there are used only "printable" characters

  if (Serial.available() > 0) {
    byte receivedCommand;
    receivedCommand = Serial.read();  //read first char

    delay(10);  //wait for other char

    byte receivedDataTens;
    receivedDataTens = Serial.read();
    receivedDataTens -= 48; // ASCII code for "0" is 48

    byte receivedDataOnes;
    receivedDataOnes = Serial.read();
    receivedDataOnes -= 48; // ASCII code for "0" is 48

    byte receivedData;
    receivedData = (receivedDataTens * 10) + receivedDataOnes;
    if (receivedData > 99) {
      //maximal value is 99
      receivedData = 0; //value is out of range
    }

    switch (receivedCommand) {
    case 112:
      //112 = p
      if (receivedData > 1) {
        receivedData = 1;
      }
      OdeslatVysledky();
      break;
   }

    //flush serial data
    Serial.flush();

   }
}
PS: dělal jsem to na tabletu, tak uvidíme
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

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

Re: Ukládání časových hodnot

Příspěvek od AstroMiK » 01 led 2020, 21:49

Pozor na stav, kdy se připojí k Arduinu USB kabel od notebooku.
Při tom se obvykle provádí automatický reset Arduina, takže se data z RAM smažou (ještě před tím, než se stačí stáhnout).

Tady jsou popsané detaily, jak to řešit:
https://playground.arduino.cc/Main/Disa ... onnection/

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

Re: Ukládání časových hodnot

Příspěvek od pavel1tu » 01 led 2020, 21:56

AstroMiK píše:
01 led 2020, 21:49
Pozor na stav, kdy se připojí k Arduinu USB kabel od notebooku.
Při tom se obvykle provádí automatický reset Arduina, takže se data z RAM smažou (ještě před tím, než se stačí stáhnout).

Tady jsou popsané detaily, jak to řešit:
https://playground.arduino.cc/Main/Disa ... onnection/
díky, to mne nenapadlo, já to dělám na Arduinu bez USB, tak bych na to nepřišel ....
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Odpovědět

Kdo je online

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