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
Tags:
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por