Boa Noite,eu estou tendo um problema com a programação de um sketch para arduino,apenas uma condição if,se o valor gravado na EEPROM no endereço 720 for igual a 37,a variavel EEPROMNumb vai ser igual a 37,fazendo dessa forma o serial monitor me retorna um valor errado quando calcula a declinação,mas se eu apagar a variavel EEPROMNumb em Get_Declination e colocar o número 37 manualmente e compilar para o arduino o serial monitor me retorna o valor corretamente.Não estou entendendo porque isso acontece.O sketch está no meu GitHub,link logo abaixo,o sketch está todo comentado,assim ficando facil pra vocês entenderem >> https://github.com/JuliooCesarMDM/AutoCompass

Exibições: 165

Responder esta

Respostas a este tópico

Boa tarde JCM,

(se não gosta que refira a vc pelas iniciais, avise),

o que está ocorrendo com seu scketch é causado pelo uso de matriz no  PROGMEM,

Qdo se usa matriz na memoria de "variáveis" , para ler os valores é simples  xyx = minhaMatriz[i][j].

Mas qdo a matriz está na PROGMEM, é diferente.

Lê-se assim:    xyz = (pgm_read_byte(&(minhaMatriz[i][j])));.

No seu sketch, as linhas 56 a 59, precisam ser modificadas.

ex da 56  : é   decSW = dec_tbl[latmin_index][lonmin_index];

deverá ser : decSW = (pgm_read_byte(&(dec_tbl[latmin_index][lonmin_index])));

No seu caso usei pgm_read_byte, já que o valor era do tamanho de um byte.

Aqui tem informações para ler outros tamanhos.

https://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html

Modifica as 4 linhas aí no seu sketch, e depois conta o resultado pra gente.

RV

Show,muito obrigado pelo ajuda minerin RV,vou modificar as linhas aqui,e depois te falo se deu certo.

Realemente era esse o problema,muito obrigado,me ajudou muito!Abraços.

JCM,

se ficou resolvido, escreva [ R  E S O L V I D O ] antes do título do tópico.

Obrigado.

RV

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço