collapse

* Posts Recentes

Rede de comboios elétricos totalmente autónomos 10 ton em Rust em realtime. por blabla
[18 de Setembro de 2022, 18:44]


NiMH por 18650 por almamater
[18 de Setembro de 2022, 17:21]


How We Get Down to 0.2nm CPUs and GPUs - TechTechPotato por blabla
[18 de Setembro de 2022, 15:38]


Nova secção de Raspberry Pi Bare Metal em C e em Rust e Systems Programming por blabla
[04 de Setembro de 2022, 08:55]


The code for AGI will be simple - John Carmack and Lex Fridman por blabla
[29 de Agosto de 2022, 07:36]


Wavelets: a mathematical microscope por blabla
[28 de Agosto de 2022, 20:50]


Bom livro - Dive Into Systems por blabla
[28 de Agosto de 2022, 12:19]


graus negativos inclinação por josecarlos
[28 de Agosto de 2022, 11:31]


Super obsolescência super programada? por SerraCabo
[06 de Agosto de 2022, 11:36]


Motor de aspirador por dropes
[02 de Agosto de 2022, 22:18]

Autor Tópico: graus negativos inclinação  (Lida 599 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline dio123

  • Mini Robot
  • *
  • Mensagens: 1.028
graus negativos inclinação
« em: 21 de Agosto de 2022, 15:33 »
Boa tarde,
No mpu6050 estou a calcular a inclinação roll e pitch e obter os resultados em graus.
Só que agora reparei que por exemplo se os valores forem positivos funciona bem. Se for negativo ( tipo -1) detecta logo e não devia.

Porque ao definir set_titl = 10 , queria que a minha margem fosse -10 negativos até 10 graus positivos fora disso é lançar um alarme.

com um if estou a ver que não vai.
Código: [Seleccione]
if ((pitch> set_titl) || (roll> set_titl) && (ignition_state == ignition_OFF) ){
printf("movimento detectado\r\n");
}

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.865
  • NERD!
Re: graus negativos inclinação
« Responder #1 em: 21 de Agosto de 2022, 22:56 »
Partilha a definição das variáveis (roll, pitch e set_titl) e já agora qual a plataforma que estás a usar, se dispara com -1, parece-me que deve haver aí um conflito de signed/unsigned

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.731
  • Helpdesk do sitio
Re: graus negativos inclinação
« Responder #2 em: 22 de Agosto de 2022, 17:24 »
Mete um ABS, e o teu if fica assim:

Código: [Seleccione]
if ((abs(pitch)> set_titl) || (abs(roll)> set_titl) && (ignition_state == ignition_OFF) ){
 printf("movimento detectado\r\n");
}

Se calhar tambem deves querer utilizar >= e não >, talvez.

E concordo com o jm_araujo, cheira-me a confusão de signed e unsigneds.
Avr fanboy

Offline dio123

  • Mini Robot
  • *
  • Mensagens: 1.028
Re: graus negativos inclinação
« Responder #3 em: 27 de Agosto de 2022, 17:30 »
boa tarde,
Todas as variáveis estão como signed int, no entanto com o abs(pitch) e abs(roll )no if, mais uns ajuste no codigo ficou a funcionar bem.

set_titl=20 só "dispara"  se estiver depois do intervalo -20 a +20.

obrigado pela ajuda

Offline josecarlos

  • Mini Robot
  • *
  • Mensagens: 366
Re: graus negativos inclinação
« Responder #4 em: 27 de Agosto de 2022, 22:37 »
Olá 🙂
Era fixe nós sabermos aonde vais aplicar !!

Offline dio123

  • Mini Robot
  • *
  • Mensagens: 1.028
Re: graus negativos inclinação
« Responder #5 em: 28 de Agosto de 2022, 10:36 »
É para um alarme gsm para o carro, nesta questão era o sensor inclinação que ao armar o alarme gravo a inclinação frontal e lateral depois a diferença entre o guardado e o atual tem de ser inferior ao definido set_titl.



Offline josecarlos

  • Mini Robot
  • *
  • Mensagens: 366
Re: graus negativos inclinação
« Responder #6 em: 28 de Agosto de 2022, 11:31 »
Por curiosidade testei o MPU com servos fez todos os  movimentos mas nunca consegui que numa posição estável os servos ficassem imóveis .
Talvez por serem servos digitais
https://youtube.com/shorts/_GAGvEsw4jo?feature=share