MPU6050 vrací stále hodnotu 0
- 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
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"
- 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
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
- 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
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?
- 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
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"
- 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
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;
- 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
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 47 hostů