MPU6050 vrací stále hodnotu 0

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

Re: MPU6050 vrací stále hodnotu 0

Příspěvek od pavel1tu » 31 říj 2020, 15:06

Nevím co myslíš,
rekapitulace:
- odesílací modul měří 100x, vypočte průměr, odešle
- přijímací modul přijme to samé číslo ale je to "long"

mne to překládá ale i malá čísla
15:03:36.498 -> 11.57 //naměřeno
15:03:36.498 -> 11 //převedeno na long int
15:03:36.498 -> 1 rozloženo na bity
15:03:36.498 -> 1
15:03:36.498 -> 0
15:03:36.498 -> 0

hoď sem poslední přijímací kod
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: MPU6050 vrací stále hodnotu 0

Příspěvek od pavel1tu » 31 říj 2020, 16:36

oprava přijmeme float a uděláme z toho short int
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Hana
Příspěvky: 19
Registrován: 26 říj 2020, 19:45
Reputation: 0

Re: MPU6050 vrací stále hodnotu 0

Příspěvek od Hana » 31 říj 2020, 18:32

Ano, rozumím, co myslíte, ale já bych potřebovala rozložit i ta čísla za desetinnou čárkou, tzn. 16.99 na 1 6 9 9

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

Re: MPU6050 vrací stále hodnotu 0

Příspěvek od pavel1tu » 31 říj 2020, 19:07

Hana píše:
31 říj 2020, 18:32
Ano, rozumím, co myslíte, ale já bych potřebovala rozložit i ta čísla za desetinnou čárkou, tzn. 16.99 na 1 6 9 9
Rozumím,
na kolik desetinných míst, jaké číslo bude maximální, musíš se vejít do 4 digitů
- natvrddo XXX.X - jednoduché, nemusí se posouvat desetinná čárka, natvrddo se nastaví mezi digity 1 a 2

Kód: Vybrat vše

float angley;
unsigned int angley_ui = angley *10;   // uděláme unsigned int

num1 = (angle_ui/1)%10;         //  xxx.X
num2 = (angle_ui/10)%10;         //  xxX.x
num3 = (angle_ui/100)%10;        //  xXx.x
num4 = (angle_ui/1000)%10;       //  Xxx.x
- přesné, buď 1 - 2 - 3 sesetinná čísla

Kód: Vybrat vše

byte DesetinychMist;
float angley;
if (angley <10) { 
     unsigned int angley_ui = angley *1000;   // uděláme unsigned int 
     DesetinychMist = 3;                               // tečku mezi 3 a 4 digitem
     }
if (angley >=10  && angley <100) { 
     unsigned int angley_ui = angley *100;    // uděláme unsigned int 
     DesetinychMist = 2;                               // tečku mezi 2 a 3 digitem
     }
if (angley >=100 ) {                                    // nepredpokladam cislo vetsi nez 999
     unsigned int angley_ui = angley *10;     // uděláme unsigned int 
     DesetinychMist = 1;                              // tečku mezi 1 a 2 digitem
     }
                        // DesetinychMist = 1         2          3
num1 = (angle_ui/1)%10;         //  xxx.X   xx.xX   x.xxX
num2 = (angle_ui/10)%10;         //  xxX.x   xx.xX   x.xxX
num3 = (angle_ui/100)%10;        //  xXx.x   xx.xX   x.xxX
num4 = (angle_ui/1000)%10;       //  Xxx.x   xx.xX   x.xxX

nevím jak to bude fungovat, testneš to ?
Naposledy upravil(a) pavel1tu dne 31 říj 2020, 19:34, celkem upraveno 2 x.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Hana
Příspěvky: 19
Registrován: 26 říj 2020, 19:45
Reputation: 0

Re: MPU6050 vrací stále hodnotu 0

Příspěvek od Hana » 31 říj 2020, 19:21

Vždy se jedná o tento "vzorec" xx.xx, určitě vyzkouším Váš kód, ale bude to fungovat i tak, že pokud bude například číslo 0.23, tak dostanu 0 0 2 3?

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

Re: MPU6050 vrací stále hodnotu 0

Příspěvek od pavel1tu » 31 říj 2020, 19:26

Asi ano ;)
19:24:53.492 -> 11.56
19:24:53.492 -> 1156
19:24:53.492 -> 1 1 . 5 6
19:24:53.492 -> ----------------------------

19:25:33.209 -> 115.60
19:25:33.209 -> 1156
19:25:33.209 -> 1 1 5 . 6
19:25:33.209 -> ----------------------------

19:26:10.859 -> 1.16
19:26:10.859 -> 1156
19:26:10.859 -> 1 . 1 5 6
19:26:10.859 -> ----------------------------
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: MPU6050 vrací stále hodnotu 0

Příspěvek od pavel1tu » 31 říj 2020, 19:27

Hana píše:
31 říj 2020, 19:21
Vždy se jedná o tento "vzorec" xx.xx, určitě vyzkouším Váš kód, ale bude to fungovat i tak, že pokud bude například číslo 0.23, tak dostanu 0 0 2 3?
19:27:10.158 -> 0.23
19:27:10.158 -> 230
19:27:10.158 -> 0 . 2 3 0
19:27:10.158 -> ----------------------------

testovan ten kod s if podle velikosti cisla
musela bys podle toho cisla poctu desetinnych mist stehovat desetinou tecku

pokud das natvrddo xx.xx nebude fungovat nic nad 99,99

Kód: Vybrat vše

unsigned int angley_ui = angley *100;    // uděláme unsigned int XX.XX 

Kód: Vybrat vše

Serial.println(angley);
Serial.println(angley_ui);
Serial.print(num4);
Serial.print(" ");
if (DesetinychMist == 3) Serial.print(". ");
Serial.print(num3);
Serial.print(" ");
if (DesetinychMist == 2) Serial.print(". ");
Serial.print(num2);
Serial.print(" ");
if (DesetinychMist == 1) Serial.print(". ");
Serial.println(num1);
Serial.println("----------------------------");
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Hana
Příspěvky: 19
Registrován: 26 říj 2020, 19:45
Reputation: 0

Re: MPU6050 vrací stále hodnotu 0

Příspěvek od Hana » 31 říj 2020, 19:45

Já si nejsem jistá, zda jsem to pochopila správně, ale když chci z čísla 0.23 udělat 0023, aby šlo rozložit na digity, tak mám udělat:

Kód: Vybrat vše

unsigned int angley_ui = angley *100;

num1 = (angle_ui/1)%10;        
num2 = (angle_ui/10)%10;         
num3 = (angle_ui/100)%10;        
num4 = (angle_ui/1000)%10;       
a měla bych dostat 0 0 2 3?

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

Re: MPU6050 vrací stále hodnotu 0

Příspěvek od pavel1tu » 31 říj 2020, 20:03

Hana píše:
31 říj 2020, 19:45
Já si nejsem jistá, zda jsem to pochopila správně, ale když chci z čísla 0.23 udělat 0023, aby šlo rozložit na digity, tak mám udělat:

Kód: Vybrat vše

unsigned int angley_ui = angley *100;

num1 = (angle_ui/1)%10;        
num2 = (angle_ui/10)%10;         
num3 = (angle_ui/100)%10;        
num4 = (angle_ui/1000)%10;       
a měla bych dostat 0 0 2 3?
Ano
unsigned int angley_ui = angley *100; - 0,23 * 100 = 23 (0023)

num1 = (angle_ui/1)%10; - 3
num2 = (angle_ui/10)%10; - 2
natvrddo tečka .
num3 = (angle_ui/100)%10; - 0
num4 = (angle_ui/1000)%10; - 0
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Hana
Příspěvky: 19
Registrován: 26 říj 2020, 19:45
Reputation: 0

Re: MPU6050 vrací stále hodnotu 0

Příspěvek od Hana » 31 říj 2020, 20:18

Zkusila jsem, a když bylo

Kód: Vybrat vše

unsigned int angley_ui = angley *100;
na jednom řádku před void setup, tak seriový monitor ukazoval nuly u všeho

když jsem napsala unsigned int angley_ui před void setup a angley_ui = angley*100 do void loop, ukazoval sériový monitor nějaké číslo u všech num, což nejspíše není správně, protože mám akcelerometr rovně položený na stole a hodnoty se pohybují mezi -0.6 až 0.6

Odpovědět

Kdo je online

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