MPU6050 vrací stále hodnotu 0
Re: MPU6050 vrací stále hodnotu 0
Zkusila jsem to, ale svítí jen poslední nula na displeji a zbytek poblikává.
Teď zkusím, co vypíše monitor.
Ano, zkoušela jsem na displeji zobrazit 0123 a fungovalo to
Teď zkusím, co vypíše monitor.
Ano, zkoušela jsem na displeji zobrazit 0123 a fungovalo to
Re: MPU6050 vrací stále hodnotu 0
Je mi jedno, zda přenesu digity nebo celé číslo, pokud by to bylo jednodušší, tak to ráda zkusím.
Displej jsem dělala podle videa: https://www.youtube.com/watch?v=ty7f71FQ5io&t=151s
Sériový monitor mi vypisuje nuly, ale možná jsem to špatně zapsala
vysílač:
přijímač:
Displej jsem dělala podle videa: https://www.youtube.com/watch?v=ty7f71FQ5io&t=151s
Sériový monitor mi vypisuje nuly, ale možná jsem to špatně zapsala
vysílač:
Kód: Vybrat vše
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "Wire.h"
#include "Math.h"
#include "I2Cdev.h"
#include "MPU6050.h"
RF24 radio(7, 8); //NRF
const byte addresses[][6] = {"00001", "00002"};
MPU6050 accelerometer; //MPU
const float pi = 3.141592;
const int pocet_vzorku = 100;
int16_t ax, ay, az;
float x, y, z;
int pocet;
float _angle_x, angle_x, _angle_y, angle_y;
long ax_p, ay_p, az_p;
int angley;
int data[4];
void setup() {
Serial.begin(38400);
radio.begin();
radio.openWritingPipe(addresses[0]); //00001
radio.openReadingPipe(1, addresses[1]); //00002
radio.setPALevel(RF24_PA_LOW);
}
void loop() {
accelerometer.getAcceleration(&ax, &ay, &az);
ax_p = ax_p + ax;
ay_p = ay_p + ay;
az_p = az_p + az;
pocet++;
if (pocet == pocet_vzorku) {
x = ax_p / pocet_vzorku;
y = ay_p / pocet_vzorku;
z = az_p / pocet_vzorku;
}
// vypočteme sklon a náklon
angle_y = atan2(y, sqrt(square(x) + square(z)) ) / (pi / 180);
angley = angle_y;
// vynulujeme hodnoty pro další použití
pocet = 0;
ax_p = 0;
ay_p = 0;
az_p = 0;
Serial.println(angle_y);
data[0] = (angley / 10) % 10;
data[1] = (angley / 100) % 10;
data[2] = (angley / 1000) % 10;
data[3] = (angley / 10000) % 10;
delay(5);
radio.stopListening();
radio.write(&data, sizeof(data));
}
Kód: Vybrat vše
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7,8);
const byte addresses[][6] = {"00001", "00002"};
typedef struct {
byte num1;
byte num2;
byte num3;
byte num4;
}
dataPacket;
int latchPin = 9; //pin 12 on the 595
int dataPin = 6; //pin 14 on the 595
int clockPin = 10; //pin 11 on the 595
void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(addresses[1]);
radio.openReadingPipe(1, addresses[0]);
radio.setPALevel(RF24_PA_LOW);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop () {
delay(5);
dataPacket packet;
radio.startListening();
if (radio.available()){
radio.read(&packet, sizeof(dataPacket));
delay(100*sizeof(dataPacket));
Serial.println (packet.num1);
Serial.println (packet.num2);
Serial.println (packet.num3);
Serial.println (packet.num4);
if (packet.num1 == 0) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num1 == 1) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111001);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num1 == 2) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10100100);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num1 == 3) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10110000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num1 == 4) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10011011);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num1 == 5) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num1 == 6) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num1 == 7) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num1 == 8) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num1 == 9) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010000);
digitalWrite(latchPin, HIGH);
delay(1);
}
if (packet.num2 == 0) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num2 == 1) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01111001);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num2 == 2) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00100100);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num2 == 3) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00110000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num2 == 4) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00011011);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num2 == 5) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00010010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num2 == 6) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num2 == 7) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01111000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num2 == 8) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num2 == 9) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00010000);
digitalWrite(latchPin, HIGH);
delay(1);
}
if (packet.num3 == 0) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num3 == 1) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01111001);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num3 == 2) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10100100);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num3 == 3) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10110000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num3 == 4) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10011011);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num3 == 5) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num3 == 6) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num3 == 7) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num3 == 8) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num3 == 9) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010000);
digitalWrite(latchPin, HIGH);
delay(1);
}
if (packet.num4 == 0) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num4 == 1) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01111001);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num4 == 2) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10100100);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num4 == 3) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10110000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num4 == 4) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10011011);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num4 == 5) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num4 == 6) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num4 == 7) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num4 == 8) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (packet.num4 == 9) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010000);
digitalWrite(latchPin, HIGH);
delay(1);
}
}
}
- 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
oprav si rozklad naměřené hodnoty na
při hodnotě 5842
odesílám
22:59:37.676 -> 2
22:59:37.676 -> 4
22:59:37.676 -> 8
22:59:37.676 -> 5
funguje mi to i s přenosem
přijímám čísla
22:59:47.694 -> 2
22:59:47.694 -> 4
22:59:47.694 -> 8
22:59:47.694 -> 5
ten display je divnej, nepřepínáš tam digity mezi sebou
při hodnotě 5842
Kód: Vybrat vše
packet.num1 = (angley/1)%10;
packet.num2 = (angley/10)%10;
packet.num3 = (angley/100)%10;
packet.num4 = (angley/1000)%10;
22:59:37.676 -> 2
22:59:37.676 -> 4
22:59:37.676 -> 8
22:59:37.676 -> 5
funguje mi to i s přenosem
přijímám čísla
22:59:47.694 -> 2
22:59:47.694 -> 4
22:59:47.694 -> 8
22:59:47.694 -> 5
ten display je divnej, nepřepínáš tam digity mezi sebou
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
A jak mám ta čísla zobrazit?
- 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
vůbec jsi neopravila projekt jak jsem psal - nejprve vyčítáš, pak vše nuluješ, pak z těch nul počítáš a do podmínky zprůměrování to nikdy neskočí - pak jsou všude nuly
mám to asi 5 příspěvků zpět, tohle by mělo počítat, ale je to bez toho struct ještě
Kód: Vybrat vše
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "Wire.h"
#include "Math.h"
#include "I2Cdev.h"
#include "MPU6050.h"
RF24 radio(7,8); //NRF
const byte addresses[][6] = {"00001", "00002"};
MPU6050 accelerometer; //MPU
const float pi = 3.141592;
const int pocet_vzorku = 100;
int16_t ax, ay, az;
float x, y, z;
// int pocet;
float _angle_x, angle_x, _angle_y, angle_y;
long ax_p, ay_p, az_p;
int angley;
byte num1;
byte num2;
byte num3;
byte num4;
void setup() {
Serial.begin(115200);
radio.begin();
radio.openWritingPipe(addresses[0]); //00001
radio.openReadingPipe(1, addresses[1]); //00002
radio.setPALevel(RF24_PA_LOW);
Wire.begin();
// Serial.begin(38400);
accelerometer.initialize();
if (accelerometer.testConnection());
Serial.println("Spojeni OK...");
}
void loop() {
for ( int pocet = 1; pocet <= pocet_vzorku; pocet++) { // snad probehne 100x mam v tom nekdy hockej
// tady vycitat ty vzorky
accelerometer.getAcceleration(&ax, &ay, &az);
ax_p = ax_p + ax;
ay_p = ay_p + ay;
az_p = az_p + az;
}
// vypocet prumeru
x = ax_p/pocet_vzorku;
y = ay_p/pocet_vzorku;
z = az_p/pocet_vzorku;
// vypočteme sklon a náklon
angle_y = atan2(y, sqrt(square(x) + square(z)) )/(pi/180);
angley = angle_y;
Serial.println(angle_y);
num1 = (angley/10)%10;
num2 = (angley/100)%10;
num3 = (angley/1000)%10;
num4 = (angley/10000)%10;
delay(5);
radio.stopListening();
radio.write(&num1, sizeof(num1));
radio.write(&num2, sizeof(num2));
radio.write(&num3, sizeof(num3));
radio.write(&num4, sizeof(num4));
// vynulujeme hodnoty pro další použití
//pocet = 0;
ax_p = 0;
ay_p = 0;
az_p = 0;
}
(klidně místo vypočítávané hodnoty dej třeba "1234" nějaký pomocný integer,
pak by ti na příjmu mělo vypadnout po jednotlivých byte 4-3-2-1
pak můžeme pokračovat, ale dnes to bude pomalejší z mé strany, mám jinou práci
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
Pokud do kodu přijímače natvrddo napíšeš do kodu
zobrazí to ta čísla ?
PS: už jsem našel kde posouváš mezi digity, máme tu na kroužku jen jeden ten IO, tak to nejde otestovat
Kód: Vybrat vše
if (radio.available()){
radio.read(&packet, sizeof(dataPacket));
delay(100*sizeof(dataPacket));
Serial.println (packet.num1);
Serial.println (packet.num2);
Serial.println (packet.num3);
Serial.println (packet.num4);
packet.num1 = 4;
packet.num2 = 3;
packet.num3 = 2;
packet.num4 = 1;
PS: už jsem našel kde posouváš mezi digity, máme tu na kroužku jen jeden ten IO, tak to nejde otestovat
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 data z jednoho Arduina přenést do druhého ve formě jednoho čísla a to se mi na monitoru druhého Arduina zobrazí v pořádku. Ale teď je problém, že se jedná o desetinná čísla (přenáším je pomocí float) a nevím , jak to mám rozdělit na ty digity.
vysílač:
přijímač:
vysílač:
Kód: Vybrat vše
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "Wire.h"
#include "Math.h"
#include "I2Cdev.h"
#include "MPU6050.h"
RF24 radio(7,8); //NRF
const byte addresses[][6] = {"00001", "00002"};
MPU6050 accelerometer; //MPU
const float pi = 3.141592;
const int pocet_vzorku = 100;
int16_t ax, ay, az;
float x, y, z;
// int pocet;
float _angle_x, angle_x, _angle_y, angle_y;
long ax_p, ay_p, az_p;
float angley;
void setup() {
Serial.begin(115200);
radio.begin();
radio.openWritingPipe(addresses[0]); //00001
radio.openReadingPipe(1, addresses[1]); //00002
radio.setPALevel(RF24_PA_LOW);
Wire.begin();
// Serial.begin(38400);
accelerometer.initialize();
if (accelerometer.testConnection());
Serial.println("Spojeni OK...");
}
void loop() {
for ( int pocet = 1; pocet <= pocet_vzorku; pocet++) { // snad probehne 100x mam v tom nekdy hockej
// tady vycitat ty vzorky
accelerometer.getAcceleration(&ax, &ay, &az);
ax_p = ax_p + ax;
ay_p = ay_p + ay;
az_p = az_p + az;
}
// vypocet prumeru
x = ax_p/pocet_vzorku;
y = ay_p/pocet_vzorku;
z = az_p/pocet_vzorku;
// vypočteme sklon a náklon
angle_y = atan2(y, sqrt(square(x) + square(z)) )/(pi/180);
angley = angle_y;
Serial.println(angley);
delay(5);
radio.stopListening();
radio.write(&angley, sizeof(angley));
delay(5*sizeof(angley));
// vynulujeme hodnoty pro další použití
//pocet = 0;
ax_p = 0;
ay_p = 0;
az_p = 0;
}
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;
byte num1;
byte num2;
byte num3;
byte num4;
int latchPin = 9; //pin 12 on the 595
int dataPin = 6; //pin 14 on the 595
int clockPin = 10; //pin 11 on the 595
void setup() {
Serial.begin(115200);
radio.begin();
radio.openWritingPipe(addresses[1]);
radio.openReadingPipe(1, addresses[0]);
radio.setPALevel(RF24_PA_LOW);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop () {
delay(5);
radio.startListening();
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;
if (num1 == 0) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num1 == 1) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111001);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num1 == 2) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10100100);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num1 == 3) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10110000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num1 == 4) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10011011);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num1 == 5) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num1 == 6) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num1 == 7) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num1 == 8) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num1 == 9) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000001);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010000);
digitalWrite(latchPin, HIGH);
delay(1);
}
if (num2 == 0) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num2 == 1) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01111001);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num2 == 2) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00100100);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num2 == 3) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00110000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num2 == 4) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00011011);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num2 == 5) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00010010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num2 == 6) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num2 == 7) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01111000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num2 == 8) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num2 == 9) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000010);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00010000);
digitalWrite(latchPin, HIGH);
delay(1);
}
if (num3 == 0) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num3 == 1) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01111001);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num3 == 2) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10100100);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num3 == 3) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10110000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num3 == 4) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10011011);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num3 == 5) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num3 == 6) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num3 == 7) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num3 == 8) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num3 == 9) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00000100);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010000);
digitalWrite(latchPin, HIGH);
delay(1);
}
if (num4 == 0) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num4 == 1) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b01111001);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num4 == 2) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10100100);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num4 == 3) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10110000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num4 == 4) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10011011);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num4 == 5) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num4 == 6) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000010);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num4 == 7) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b11111000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num4 == 8) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10000000);
digitalWrite(latchPin, HIGH);
delay(1);
}
else if (num4 == 9) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, 0b00001000);
shiftOut(dataPin, clockPin, MSBFIRST, 0b10010000);
digitalWrite(latchPin, HIGH);
delay(1);
}
*/
}
}
- 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
No, říká se tomu "přetypování" ? kdyžtak mne chytřejší opraví
U čísel to neřeším ukazately, peostě tak jako jsi to měla ty
nejsem si moc jistý
- vařím, peču a u toho se snažím zkompilobat nový armbian
U čísel to neřeším ukazately, peostě tak jako jsi to měla ty
Kód: Vybrat vše
//máš float
float angley;
// uděláme unsigned int
unsigned int angley_ui;
angley_ui = angley; // a máme z toho celé číslo ? snad
Serial.println(angle_ui); // pokud to vypíše celé číslo máme vyhráno
num1 = (angle_ui/1)%10;
num2 = (angle_ui/10)%10;
num3 = (angle_ui/100)%10;
num4 = (angle_ui/1000)%10;
// dál zpracovat na display
jo deklarovat ty byte num1; atd.
- vařím, peču a u toho se snažím zkompilobat nový armbian
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
to jakoby přetypování takto
mi to funguje
to jakoby přetypování takto
Kód: Vybrat vše
unsigned int angley_ui = angley;
11:30:43.962 -> 1234.57
11:30:43.962 -> 1234
11:30:43.962 -> 4
11:30:43.962 -> 3
11:30:43.962 -> 2
11:30:43.962 -> 1
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, ale vracelo mi to stále nuly.
Ještě mě napadlo, že bych to vynásobila 100, ale nevím, jak napsat kód, aby když je číslo menší než 100 tam před ním byly nuly nebo pokud by bylo menší než tisíc, tak aby tam byla před tím jedna nula.
Zkusila jsem tohle, ale to mi vracelo:
6
5
6
atd.
Ještě mě napadlo, že bych to vynásobila 100, ale nevím, jak napsat kód, aby když je číslo menší než 100 tam před ním byly nuly nebo pokud by bylo menší než tisíc, tak aby tam byla před tím jedna nula.
Zkusila jsem tohle, ale to mi vracelo:
6
5
6
atd.
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;
char s [10];
long angle;
byte num1;
byte num2;
byte num3;
byte num4;
int latchPin = 9; //pin 12 on the 595
int dataPin = 6; //pin 14 on the 595
int clockPin = 10; //pin 11 on the 595
void setup() {
Serial.begin(115200);
radio.begin();
radio.openWritingPipe(addresses[1]);
radio.openReadingPipe(1, addresses[0]);
radio.setPALevel(RF24_PA_LOW);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop () {
delay(5);
radio.startListening();
if (radio.available()){
radio.read(&angley, sizeof(angley));
delay(100*sizeof(angley));
angle = sprintf (s, "%d", angley);
Serial.println (angle);
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů