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, 20:55

Do deklarací nahoru nad setup()

Kód: Vybrat vše

unsigned int angley_ui;
někam za to místo kde přijímáš angley

Kód: Vybrat vše

angley_ui = angley *100;

num1 = (angley_ui/1)%10;      
num2 = (angley_ui/10)%10;      
num3 = (angley_ui/100)%10;      
num4 = (angley_ui/1000)%10;       
Já nepracuji na Arduinu ale mám tu profesionální simulátor různých Arduin, AVR atd. mohu testovat i část kodu, tak to někdy deklaruji jakoby za chodu programu - promiň

digity pak jsou XX.XX 43.21
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 » 01 lis 2020, 18:01

Dobrý den, zkusila jsem to, ale vrací mi angley_ui mi vrací čtyřmístné číslo, například 2684.

Na internetu na této stránce (https://www.instructables.com/Temperatu ... nt-common/) jsem našla kód pro čtení hodnot ze senzoru teploty a pro zobrazení využívají stejný displej, ale místo 2 74HC595 využívají jen jedno. Chtěla jsem ten kód interpretovat pro moji potřebu, problém je, že mají z displeje připojené navíc čtyři piny pro jednotlivé digity k Arduinu, zatímco jí je mám připojeny posuvným registrům. Myslíte, že by ten kód šel nějak upravit, abych mohla použít 2 registry nebo musí být jen jeden.

Zde je můj částečně upravený kód, nevím si rady s const int digitPins[4] = { 4,5,6,7}; - tyto piny má připojené k Arduinu

Kód: Vybrat vše

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(7, 8);
const byte addresses[][6] = {"00001", "00002"};

float angley;

const int digitPins[4] = {
  4,5,6,7};                 //4 common anode pins of the display
  
const int clockPin = 10;    //74HC595 Pin 11 
const int latchPin = 9;    //74HC595 Pin 12
const int dataPin = 6;     //74HC595 Pin 14

const byte digit[10] =      //seven segment digits in bits
{
  B00111111, //0
  B00000110, //1
  B01011011, //2
  B01001111, //3
  B01100110, //4
  B01101101, //5
  B01111101, //6
  B00000111, //7
  B01111111, //8
  B01101111  //9
};
int digitBuffer[4] = {
  0};
int digitScan = 0, flag=0,  soft_scaler = 0;
;

void setup(){                
  for(int i=0;i<4;i++)
  {
    pinMode(digitPins[i],OUTPUT);
  }

  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);  
 
}

//writes the temperature on display
void updateDisp(){
  for(byte j=0; j<4; j++)  
    digitalWrite(digitPins[j], LOW);

  digitalWrite(latchPin, LOW);  
  shiftOut(dataPin, clockPin, MSBFIRST, B11111111);
  digitalWrite(latchPin, HIGH);

  delayMicroseconds(100);
  digitalWrite(digitPins[digitScan], HIGH); 

  digitalWrite(latchPin, LOW);  
  if(digitScan==2)
    shiftOut(dataPin, clockPin, MSBFIRST, ~(digit[digitBuffer[digitScan]] | B10000000)); //print the decimal point on the 3rd digit
  else
    shiftOut(dataPin, clockPin, MSBFIRST, ~digit[digitBuffer[digitScan]]);

  digitalWrite(latchPin, HIGH);
  digitScan++;
  if(digitScan>3) digitScan=0; 
}

void loop(){ 

  angley = int(angley*100);
  digitBuffer[3] = int(angley)/1000;
  digitBuffer[2] = (int(angley)%1000)/100;
  digitBuffer[1] = (int(angley)%100)/10;
  digitBuffer[0] = (int(angley)%100)%10;
  updateDisp();
  delay(2);

}

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 » 01 lis 2020, 18:48

Hana píše:
01 lis 2020, 18:01
Dobrý den, zkusila jsem to, ale vrací mi angley_ui mi vrací čtyřmístné číslo, například 2684.
Ale to by mělo být dobře ne ? pokud angley_ui =2684 tak angley=26,84
angley - to je přijatá hodnota úhlu
anglay_ui je vynásobená stem - aby se na digity "rozebíralo" tím dělení právě jen celé číslo, pak když se natvrddo rozsvítí správná desetinná tečka - tak z toho bude zpět původní číslo uložené v angley

já se několikrát ptal zda naměřená hodnota se odešle a ta samá přijme,
pak už musí být někde chyba v tom zpracování po příjmu

nebylo by lepší to použít tak jak to je ?
bohužel balím a na týden odjíždím
vždy když bude čas, mrknu sem
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 » 01 lis 2020, 19:27

Ano, odešle se a přijme stejná hodnota, vyzkoušela jsem tedy jen s jedním registrem a nejspíše funguje dobře, ale čísla se mi zobrazují jedno po druhém, například začne svítit čtvrté číslo, přestane a začne třetí atd.

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 » 01 lis 2020, 19:56

Hana píše:
01 lis 2020, 19:27
Ano, odešle se a přijme stejná hodnota, vyzkoušela jsem tedy jen s jedním registrem a nejspíše funguje dobře, ale čísla se mi zobrazují jedno po druhém, například začne svítit čtvrté číslo, přestane a začne třetí atd.
Ale v jednom příspěvku jsi psala že display máš vyzkoušený, že ti funguje
Já tu mám ten IO jen jeden, tak mi to nešlo vyzkoušet - psal jsem

Pokud chceš použít s tvýma vědomostma nějaký kod, musíš to i stejně zapojit jako je v článku,
já zase nejsem tak dobrý, abych to dal z fleku když ten HW nemám na stole a netestnu si to.
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 » 01 lis 2020, 20:01

Asi jsem to našel, ale to tak nebylo na začátku dle mne

Kód: Vybrat vše

if (radio.available()){
     radio.read(&angley, sizeof(angley));
     //delay(100*sizeof(angley));
     Serial.println(angley);
     num1 = (angley/1)%10;
     num2 = (angley/10)%10;
     num3 = (angley/100)%10;
     num4 = (angley/1000)%10;
}   //asi chybí
na konci ti chybí asi ta závorka a máš ji až na koncikodu - jednu na konci smazat
pak se ASI displej vykresluje jen když přijdou nová data

aby se data přijmula jen když budou a display se vykresloval pořád dokola

jdu hledat dál, testni to prosím

doplněno - smazat delay () co je po příjmu dat //delay(100*sizeof(angley));

Kód: Vybrat vše

 delay(5); asi bych taky zrušil

  radio.startListening(); dal bych do SETUP
víc mne opravdu nenapadá
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 » 04 lis 2020, 19:42

Nepomohlo to, ale moc děkuji za všechnu pomoc
Asi zkusím LCD displej

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 » 04 lis 2020, 21:05

Hana píše:
04 lis 2020, 19:42
Nepomohlo to, ale moc děkuji za všechnu pomoc
Asi zkusím LCD displej
Jak chceš, já bych postupoval jinak.

Rozchoď si ten displej - samotný, aby zobrazoval prostě třeba 1234
Měření, zpracování, přenos i dekodování na jednotlivé segmenty by mělo být funkční, tak to přeci nevzdáš.
Nebo si tel LED displej kup hotový https://arduino-shop.cz/arduino/3073-ho ... -bily.html
https://navody.arduino-shop.cz/navody-k ... m1637.html
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 » 06 lis 2020, 21:16

Já jsem schopná na tom displeji zobrazit třeba 0123, ale opravdu jsem si už nevěděla rady, jak dál.
Zkusila jsem ten LCD displej, se kterým mi to funguje jak má a asi to bude i vhodnější řešení, jelikož na něm mohu zobrazit jak data z akcelerometru, tak data z gyroskopu zároveň.
Ale ještě jednou moc děkuju za pomoc, bez Vás bych to ani nepřenesla na druhé Arduino.

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 » 06 lis 2020, 21:44

OK, displej si vyber podle toho, aby k němu byla knihovna pro Arduino,
je to málokdy, ale někdy se najdou displeje s řadičem, ke kterému knihovna není.
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: Google [Bot] a 8 hostů