2025-12-17 13:29:42 +05:00

68 lines
1.8 KiB
C++

// ------------------- Пины датчиков -------------------
const int trig1 = 4;
const int echo1 = 3;
const int trig2 = 5;
const int echo2 = 6;
// ------------------- Пин MOSFET -------------------
const int ledPin = 2; // твоя лента сидит на D2
// ------------------- Настройки -------------------
const int thresholdDistance = 40; // см: меньше = объект рядом
const unsigned long lightTime = 1000; // мс: сколько светить после срабатывания
bool triggered = false;
unsigned long triggerTime = 0;
// -------------------------------------------------
long readDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 30000);
if (duration == 0) return 999; // нет эха -> далеко
long distance = duration * 0.034 / 2;
return distance;
}
// -------------------------------------------------
void setup() {
pinMode(trig1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
Serial.begin(9600);
}
// -------------------------------------------------
void loop() {
long d1 = readDistance(trig1, echo1);
long d2 = readDistance(trig2, echo2);
bool eventNow = (d1 < thresholdDistance) || (d2 < thresholdDistance);
if (eventNow && !triggered) {
triggered = true;
triggerTime = millis();
digitalWrite(ledPin, HIGH); // включить ленту
}
if (triggered && millis() - triggerTime >= lightTime) {
triggered = false;
digitalWrite(ledPin, LOW); // выключить ленту
}
delay(20); // ультразвук иначе не успеет
}