=====Умная дверь===== Дверь из кабинета открывается в коридор, по которому быстро передвигаются школьники. Есть вероятность, что при резком открывании двери произойдет контакт школьника, бегущего по коридору и двери, что может привезти к травме школьника. Для решения проблемы на дверях со стороны кабинета расположены два светодиода (зеленый и красный). Со стороны коридора расположены датчики расстояния, контролирующие приближение объекта к двери с двух сторон. При обнаружении объекта на определенном расстоянии (примерно 2 м) загорается красный светодиод. В обычном состоянии, горит зеленый светодиод. ====Схема==== {{ :smartdoor:smartdoor.png?direct&400 |}} Используется два ультразвуковых дальномера HC-SR04, подключенных к цифровым портам arduino. Дальномеры можно расположить над дверью так, чтобы они "смотрели" в разные стороны от двери вдоль коридора. ====Код==== #include "Ultrasonic.h" // пины подключения первого УЗД #define Trig1 12 #define Echo1 11 // пины подключения второго УЗД #define Trig2 4 #define Echo2 3 #define RedLED 8 // пин подключения красного светодиода #define GreenLED 7 // пин подключения зеленого светодиода long intervalSonar = 500; // интервал опроса сонара в миллисекундах Ultrasonic ultrasonic1(Trig1, Echo1); Ultrasonic ultrasonic2(Trig2, Echo2); void setup() { Serial.begin(9600); pinMode(RedLED, OUTPUT); pinMode(GreenLED, OUTPUT); } void loop() { // опрос дальномеров float dist_cm1 = ultrasonic1.Ranging(CM); // get distance float dist_cm2 = ultrasonic2.Ranging(CM); // get distance // вывод контрольных показаний в монитор порта Serial.print("Dist 1 = "); Serial.println(dist_cm1); Serial.print("Dist 2 = "); Serial.println(dist_cm2); // если показание любого УЗД меньше 200 см, // включаем красный светодиод и выключаем зеленый if (dist_cm1 < 200 || dist_cm1 < 200) { digitalWrite(RedLED, HIGH); digitalWrite(GreenLED, LOW); } else { // выключаем красный светодиод и включаем зеленый digitalWrite(RedLED, LOW); digitalWrite(GreenLED, HIGH); } delay(intervalSonar); } ---- [[start|На главную страницу]]