Aby czujnik IR był w stanie odróżnić sygnał od nadajnika od zakłóceń, takich jak światło słoneczne, można zastosować kilka strategii. Oto jedna z możliwych logik:
const int irLedPin = 2; // Pin podłączony do diody LED nadajnika IR
const int irReceiverPin = 3; // Pin podłączony do fototranzystora odbiornika IR
const int statusLedPin = 13; // Pin diody LED do sygnalizacji statusu
void setup() {
pinMode(irLedPin, OUTPUT);
pinMode(irReceiverPin, INPUT);
pinMode(statusLedPin, OUTPUT);
digitalWrite(irLedPin, LOW);
Serial.begin(9600);
}
void loop() {
digitalWrite(irLedPin, HIGH); // Wysyłanie sygnału z nadajnika
// Oczekiwanie na potwierdzenie odebrania sygnału przez fototranzystor
if (digitalRead(irReceiverPin) == HIGH) {
// Sygnał z nadajnika jest odbierany – potwierdzenie braku przeszkody
digitalWrite(statusLedPin, HIGH);
} else {
// Brak sygnału z nadajnika – potencjalnie przeszkoda lub światło słoneczne
digitalWrite(statusLedPin, LOW);
}
digitalWrite(irLedPin, LOW); // Wyłączenie nadajnika
delay(1000); // Odczekanie przed kolejnym sprawdzeniem
}
Opis logiki:
- Nadajnik LED IR jest włączany na pewien czas.
- Fototranzystor odbiornika jest odczytywany.
- Jeśli fototranzystor wykryje sygnał (high), to zakłada się, że sygnał od nadajnika został odbity i nie ma przeszkody.
- Jeśli fototranzystor nie wykryje sygnału (low), to sytuacja jest niepewna, i może to być spowodowane przeszkodą lub światłem słonecznym. W tym przypadku dioda LED statusu może być wykorzystana do sygnalizacji tej niepewności.
Należy pamiętać, że to jedynie prosty przykład, a ostateczna implementacja może wymagać dostosowań w zależności od warunków otoczenia i konkretnego układu. W praktyce, używa się różnych modulów czujników IR, które mają wbudowane filtry i funkcje, aby poprawić odporność na zakłócenia, takie jak światło słoneczne.