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
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
-
pavel1tu
- Příspěvky: 2065
- Registrován: 26 říj 2017, 08:28
- Bydliště: Trutnov
-
Kontaktovat uživatele:
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
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: 538
- Registrován: 09 srp 2017, 08:17
-
Kontaktovat uživatele:
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
Příspěvek
od rickmann » 01 led 2020, 18:21
Mě bohatě stačí ty data porovnat. Zálohování nepotřebuji.
-
pavel1tu
- Příspěvky: 2065
- Registrován: 26 říj 2017, 08:28
- Bydliště: Trutnov
-
Kontaktovat uživatele:
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"
-
pavel1tu
- Příspěvky: 2065
- Registrován: 26 říj 2017, 08:28
- Bydliště: Trutnov
-
Kontaktovat uživatele:
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"
-
pavel1tu
- Příspěvky: 2065
- Registrován: 26 říj 2017, 08:28
- Bydliště: Trutnov
-
Kontaktovat uživatele:
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"
-
pavel1tu
- Příspěvky: 2065
- Registrován: 26 říj 2017, 08:28
- Bydliště: Trutnov
-
Kontaktovat uživatele:
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"
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host