Условия работает некорректно нужна помощь
- Войдите на сайт для отправки комментариев
Чт, 28/09/2017 - 07:15
Условия работает некорректно нужна помощь
Здравствуйте, я новичок и сейчас работаю над тем что бы с помощью ИК пульта вкл./откл. датчики и светодиоды в коде все комментирована. Нужна помощь где я ошибся ? заранее спасибо за помощь....
==============================
#include <IRremote.h> int out=11; // подключение LED к 11 пину int RECV_PIN = 12; // сигнальный контакт ИК приемника int brightness = 0; // уставливаем начально значение int fadeAmount = 10; // время int photosensor = A0; // фоторезистор int iksend = 3; //vivod dlya IR dioda int value1 = 0;//цифрового значения аналогового входа A0 int data; const int movPin = 2; IRrecv irrecv(RECV_PIN); decode_results results; IRsend irsend; void setup(){ Serial.begin(9600); irrecv.enableIRIn(); // запуск приемника pinMode(out,OUTPUT); pinMode(movPin, INPUT); } void loop() { if ( irrecv.decode( &results )) { Serial.println(results.value, HEX); //-------------------------vklucheniya i otklucheniya---------- if (results.value==0xFFE21D){ analogWrite(out, 255); delay(fadeAmount); } if (results.value==0xFFA25D){ analogWrite(out, 0 ); delay(fadeAmount); } //-------------------------uvelicheniya i umensheniya po najatii------------ if (results.value==0xFF22DD && brightness < 255){ // увеличение яркости при нажатием кнопки + brightness = brightness + 1; analogWrite(out, brightness); delay(fadeAmount); } if (results.value==0xFF02FD && brightness > 0){ // уменьшение яркости при нажатием кнопки - brightness = brightness - 1; analogWrite(out, brightness); delay(fadeAmount); } //-------------------------plavnoe uvelicheniya i umensheniya--------------- if (results.value==0xFF30CF && brightness < 255){ // плавное увеличение яркости при однократного нажатие кнопки + for (brightness = 0; brightness < 255; brightness++) { analogWrite(out, brightness); delay(fadeAmount); } } if (results.value==0xFF6897 && brightness > 1){ // плавное уменьшение яркости при однократного нажатие кнопки - for (brightness = brightness; brightness >= 0; brightness--) { analogWrite(out, brightness); delay(fadeAmount); } } //--------от пульта к пульту------------------ if(results.value==0xFF52AD){ irsend.sendNEC(0xF7C03F, 32); delay(fadeAmount); } if(results.value==0xFF4AB5){ irsend.sendNEC(0xF740BF, 32); delay(fadeAmount); } //-------------------датчик движения---------------------- if(results.value==0xFF9867){ int val = digitalRead(movPin); Serial.println(val); delay(100); if(val == 1){ analogWrite(out, 255); delay(fadeAmount); } if(val == 0){ analogWrite(out, 0); delay(fadeAmount); } } //---------фоторезистор------------------------------------------------------------------- if(results.value==0xFF7A85){ value1 = analogRead(photosensor);//значение с фоторезистора входе A0 Serial.println(data); data = value1 / 2; // Полученные значения c A0 делим на 2 data = constrain(data, 0, 255); analogWrite(out, 255-data); // Включаем светодиод с полученной ранее мощностью - от 0 до 255 delay(200); } if(results.value!=0xFF7A85 && brightness > 1){ analogWrite(out, 0); delay(fadeAmount); } irrecv.resume(); }}
Так добавьте отладочные сериалы в каждую ветку и смотрите соответствие кодов и входа в ифы.
Да хоть бы просто сказал, что и где идет не так, как думалось. Но мы ж икстрасенсы, сами догадаемса....
bwn- спасибо)!
DetSimen - тут просто команды принимаются с ИК пульта и вкл. и отл. светодиодов а так же датчик движения и фото резистор там я комментировал в коде каждый блоке. вот проблемма в том что все условия по отдельности (если осталные блоки комментировать) работают отлично и как только их становится (условии) более 3-ех они перестанут работат корректно. например датчик движения если включит то он включается но через секунду отключается ???). вот така фигня творится.
Непереводимый поток незамутненного интеллектом сознания....
В этом случае, рисуете табличку возможных-допустимых состояний и делаете проверки с принятием решения на ее основе.
DetSimen - Слушай очень хороший человек я тут помощи прощу у тех кто хочеть помочь и если тебе не чем помочь хотябы молчи и так забитую голову немороч, СПАСИБО ЗА ПОНИМАНИЕ.
bwn - Здравствуйте, сделаю, что получится скажу. Если возможно по подробнее скажите или какой ни будь ссылоку. Спасибо.
(видно что человек понимает ситуацию и хочеть помочь - спасибо таким людям которые языком не кого не оскорбляют и не пытаются доказать, что они умные, скромность всегда укращает человека.)
Зря вы так на котовода. У вас настолько сумбурные объяснения, что тяжело понять, что должно получиться.
Берете лист бумаги, и пишете на нем все возможные и допустимые сценарии с учетом пульта, фоторезистора и что там еще у вас есть.
Если какие то действия требуют проверки нескольких условий, то все их совместно и проверяете, а дальше даете исполнительную команду.
Дополнительно выпишите недопустимые сочетания, по ним тоже надо что то делать.
По программированию, найдите Керниган и Ритчи, но в вашем случае, это учебник логики, к сожалению в СССР этим знанием не обременяли, как сейчас не знаю.
Возможно именно в этом и состоит Ваша задумка, - не знаю.
А нахрена analogWrite?
fogary - хорошо что обратили внимание). Блин я сам незнаю зачем там последняя условия, наверное при копи-пас случайно там оказался). Спасибо.
bwn - наверное вы правы я нехотел когото обыдет. Если че извиняюсь. За совети огромное человеческое спасибо). Если не трудно можете подсказать какую книгу Кернигана и Ритча прочитать?(спасибо). Я не давно Саймона Монка прочитал, книга хорошая но инфо мало там.
На конец то заработал там оказывается в библиотеке ИК ремовт тоже была какая та ошибка в таймере из за этого не работали ШИМ порты сигнал или подался на макс (255) или на мин (0). в инете нашел статью, там таймер 1 нужно рас комментировать а таймер 2 комментировать в файле библиотеке ИК ремовте. Но проблема с датчиком движениям остается она по-прежнему включается и через секунду отключается (отдельно проверил условия залил работает как надо). Будем искать дальше, дай Бог найдем решения.
Чудо! У тебя родной язык какой? Это не обида, просто интересно.
Если не трудно можете подсказать какую книгу Кернигана и Ритча прочитать?(спасибо). Я не давно Саймона Монка прочитал, книга хорошая но инфо мало там.
Хотя бы вот. Единственное, там нет ни слова про Ардуино, это книга по языку.
UPD/ Х-ня какая то со ссылкой. Наберите "Керниган и Ритчи язык программирования си"
wdrakula - персидский
bwn - ок. спасибо
wdrakula - персидский
Таджикистан? Из столицы или из Самарканда?
Ладно... ты опиши словами, как должна работать схема.
А то ничего пока не понятно.
wdrakula - Задача в том, что бы с помощи пульта включит и отключит лампу. А так же вкл. и откл. датчик движения и датчик освещения (фоторезистор). Все они по отдельности как надо работают, а в сборе, когда даем команду на вкл. датчик движения, он включается и один раз даёт данные на ардуино и все – стоит, а должен быть подача данных постоянно до команды отключения. Вот в этом основная задача. спасибо).