возможно управление датчиком
- Войдите на сайт для отправки комментариев
Сб, 24/05/2014 - 22:20
Здравствуйте. Собираю скажем так "Умную комнату" соеденил два скетча. В одном из них включается лампочка при обнаружении движения через PIR датчик. Во втором идет определение и вывод температуры на экран монитора, с датчиками ds18b20. Хочу добавить функцию ручного управления светом(тоесть не от датчика), осуществлять хочу это с помощью блютуз., как все это сделать я примерно представляю, но необходимо отключать PIR датчик. Так вот вопросы. Возможно ли отключать PIR датчик программным путем? Если нет, то как можно управлять светом в ручном режиме и через датчик движения?
Вот код.
#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 10 ///////////////// // Термодатчики// ///////////////// OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress Thermometer1 = { 0x28, 0x90, 0x97, 0x66, 0x05, 0x00, 0x00, 0xE5 }; // адрес датчика DS18B20 280054B604000092 DeviceAddress Thermometer2 = { 0x28, 0xE3, 0x10, 0x66, 0x05, 0x00, 0x00, 0xBE }; /////////////////////// //Инфракрасный датчик// /////////////////////// //Время калибровки датчика (10-60 сек. по даташиту) int calibrationTime = 30; //Время, в которое был принят сигнал отсутствия движения(LOW) long unsigned int lowIn; //Пауза, после которой движение считается оконченным long unsigned int pause = 5000; //Флаг. false = значит движение уже обнаружено, true - уже известно, что движения нет boolean lockLow = true; //Флаг. Сигнализирует о необходимости запомнить время начала отсутствия движения boolean takeLowTime; int pirPin = 2; //вывод подключения PIR датчика int relayPin = 4; //реле пин void setup() { pinMode(pirPin, INPUT); pinMode(relayPin, OUTPUT); //!ВНИМАНИЕ! При использовании n-p-n реле необходимо в след. строчке поменять HIGH на LOW digitalWrite(relayPin, LOW); delay(4000); digitalWrite(pirPin, LOW); //дадим датчику время на калибровку for(int i = 0; i < calibrationTime; i++) sensors.begin(); sensors.setResolution(Thermometer1, 10); sensors.setResolution(Thermometer2, 10); Serial.begin(9600); } void printTemperature(DeviceAddress deviceAddress) { float tempC = sensors.getTempC(deviceAddress); Serial.println(tempC); } void loop() { //Если обнаружено движение if(digitalRead(pirPin) == HIGH) { //Если до этого момента еще не включили реле if(lockLow) { lockLow = false; //Включаем реле. //!ВНИМАНИЕ! При использовании n-p-n реле необходимо в след. строчке поменять LOW на HIGH digitalWrite(relayPin, HIGH); delay(50); } takeLowTime = true; } //Ели движения нет if(digitalRead(pirPin) == LOW) { //Если время окончания движения еще не записано if(takeLowTime) { lowIn = millis(); //Сохраним время окончания движения takeLowTime = false; //Изменим значения флага, чтобы больше не брать время, пока не будет нового движения } //Если время без движение превышает паузу => движение окончено if(!lockLow && millis() - lowIn > pause) { //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения lockLow = true; digitalWrite(relayPin, LOW); delay(50); } } sensors.requestTemperatures(); Serial.print("Sensor1 "); printTemperature(Thermometer1); Serial.print("Sensor2 "); printTemperature(Thermometer2); }
И еще вопрос. Возможно ли подключить Arduino Mega 2560 к планшету с OTG? Планирую собрать небольшую программу через App Inventor
Так вот вопросы. Возможно ли отключать PIR датчик программным путем? Если нет, то как можно управлять светом в ручном режиме и через датчик движения?
А зачем его отключать? Его можно просто не опрашивать
Так вот вопросы. Возможно ли отключать PIR датчик программным путем? Если нет, то как можно управлять светом в ручном режиме и через датчик движения?
А зачем его отключать? Его можно просто не опрашивать
Подскажите пожалуйста, как это можно сделать?
Тоесть мне нужно, чтобы я в любой момент смог отключить опрос датчика и в любой момент включить опрос датчика
Подскажите пожалуйста, как это можно сделать?
Тоесть мне нужно, чтобы я в любой момент смог отключить опрос датчика и в любой момент включить опрос датчика
Ну, можно как-то так:
А вообще - надо расписать сценарий, как где что происходит - и по нему и писать программу (т.е. сценарий раскладывается на блок-схему, а по ней и пишется программа)
Подскажите пожалуйста, как это можно сделать?
Тоесть мне нужно, чтобы я в любой момент смог отключить опрос датчика и в любой момент включить опрос датчика
Ну, можно как-то так:
Объясните пожалуйста поподробнее, а тоя новичок, только начал разбираться.
А это - для самостоятельной работы, разобраться как и что