diff --git a/project.ino b/project.ino new file mode 100644 index 0000000..d48f7df --- /dev/null +++ b/project.ino @@ -0,0 +1,67 @@ +// ------------------- Пины датчиков ------------------- +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); // ультразвук иначе не успеет +}