Помогите с сигнализацией.
- Войдите на сайт для отправки комментариев
Пнд, 24/04/2017 - 17:58
Есть Arduino Uno, HC-05, HC-SR501 и пищалка. Нужно сделать как то так:
1. Ардуино работает, вдруг срабатывает HC-SR501 сразу же идёт сигнал(дапустим это будет число "1") на HC-05(всё законекчено к смартфону через блютуз).Естествено в это время ещё срабатывает пищалка (Начинается шум). Шумит всё до тех пор пока со смартфона через блютуз не приходит сигнал (дапустим это будет число "0") и всё замолкает(пищалка перестаёт пищать, hc sr501 перестаёт говорить что кто есть. )
Нужна помощь с тем как это осуществить.
#define pirPin 2 #define blinPin 0 #define bloutPin 1 void setup() { Serial.begin(9600) pinMode(blinPin, INPUT); pinMode(bloutPin, OUTPUT); pinMode(pirPin , INPUT); } void loop() { int pirSig = digitalRead(pirPin); //digitalRead Функция считывает значение с заданного входа - HIGH или LOW. //Если обнаружили движение if (pirSig == HIGH) { digitalWrite(bloutPin, HIGH); Serial.println("1"); delay(300); } else { digitalWrite(bloutPin, LOW); delay(300); } }Сверху примерная основа без отправки на ардуино 0
Ну вроде сам же все себе сделал и объяснил :))
Ну вроде сам же все себе сделал и объяснил :))
Вопрос в том что работает ли такая программа?
Пока не попробуеш не узнаешь
для HC-05 я бы использовал SoftwareSerial
#include <SoftwareSerial.h> #define pinSoftRX 3 //пины для HC-05 подключаем перекрестно RX-TX TX-RX #define pinSoftTX 2 #define pinPirSensor 4 #define pinBuzzer 5 String HC05Command = ""; byte state = 0; //тревога или нет SoftwareSerial HC05(pinSoftRX, pinSoftTX); // RX, TX void setup() { pinMode(pinPirSensor,INPUT); pinMode(pinBuzzer,OUTPUT); digitalWrite(pinBuzzer,LOW); //отключим на всякий случай пищалку HC05.begin(1200); //softwareserial не очень скоростная, а так так передавать нам только 2 байта то ставим скорость поменьше Serial.begin(9600); } void HC05Event() { if(HC05.available()) // check if the HC05 is sending a message { while(HC05.available()) { char c = HC05.read(); // read the next character. HC05Command += c; Serial.write(c); //для отладки пишем принятые символы в serial if (c=='#') {parseHC05Command();} //# будет признаком конца команды } } } void parseHC05Command() { if (HC05Command.indexOf("0#")!=-1) { digitalWrite(pinBuzzer,LOW); Serial.println("Alarm OFF"); state = 0; } } void loop() { if ((digitalRead(pinPirSensor)==HIGH)&(state==0)) { digitalWrite(pinBuzzer,HIGH); state = 1; HC05.println("1#"); //# признак конца команды Serial.println("Alarm ON"); } HC05Event(); //проверим есть ли данные от HC05 }наверно както так
Пока не попробуеш не узнаешь
для HC-05 я бы использовал SoftwareSerial
#include <SoftwareSerial.h> #define pinSoftRX 3 //пины для HC-05 подключаем перекрестно RX-TX TX-RX #define pinSoftTX 2 #define pinPirSensor 4 #define pinBuzzer 5 String HC05Command = ""; byte state = 0; //тревога или нет SoftwareSerial HC05(pinSoftRX, pinSoftTX); // RX, TX void setup() { pinMode(pinPirSensor,INPUT); pinMode(pinBuzzer,OUTPUT); digitalWrite(pinBuzzer,LOW); //отключим на всякий случай пищалку HC05.begin(1200); //softwareserial не очень скоростная, а так так передавать нам только 2 байта то ставим скорость поменьше Serial.begin(9600); } void HC05Event() { if(HC05.available()) // check if the HC05 is sending a message { while(HC05.available()) { char c = HC05.read(); // read the next character. HC05Command += c; Serial.write(c); //для отладки пишем принятые символы в serial if (c=='#') {parseHC05Command();} //# будет признаком конца команды } } } void parseHC05Command() { if (HC05Command.indexOf("0#")!=-1) { digitalWrite(pinBuzzer,LOW); Serial.println("Alarm OFF"); state = 0; } } void loop() { if ((digitalRead(pinPirSensor)==HIGH)&(state==0)) { digitalWrite(pinBuzzer,HIGH); state = 1; HC05.println("1#"); //# признак конца команды Serial.println("Alarm ON"); } HC05Event(); //проверим есть ли данные от HC05 }наверно както так
Я просто плохо разбираюсь. Вы хотите сказать что это некий аналог
ЭЭЭ аналог чего ??? Программа будет делать то что вы написали в первом сообщении
ЭЭЭ аналог чего ??? Программа будет делать то что вы написали в первом сообщении
Спасибо большое за помощь