Enviando sinal Infravermelho por mais de uma saída com o Arduino

Olá pessoal,

Sou novo aqui no LDG, então não tenho certeza de que seja aqui que devo postar sobre isso rsrs

Estou desenvolvendo um projeto de automação, e devido a isso precisei aprender sobre muita coisa, e um dos lugares que consegui mais informação foi aqui, por isso resolvi compartilhar sobre uma alteração que fiz na biblioteca IRremote do arduino, que possibilitou utilizar mais de um pino para sinal tx

Só pra resumir um pouco, é de conhecimento que quando se cria o objeto "IRsend", por padrão se usa o pino 3 no UNO ou o pino 9 no MEGA, e depois de pesquisar um bocado, vi que esses pinos estavam determinados no arquivo "boarddefs.h" da biblioteca. Tentei alterar só mudando o número para outro, mas não funcionou, e o porque disso não encontrei em nenhum lugar, então fui buscar direto nos arquivos da IDE, assim vi que esses pinos estão relacionados com os temporizadores dos microcontroladores.

Bem, dessa forma, o arduino UNO possui 2 saídas disponíveis para envio do sinal infravermelho, enquanto o MEGA possui 5

Comentando e des-comentando as linhas "#define IR_USE_TIMERx" podemos alterar o pino tx para outro que esteja disponível, mas ainda assim, na hora de compilar, a IDE só aceita se um timer estiver habilitado por vez.

O problema disso é que, quando temos mais de um equipamento da mesma marca, assim se mandarmos o sinal para "ligar TV" por exemplo, ligaria as 2 ou mais, conforme o caso, o que não é interessante. Pra resolver isso, fiz uma modificação no arquivo "boarddefs.h", no arquivo "IRsend.cpp" e no "IRremote.h", que permite que utilizemos mais de um pino tx ao mesmo tempo.

Para utilizar isso, basta informar qual o timer que se quer utilizar na hora de declarar o objeto IRsend, dessa forma:

IRsend irsend(1);

IRsend controle(2);

Entre parênteses você informa qual o timer, começando do 1. Lembrando que o UNO tem apenas 2, enquanto o MEGA tem 5.

O restante da biblioteca continua exatamente igual, então não precisa modificar nada da lógica principal.

Espero que isso ajude a quem precisar,

Paulo

Exibições: 13

Anexos

Responder esta

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2020   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço