Помогите с сигнализацией.

Jexi
Offline
Зарегистрирован: 18.04.2017

Есть Arduino Uno, HC-05, HC-SR501 и пищалка. Нужно сделать как то так:

1. Ардуино работает, вдруг срабатывает HC-SR501 сразу же идёт сигнал(дапустим это будет число "1") на HC-05(всё законекчено к смартфону через блютуз).Естествено в это время ещё срабатывает пищалка (Начинается шум). Шумит всё до тех пор пока со смартфона через блютуз не приходит сигнал (дапустим это будет число "0") и всё замолкает(пищалка перестаёт пищать, hc sr501 перестаёт говорить что кто есть. )

Jexi
Offline
Зарегистрирован: 18.04.2017

Нужна помощь с тем как это осуществить.

 

Jexi
Offline
Зарегистрирован: 18.04.2017
#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);
  }
}

 

Jexi
Offline
Зарегистрирован: 18.04.2017

Сверху примерная основа без отправки на ардуино 0

 

afen
Offline
Зарегистрирован: 24.04.2017

Ну вроде сам же все себе сделал и объяснил  :))

Jexi
Offline
Зарегистрирован: 18.04.2017

afen пишет:

Ну вроде сам же все себе сделал и объяснил  :))

Вопрос в том что работает ли такая программа?
 

 

afen
Offline
Зарегистрирован: 24.04.2017

Пока не попробуеш не узнаешь 

для 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

   
}

наверно както так

 

Jexi
Offline
Зарегистрирован: 18.04.2017

afen пишет:

Пока не попробуеш не узнаешь 

для 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

   
}

наверно както так

 

 

Я просто плохо разбираюсь. Вы хотите сказать что это некий аналог

afen
Offline
Зарегистрирован: 24.04.2017

ЭЭЭ  аналог чего ??? Программа будет делать то что вы написали в первом сообщении

 

Jexi
Offline
Зарегистрирован: 18.04.2017

afen пишет:

ЭЭЭ  аналог чего ??? Программа будет делать то что вы написали в первом сообщении

 

Спасибо большое за помощь