//Código para sensor IR QRE1113 Digital //A saída no terminal serial - baixos valores refletem 3000 ou mais refletido int QRE1113_Pin = 2; //conectar ao pino digital 2 void setup(){ Serial.begin(9600); } void loop(){ int QRE_Value = readQD(); Serial.println(QRE_Value); } int readQD(){ //Retorna o valor QRE1113 pinMode( QRE1113_Pin, OUTPUT ); digitalWrite( QRE1113_Pin, HIGH ); delayMicroseconds(10); pinMode( QRE1113_Pin, INPUT ); long time = micros(); //o tempo medido HIGH, que acaba 3 segundos depois while (digitalRead(QRE1113_Pin) == HIGH && micros() - time < 3000); int diff = micros() - time; return diff; }
fonte: http://bildr.org/2011/06/qre1113-arduino/
Fotos do sensor em teste:
As leituras no Serial Monitor: 3000 linha preta, valores abaixo cores sendo que, dependendo da altura do sensor, o valor mais baixo corresponde a branco. Uma das coisas que notamos é que, conforme a superfície, o sensor costuma dar falsos positivos e portanto, o robô endoida. Isso pode estar relacionado com o tipo de programa que usamos nos robôs, e vamos mudar inserindo mais filtros para evitar este problema.
Outro detalhe: este sensor não filtra muito bem a luz infravermelha emitida por luzes artificiais e pela luz solar. Precisamos isolá-lo, como fizemos com os sensores anteriores.
Fotos do sensor em teste:
As leituras no Serial Monitor: 3000 linha preta, valores abaixo cores sendo que, dependendo da altura do sensor, o valor mais baixo corresponde a branco. Uma das coisas que notamos é que, conforme a superfície, o sensor costuma dar falsos positivos e portanto, o robô endoida. Isso pode estar relacionado com o tipo de programa que usamos nos robôs, e vamos mudar inserindo mais filtros para evitar este problema.
Outro detalhe: este sensor não filtra muito bem a luz infravermelha emitida por luzes artificiais e pela luz solar. Precisamos isolá-lo, como fizemos com os sensores anteriores.
Aplicação dos sensores de IR em um robô seguidor de linha:
Nenhum comentário:
Postar um comentário