sexta-feira, 19 de agosto de 2011

Photogates com LDR

Acabo de montar uma sequencia de LDRs para funcionar como photogates!
O circuito é simples:

Um resistor associado ao LDR em serie. Com LDR no GND e Resistor no +V. Diante de cada LDR colocamos um LED.

Inicialmente faça as leituras nas portas analógicas em cada LDR para verificar o limite que eles devem operar.


Estes limites são importantes porque eles definirão o acionamento da contagem de tempo e o instante de bloqueio em cada LDR.

O código fonte para três photogates segue abaixo
-----------------------------------------------------------------------

int LDR1; // define a variável para o 1o LDR
int LDR2; // define a variável para o 2o LDR
int LDR3; // define a variável para o 3o LDR
int cont=0; // Flag que será utilizada para estabelecer as condições de cada de medida (um //contador)

#define LIMITE_INFERIOR_LDR1 700 // define o limite de acionamento do 1o sensor
#define LIMITE_INFERIOR_LDR2 200 // define o limite de acionamento do 2o sensor
#define LIMITE_INFERIOR_LDR3 100 // define o limite de acionamento do 1o sensor

unsigned long TempoInicial; // variáveis de tempo
unsigned long tempo1; //variáveis de tempo
unsigned long tempo2; // variáveis de tempo


void setup() {
Serial.begin(9600);
pinMode(A0, INPUT); //Ativa pino Analógico 0 para entrada
pinMode(A1, INPUT); //Ativa pino Analógico 1 para entrada
pinMode(A3, INPUT);
}

void loop() {
LDR1= analogRead(A0);
LDR2=analogRead(A1);
LDR3=analogRead(A2);

if (LDR1 > LIMITE_INFERIOR_LDR1 ) { // condição de disparo
TempoInicial = millis();
cont=1; // contagem inicial que será referencia para o próximo LDR
}

if (LDR2 > LIMITE_INFERIOR_LDR2 && (cont==1)) { // condição para leitura de tempo //e apenas apos a leitura do LDR1 " && cont==1 "
tempo1=(millis() - TempoInicial); // faça a diferença do tempo em relação ao tempo //inicial
Serial.println(tempo1);
cont=2;
}
if (LDR3 > LIMITE_INFERIOR_LDR3 && (cont==2)) { // duas condições: limite para //disparo e apos a leitura do LDR2 "&& cont==2" //
tempo2= (millis()-TempoInicial); // faça a diferença entre este instante e o inicial
Serial.println(tempo2);
cont=3;
}
}

------------------------------------------------------------------ Divirtam-se :) :) :)


Nenhum comentário:

Postar um comentário