Сигнализация.
- Войдите на сайт для отправки комментариев
Ср, 12/07/2017 - 15:49
Идея такая,если ультразвуковой датчик заметил расстояние,менее 100 см,включается сигнализация,и будет она работать до тех пор,пока ик приемник не примет сигнал с моего пульта от телевизора.Кашу в программе заварил я что надо, поэтому прошу помочь.Потом на основе этой программы сделаю умную комнату(да да,умную комнату).
Для примечания: пьезопищалку я пока что убрал с кода,ибо библиотека каким то магическим способом конфликтует с ней и выдает ошибку.
#define Trig 12 //ультразвук #define Echo 13 //ультразвук(2) #define ledPin 8 //светодиод //пьезопищалка //все для приемника #include "IRremote.h" IRrecv irrecv(10); // Указываем пин, к которому подключен приемник decode_results results; void setup() { pinMode(Trig, OUTPUT); //инициируем как выход pinMode(Echo, INPUT); //инициируем как вход pinMode(ledPin, OUTPUT); Serial.begin(9600); /* задаем скорость общения. В нашем случае с компьютером */ //ПРИЕМНИК=======> irrecv.enableIRIn(); // Запускаем прием } unsigned int impulseTime=0; unsigned int distance_sm=0; void loop() { digitalWrite(Trig, HIGH); /* Подаем импульс на вход trig дальномера */ delayMicroseconds(10); // равный 10 микросекундам digitalWrite(Trig, LOW); // Отключаем impulseTime=pulseIn(Echo, HIGH); // Замеряем длину импульса distance_sm=impulseTime/58; // Пересчитываем в сантиметры Serial.println(distance_sm); // Выводим на порт int i = 0; if (distance_sm < 100 && i=0; ) // Если расстояние менее 100 сантиметром { { digitalWrite(ledPin, HIGH); // Светодиод горит delay(100); digitalWrite(ledPin, LOW); // Светодиод Потухает i++; } } if (irrecv.decode(&results)); { int res = results.value; if(res== 0x24DB && 0x824DB) { int i=0; digitalWrite(ledPin, LOW); } } delay(100); } /* ждем 0.1 секунды, Следующий импульс может быть излучён, только после исчезновения эха от предыдущего. Это время называется периодом цикла (cycle period). Рекомендованный период между импульсами должен быть не менее 50 мс. */
вопрос-то в чем?
Вопрос в том,что я не могу полноценно дописать программу. Поэтому и пишу сюда
Мне кажется, вы неверно понимаете смысл форума. Тут помогают тем, кто задает конкретные вопросы. А код за вас никто дописывать не станет, думаю. Хотя может найдется какой-нить благотворитель
Так я и не прошу,чтобы мне ее за меня написали.Я прошу лишь помочь ее дописать,под этим я имею ввиду подсказать,где я допустил ошибку и где следовало бы ее исправить.Все.
Так я и не прошу,чтобы мне ее за меня написали.Я прошу лишь помочь ее дописать,под этим я имею ввиду подсказать,где я допустил ошибку и где следовало бы ее исправить.Все.
А какая ошибка - остальные должны догадаться? Хотя бы опишите ее, приведите код ошибки
Как только датчик замечает расстояние меньше 100 см,начинает мигать светодиод,как и следует.Затем датчик видит расстояние больше 100 см и светодиод перестает мигать,что не приемлемо.Работать эта система должна по вышеописанным условиям.
В этом то и дело,что где ошибка-я и не знаю)
скобки в строка 37 и 42 лишние.
Уточните, "сигнализация" - это мигание диода в строках с 38 по 41 ?
Все верно.Якобы это сигнализация.Программа нужна для базового ''Фундамента'' умной комнаты
Строчку 33 надо перенести в setup()
Cтроки с 34 по 44 перепишите так:
Как только датчик замечает расстояние меньше 100 см,начинает мигать светодиод,как и следует.Затем датчик видит расстояние больше 100 см и светодиод перестает мигать,что не приемлемо.Работать эта система должна по вышеописанным условиям.
Другими словами, контроллер должен запоминать, что раньше выполняловь некоторое условие (расстояние меньше 100). Т.е. для запоминания сего факта нужна переменная. Например, булева.
Пока растояние больше 100, переменная принимает значение false. Как только расстояние станет меньше 100, переменная должна принять значение true. И затем, когда расстояние снова станет больше 100, эту переменную трогать не нужно, сбрасывать ее надо по Выбранному Вами внешнему действию - кнопка или что там у Вас, я уже не помню.
Соответственно, сигнализация (светодиод?) горит или мигает (как Вам удобнее) все время, пока переменная равно true.