Bonsoir
désolé pour le post de tout a l heure je me suis rendu compte qu il etait pas dans la section convenable je m excuse pour cette erreur
voilà j essai de realisé un capteur de distance IR voilà mon code : j envoi un signal a 38khz et je regarde sur le recepteur le signal recus or la reception est capricieuse des fois elle reçois et des fois rien
$#define ledPin 13
int signal = A5;
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
// initialiser le timer1
noInterrupts(); // désactiver toutes les interruptions
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 52; // 16MHz/8/38khz
TCCR1B |= (1 << WGM12); // CTC mode
TCCR1B |= (0 << CS12);
TCCR1B |= (1 << CS11);
TCCR1B |= (0 << CS10);
TIMSK1 |= (1 << OCIE1A); // Activer le mode de comparaison
interrupts(); // activer toutes les interruptions
}
ISR(TIMER1_COMPA_vect) // fonction périodique
{
analogWrite(ledPin, digitalRead(ledPin) ^ 1);// Basculer la LED allumée/éteinte
}
void loop()
{
Serial.println( calculDistance());
delay(500);
}
int calculDistance() {
byte distance = 0;
distance = analogRead(signal);
return(distance);
}
il me detecte l émission IR par intermittence je sais plus ou es l erreur
j ai pris cette commande depuis un exemple de timer :
analogWrite(ledPin, digitalRead(ledPin) ^ 1); qlq1 peut m expliquer cette commande