MPU6050 vrací stále hodnotu 0
Re: MPU6050 vrací stále hodnotu 0
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
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: MPU6050 vrací stále hodnotu 0
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: MPU6050 vrací stále hodnotu 0
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
Re: MPU6050 vrací stále hodnotu 0
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
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: MPU6050 vrací stále hodnotu 0
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?
Re: MPU6050 vrací stále hodnotu 0
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 -> ----------------------------

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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: MPU6050 vrací stále hodnotu 0
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: MPU6050 vrací stále hodnotu 0
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:
a měla bych dostat 0 0 2 3?
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;
Re: MPU6050 vrací stále hodnotu 0
AnoHana píše: ↑31 říj 2020, 19:45Já 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:
a měla bych dostat 0 0 2 3?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;
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"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: MPU6050 vrací stále hodnotu 0
Zkusila jsem, a když bylo
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
Kód: Vybrat vše
unsigned int angley_ui = angley *100;
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
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host