Прошу совета... Через раз обрабатываются сигналы с ВТ модуля НС-06

divezer
Offline
Зарегистрирован: 14.10.2016

Всем доброго времени! В данном вопросе я новичек. Сейчас собираю проект из планшета. Распаял на нем кнопки,теперь необходимо ими управлять. Суть вопроса- есть ВТ модуль НС 06 и ардуино uno. Написал программку,вроде бы работает,но не совсем корректно. Андрид приложение высылает число,в свою очередь uno его обрабатывает и щелкает релюшками,все вроде бы не плохо,но отсутствует стабильность срабатываний,хотя судя по индикатору  rx сигналы проходят четко, serial.print отписывает тоже исключительно!  Пропуски имеют совершенно хаотичный порядок... Прошу помощи!!!




int switchPin = 7;
int relayPin1 = 3;  // качелька +
int relayPin2 = 4;  // качелька -
int relayPin3 = 5;  // пин вкыл/выкл,сон
int var = 0;
int val = 0;
int varp = 0;
int on = 0;
byte incomingByte;


void setup() {
Serial.begin(9600); 
pinMode(2,INPUT);       // сигнал ACC вход
pinMode(3,OUTPUT);    // выход на качельку +
pinMode(4,OUTPUT);    // выход на качельку -
pinMode(5,OUTPUT);      // выход CОН и ВКЛ/ВЫКЛ

}

void loop(){

{if (digitalRead(switchPin) == HIGH)
while (varp < 1)
{digitalWrite (relayPin3,LOW);delay(10);digitalWrite (relayPin3,HIGH);delay(50);digitalWrite (relayPin3,LOW); varp++ ;} else (varp = 0);   // ACC выход из сна


{if (digitalRead(switchPin) == LOW)
while (val < 1)
{ digitalWrite (relayPin3,LOW);delay(10);digitalWrite (relayPin3,HIGH);delay(50);digitalWrite (relayPin3,LOW); val++ ;} else (val = 0);}



{if (Serial.available()>0) incomingByte = Serial.read(); if (incomingByte == '2') 
while (var < 1) 
{digitalWrite (relayPin3,LOW);delay(10);digitalWrite (relayPin3,HIGH);delay(50);digitalWrite (relayPin3,LOW);  var++; }  else if (var = 0);  else if (Serial.available()>0) incomingByte = Serial.read();  if (incomingByte == '2')  
while (var < 1) 
{digitalWrite (relayPin3,LOW);delay(10);digitalWrite (relayPin3,HIGH);delay(50);digitalWrite (relayPin3,LOW);  var++; } else if (var = 0);    //  вход/выход из сна через BT
}
 


{(Serial.available()>0); incomingByte = Serial.read();  if (incomingByte == '1')
while (on < 1) 
{digitalWrite (relayPin3,LOW);delay(10);digitalWrite (relayPin3,HIGH);delay(4000);digitalWrite (relayPin3,LOW);  on++; }  else if (on = 0);  else (Serial.available()>0); incomingByte = Serial.read();  if (incomingByte == '1') 
while (on < 1) 
{digitalWrite (relayPin3,LOW);delay(10);digitalWrite (relayPin3,HIGH);delay(4000);digitalWrite (relayPin3,LOW);  on++; } else if (on = 0);    //  вкл/выкл
}
 

digitalWrite (relayPin2,HIGH);
{(Serial.available()>0); incomingByte = Serial.read();  if (incomingByte == '3') 
while (var < 1) 
{digitalWrite (relayPin2,HIGH);delay(10);digitalWrite (relayPin2,LOW);delay(50);digitalWrite (relayPin2,HIGH);  var++; }  else if (var = 0);  else (Serial.available()>0); incomingByte = Serial.read();  if (incomingByte == '3')  
while (var < 1) 
{digitalWrite (relayPin2,HIGH);delay(10);digitalWrite (relayPin2,LOW);delay(50);digitalWrite (relayPin2,HIGH);  var++; } else if (var = 0);    //  громкость '-'



digitalWrite (relayPin1,HIGH);
{(Serial.available()>0); incomingByte = Serial.read();  if (incomingByte == '4')  
while (var < 1) 
{digitalWrite (relayPin1,HIGH);delay(10);digitalWrite (relayPin1,LOW);delay(50);digitalWrite (relayPin1,HIGH);  var++; }  else if (var = 0);  else (Serial.available()>0); incomingByte = Serial.read();  if (incomingByte == '4')  
while (var < 1) 
{digitalWrite (relayPin1,HIGH);delay(10);digitalWrite (relayPin1,LOW);delay(50);digitalWrite (relayPin1,HIGH);  var++; } else if (var = 0);    //  громкость '+'


}
}   
}} 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В строках 43, 45, 52, 54, 61, 63 "Serial.available()>0" записано БЕЗ if. 

Не то, чтобы так нельзя, можно, конечно, но Вы уверены. что Вы точно понимаете, что делаете? И уверены, что это именно то, что Вы хотите сделать?

divezer
Offline
Зарегистрирован: 14.10.2016

Не совсем понял Вашего вопроса... 

Я повторюсь,что новичек в подобных вещах. На данном этапе ищу материал на просторах интернета и адаптирую под свои нужды. Возможно,что-то делаю не так,именно поэтому и прошу совета...

на строках 45,54,63 не пойму даже,где можно воткнуть if ? )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Т.е. Вы надёргали где-то кусков и даже не понимаете, что там написано.

divezer пишет:

прошу совета...

Ну, тогда единственный хороший совет, который Вам можно дать, это отложить программу в сторону и сначала прочитать, ну, хотя бы вот это. Хотя, этого очень очень мало, но хотя бы. Лучше бы, конечно ещё и вот это, а потом и вот это.

Вам просто необходимо прокачать уровень знаний. С тем что есть сечйчас Вы не можете не только написать программу, но даже понять что Вам советуют. Сейчас Вам остаётся только надеяться. что кто-то просто напишет за Вас. Если Вас это устраивает, то запостите это вот здесь, там Вам скорее помогут.

divezer
Offline
Зарегистрирован: 14.10.2016

То есть не понимаю,что написано?! Есть условия,при которых выполняются определенные дествия,действия я прописал,условия тоже работоспособны,что не так?! Что касается прокачки знаний,так этот совет может дать любой человек,даже совершенно не имеющий отношения к программированию... А вот дествительно указать на ошибку,тут да,нужен толковый...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

divezer пишет:

То есть не понимаю,что написано?! Есть условия,при которых выполняются определенные дествия,действия я прописал,условия тоже работоспособны,что не так?!

Прочитайте мой пост ещё раз. Посмотрите на указанные строки. Если Вы не понимаете о чём речь, значит без дополнительной прокачки знаний помочь Вам невозможно, т.к. Вы не знаете просто ничего.

divezer пишет:

А вот дествительно указать на ошибку,тут да,нужен толковый...

1. я бестолковый

2. я указал Вам на ошибку, причём указал и строку и характер ошибки. Но у Вас, к сожалению, не хватает знаний, чтобы понять о чём речь. Чтобы понять, что код в указанных мною строках написан неправильно, нужно иметь хоть какое-то представление о том, как пишется правильно. У Вас этого представления нет.

Изучайте то, что я Вам посоветовал или просто закажите готовую программу специалисту и не парьтесь. Это реально добрый совет, никто не хочет Вас обидеть. Все мы чего-то не знаем. 

 

divezer
Offline
Зарегистрирован: 14.10.2016

Если Вам не трудно, будьте добры,укажите,где по строкам 45,54,63 необходимо подставить if ...

Ведь там нет условия,это действие...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

divezer,

Вы попросили совета, я Вам его дал. Он Вам не понравился и Вы решили ему не следовать - это (1) Ваше право и (2) не моя проблема.

По поводу указанных строк, Вам было явно написано, что там не так. Ну, ладно, хрен с Вами, пожую ещё немного: ответьте пожалуйста, что во всех перечисленных мною строках делает выражение

(Serial .available()>0)

Оно присутствует во всех строках, которые я указал. Что оно там делает и чего Вы от него ожидаете?

Пожалуйста, больше вопросов мне не задавайте до тех пор, пока не прочтёте то, что я Вам дал. Или мы работаем и Вы делаете то, что Вам говорят, или Вы не считаете нужным этого делать, но тогда и я не считаю нужным тратить своё время. Выбор за Вами, поступайте как сочтёте нужным.