collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Sensor Infravermelho não funciona corretamente  (Lida 4972 vezes)

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

Offline ctrindade

  • Mini Robot
  • *
  • Mensagens: 4
Sensor Infravermelho não funciona corretamente
« em: 12 de Novembro de 2011, 02:51 »
Olá,

estou fazendo umas experiências com infravermelho no meu arduino. Abri uma televisão velha minha e arranquei o sensor ir dela (que recebe os sinais do controle remoto)  ;D . Liguei no meu Arduino, montei o circuito, upei o código e, a princípio, tudo funcionou perfeitamente. Estou usando a biblioteca IRremote do Ken Shirriff. Acontece que, quando fecho o "Serial Monitor", o sensor IR não lê direito os comandos que envio  :( ! No meu projeto, quando aperto a tecla "1" do meu controle remoto da TV, o Arduino aciona um relé. Pois bem, quando estou com o "serial monitor" aberto, o sensor lê todas a vezes que aperto a tecla, até posso apertar muito rápido que ele mesmo assim lê. Porém, se fecho o "serial monitor", o sensor parece que tem dificuldade para ler, e reconhece somente alguns comando que envio, uma vez ou outra. Fico apertando a tecla "1" mas o sensor não aciona o relé.

O que pode ser isso??? Não consigo ver explicação lógica nisso. O que tem de tão especial no "Serial Monitor"???

Por favor, me ajudem nisso se puderem...

Caso seja necessário, está aqui meu código:

Código: [Seleccione]
#include <IRremote.h>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  pinMode(13, OUTPUT); 
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  irrecv.decode(&results);
 
  if (irrecv.decode(&results)) { //se o receptor IR recebeu um valor,...
    if (results.value == 551520375){ //se esse valor for...
    if (digitalRead(13) == 0){
    digitalWrite(13, HIGH);}
    else {digitalWrite(13, LOW);}
    }
    Serial.println(results.value);
    irrecv.resume(); // Receive the next value
  }
}

Aí está também como liguei o sensor:

http://imageshack.us/photo/my-images/52/sensorir.gif/

Abraço a todos.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Sensor Infravermelho não funciona corretamente
« Responder #1 em: 12 de Novembro de 2011, 03:32 »
Talvez o delay que é introduzido no programa pois o serial é bloqueante, mete um delay(10) e testa.
Avr fanboy

Offline ctrindade

  • Mini Robot
  • *
  • Mensagens: 4
Re: Sensor Infravermelho não funciona corretamente
« Responder #2 em: 12 de Novembro de 2011, 22:04 »
Não deu certo senso. Já tentei colocar delays de 200ms, 50, 20, 10, 5, 1 e até 0.01. Mudei a posição do delay no código (linha) também e nada. O que mais pode ser???

Vou tentar dar mais detalhes da minha situação. Coisa que percebi (mas não sei se tem a ver com o problema):

1. No Serial Monitor, quando eu não mando comando nenhum a partir do controle remoto, ele fica printando "0" na tela direto, várias vezes. Mas porque isso, se não estou enviando nada para o sensor??? Como ele pode estar recebendo alguma coisa?

2. Quando abro o programa do arduino, o relé aciona várias vezes, tipo fica doido. E quando abro ou fecho o serial monitor também acontece a mesma coisa. Ou seja, ele manda sinal do pino output do arduino sem que eu queira... estranho...

3. Quando estou com o Serial Monitor aberto e aperto o botão do controle remoto, o LED "Tx" do Arduino pisca. Já quando o Serial Monitor está fechado, o Led "Tx" não acende, porém se eu ficar insistindo em apertar o botão do controle, uma vez ou outra consigo acionar o relé, tenho que ficar tentando, mas o Led "Tx" não acende.

Eu estava pensando em alguma coisa física, tipo saturação do sensor por algum motivo, ou algum componente eletrônico que eu pudesse colocar para melhorar este funcionamento... sei lá, uma resistência, ou um transistor, eu não entendo muito de eletrônica não, sabe...

Apesar de que tudo indica que seja alguma coisa lógica, pois tenho funcionamentos diferentes com o Serial Monitor aberto e fechado. Quando mando abrir o Serial Monitor, o que acontece? (digo, por trás dos panos) Porque quando eu abro o Serial Monitor, os outputs do arduino ligam e desligam (no meu caso, o relé aciona e desaciona umas duas vezes)? Quando fecho o Serial Monitor, acontece o mesmo...

Alguém tem alguma idéia para me ajudar?

Offline ctrindade

  • Mini Robot
  • *
  • Mensagens: 4
Re: Sensor Infravermelho não funciona corretamente
« Responder #3 em: 14 de Novembro de 2011, 23:37 »
Alguém!?  ???

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Sensor Infravermelho não funciona corretamente
« Responder #4 em: 15 de Novembro de 2011, 00:54 »
Vamos lá por pontos então.
1- O 0 é um bom numero para representar nada, não achas?
Depois as funções têm de retornar alguma coisa, e se não recebe nada do sensor IR o melhor é mesmo retornar nada, para assim saberes que nada foi lido.

2- Isso é o auto-reset a fazer o que deve fazer, sempre que abres ou fechas o terminal do IDE do Arduino ele manda um DTR ou lá que sinal é e o Arduino faz reset, para prevenires isso e para evitar que isso aconteça sempre que ligas o Arduino mete um pull-up ou pull-down(o que te colocar o relé desligado) ai com uma resistência de 10K, nunca mais terás esse problema.

3- Os led's Tx e Rx são controlados pelo FTDI e não estão ligado ás linhas Tx e Rx directamente, o que acontece é que o FTDI sabe quando está a ser lido/escrito pelo sistema operativo e só pisca os leds quando realmente tem alguem para onde enviar/receber dados, se não tiver não envia nada e como tal não pisca os leds, nada de estranho portanto.

Como estás a usar uma biblioteca e tenho 99,9% de certeza que não te deste ao trabalho de ler o código da mesma, o facto de isso só trabalhar ás vezes pode ser bug, ou o mais certo é não estares a usar a biblioteca como deve ser.
Avr fanboy

Offline ctrindade

  • Mini Robot
  • *
  • Mensagens: 4
Re: Sensor Infravermelho não funciona corretamente
« Responder #5 em: 15 de Novembro de 2011, 19:01 »
1. É verdade, faz sentido.  ;D

2. Dei uma olhada no que é um resistor pull-up e pull-down mas não entendi muito bem. Não sei como aplicá-lo no meu circuito. Poderia me ajudar? Desenhei o meu circuito todo:

http://imageshack.us/f/638/sensorir.gif/

Por favor, me mostre onde devo colocar este resistor.

3. Deixe-me ver se entendi bem: o arduino só vai acerder os leds tx e rx se o serial monitor estiver aberto?

Citar
Como estás a usar uma biblioteca e tenho 99,9% de certeza que não te deste ao trabalho de ler o código da mesma, o facto de isso só trabalhar ás vezes pode ser bug, ou o mais certo é não estares a usar a biblioteca como deve ser.

Eu até li o código da biblioteca e tentei entender mas não consegui...  :o Porque eu estava com problemas de leitura no meu sensor (um antigo que usei de 2 pinos). Troquei o sensor (pelo de 3 pinos da tv) e funcionou.

Mas se fosse problema com a biblioteca, porque ela funciona perfeitamente quando o serial monitor está aberto?? Consigo receber todos os comandos do controle remoto sem problema, portanto a biblioteca faz seu papel bem, não é?