Bom dia Pessoal!!
Estou tentando realizar uns teste com o modulo nrf24 utilizando 2 Arduino uno, ao executar o programa foi observado que o emissor está enviando os dados corretamente, mais o receptor só recebe 1 vez e depois não consegue mais receber nenhum dado como demonstrado na figura abaixo:
Alguém sabe o que pode estar ocorrendo?
Colocarei como anexo os códigos utilizados.
Muito Obrigado e Abraços!!
Tags:
Oi FP, boa tarde,
não tenho experiencia com este módulo, mas olhando seu code Emissor, verifiquei que voce define
"int dados[1];" dados como uma matriz de 1 elemento. Depois voce faz "dados[0] = x;".
Mas ao enviar, usa " radio.write(dados, 1); "sem referenciar à matriz : Deveria ser radio.write(dados[0], 1);
Acho que não funciona da forma que você escreveu.
Modifique e tente pra ver se funciona ok. Depois conta pra gente.
Rui
Rui, na verdade essa parte do código está correta, pois quando ele faz "radio.write(dados, 1)" ele está enviando toda a matriz como parâmetro e é essa a forma que a biblioteca do NRF recomenda.
Mas, se você observar existe um pequeno erro no IF/ ELSE do receptor.
Repare que o ELSE está somente no terceiro IF.
O que vai acontecer?
Quando recebidos[0] for 1 ele entra no primeiro IF e OK, escreve 1.
Mas ele entra também no ELSE do terceiro IF (Pois 1 é diferente de 3) escrevendo "NADA" também.
Nesse caso, para corrigir, deveria usar IFs aninhados OU retirar o ELSE e incluir mais um IF:
if (recebidos[0] != 1 && recebidos[0] != 2 && recebidos[0] != 3) ...
Agora, porque está parando na primeira recepção, não sei.
Oi JAC, boa tarde,
obrigado pela dica .
Como eu não tenho experiencia com este módulo, não tinha esta "manha". kkk
Como achei que estava errado no transmissor, nem olhei o receptor.
Agora com sua dica, vou compilar o receptor, e ver esta sequencia que você cita.
Novamente, obrigado pela dica.
Rui
Olá Felipe,
Esse codigo da Arduino e CIA é um pouco complexo pra iniciante, por isso que te indiquei o codigo do site Futebol de Robos ( http://futebol-uff.blogspot.com.br/2012/12/nrf24l01-testes-iniciais... ) pois ele é mais simples e mais didatico.
Cheguei em casa agora, e meus arduinos estão no trabalho, logo, não dá pra analisar onde tá a falha nesse codigo ai, numa rapida olhada eu notei que ele só tá indicando o pipe de comunicação mas não esta setando o canal, nos NRF24L01 é preciso fazer as duas coisas, ele até tem canais pre configurados, mas pode dar problema.
Logo set.channel é algo salutar de ser usado.
outra coisa que pode até não ser obrigatoria mas tambem é util, é usar o comando radio.stoplisterning no setup do emissor apos o radio.openWritingPipe(pipe);, isso dá a certeza que o radio esta em modo de falar e não de ouvir.
Mas como disse isso é muito por cima, pra saber mesmo o que tá acontecendo só com os radios na mão.
Mas volto a dizer o que falei antes, baixe a biblioteca do MANIACBUG ( https://github.com/maniacbug/RF24 ) e comece estudando por ela.
O primeiro teste fundamental pra saber se você ligou os pinos dos radios corretamente é gravar o exemplo GettingStart em cada um dos arduinos (precisa de 2) dai basta abrir o serial monitor, ele automaticamente vai dar o status do seu radio, se tudo aparecer como 00000 ou se ele começar a dar scrol sozinho, então a ligação fisica tá errada.
Se você fizer os testes nos dois radios e tudo tiver ok, basta apertar T no radio 1, aguardar um pouco e depois apertar R, ele vai parar, dai vocÊ vai no radio 2 e aperta T e enter, e automaticamente os dois radios começam a se falar.
Esse é o teste principal desses radios.
Olá pessoal,
Venho aqui agradecer a ajuda de todos, pois consegui realizar a comunicação com os 2 módulos.
A princípio eu estava com problemas no código mesmo, pois quando testei o exemplo da biblioteca que o Weider disse, a comunicação funcionou.
Consegui reescrever o código com base no código do exemplo, somente assim que consegui estabelecer a comunicação.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por