Прошу совета... Через раз обрабатываются сигналы с ВТ модуля НС-06
- Войдите на сайт для отправки комментариев
Пт, 14/10/2016 - 00:31
Всем доброго времени! В данном вопросе я новичек. Сейчас собираю проект из планшета. Распаял на нем кнопки,теперь необходимо ими управлять. Суть вопроса- есть ВТ модуль НС 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); // громкость '+' } } }}
В строках 43, 45, 52, 54, 61, 63 "Serial.available()>0" записано БЕЗ if.
Не то, чтобы так нельзя, можно, конечно, но Вы уверены. что Вы точно понимаете, что делаете? И уверены, что это именно то, что Вы хотите сделать?
Не совсем понял Вашего вопроса...
Я повторюсь,что новичек в подобных вещах. На данном этапе ищу материал на просторах интернета и адаптирую под свои нужды. Возможно,что-то делаю не так,именно поэтому и прошу совета...
на строках 45,54,63 не пойму даже,где можно воткнуть if ? )))
Т.е. Вы надёргали где-то кусков и даже не понимаете, что там написано.
прошу совета...
Ну, тогда единственный хороший совет, который Вам можно дать, это отложить программу в сторону и сначала прочитать, ну, хотя бы вот это. Хотя, этого очень очень мало, но хотя бы. Лучше бы, конечно ещё и вот это, а потом и вот это.
Вам просто необходимо прокачать уровень знаний. С тем что есть сечйчас Вы не можете не только написать программу, но даже понять что Вам советуют. Сейчас Вам остаётся только надеяться. что кто-то просто напишет за Вас. Если Вас это устраивает, то запостите это вот здесь, там Вам скорее помогут.
То есть не понимаю,что написано?! Есть условия,при которых выполняются определенные дествия,действия я прописал,условия тоже работоспособны,что не так?! Что касается прокачки знаний,так этот совет может дать любой человек,даже совершенно не имеющий отношения к программированию... А вот дествительно указать на ошибку,тут да,нужен толковый...
То есть не понимаю,что написано?! Есть условия,при которых выполняются определенные дествия,действия я прописал,условия тоже работоспособны,что не так?!
Прочитайте мой пост ещё раз. Посмотрите на указанные строки. Если Вы не понимаете о чём речь, значит без дополнительной прокачки знаний помочь Вам невозможно, т.к. Вы не знаете просто ничего.
А вот дествительно указать на ошибку,тут да,нужен толковый...
1. я бестолковый
2. я указал Вам на ошибку, причём указал и строку и характер ошибки. Но у Вас, к сожалению, не хватает знаний, чтобы понять о чём речь. Чтобы понять, что код в указанных мною строках написан неправильно, нужно иметь хоть какое-то представление о том, как пишется правильно. У Вас этого представления нет.
Изучайте то, что я Вам посоветовал или просто закажите готовую программу специалисту и не парьтесь. Это реально добрый совет, никто не хочет Вас обидеть. Все мы чего-то не знаем.
Если Вам не трудно, будьте добры,укажите,где по строкам 45,54,63 необходимо подставить if ...
Ведь там нет условия,это действие...
divezer,
Вы попросили совета, я Вам его дал. Он Вам не понравился и Вы решили ему не следовать - это (1) Ваше право и (2) не моя проблема.
По поводу указанных строк, Вам было явно написано, что там не так. Ну, ладно, хрен с Вами, пожую ещё немного: ответьте пожалуйста, что во всех перечисленных мною строках делает выражение
(Serial .available()>0)
Оно присутствует во всех строках, которые я указал. Что оно там делает и чего Вы от него ожидаете?
Пожалуйста, больше вопросов мне не задавайте до тех пор, пока не прочтёте то, что я Вам дал. Или мы работаем и Вы делаете то, что Вам говорят, или Вы не считаете нужным этого делать, но тогда и я не считаю нужным тратить своё время. Выбор за Вами, поступайте как сочтёте нужным.