Ребят мне нужна помощь, вот я сижу и думаю. Мне нужно чтоб какой то датчик постоянно опрашивался, что бы прекратить функцию, если вы скажите что функция закончится то вы не правы, Эта функцию у меня будет длиться часов 10, так как это эффект РГБ и я не хочу каждые 3 минуты перезапускать эффект. Как мне поступить, мне говорили изменить эффект, Но я не понял что там изменить, моя идея приведена выше. Вот эффект: Код (C++): void rainbow(uint8_t wait) { uint16_t i, j; for(j=0; j<256; j++) { for(i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i+j) & 255)); } strip.show(); delay(wait); } } uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3); } if(WheelPos < 170) { WheelPos -= 85; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0); }
Эм...а можно по-русски? Прочтите, пожалуйста, свое сообщение как-будто это вам его прислали и вы не в теме. Опрашивать надо - опрашивайте. Чем это мешает РГБ эффекту? Что такое РГБ эффект?
Хммм... Можно Только что мне это даст типо если я поставлю миллис то датчики спокойно будут опрашиваться пока идет эффект?
delay останавливает всю программу на указанное время, поэтому он мешает. И хватит писать по несколько сообщений, мне уже надоело объединять
Если есть сомнения, то реализуй через конечный автомат. В принципе, МК и надо программировать как конечные автоматы. Код получается линейным и предельно ясным.
Коллеги, хочу дать некоторые пояснения. ТС уже приходил с этой же проблемой на ардуино.ру. Это я ему сказал. что ему нужно переписать его эффект. Но ТС не верит и продолжает генерить идеи то с прерываниями. то с блютусом... Igor532 - поймите главное! Если вы не в состоянии переписать этот простенький код на 20 строчек, который вы называете "эффектом" - то ни в какие прерывания и опросы датчиков вам и соваться не стоит - любые "прерывания" в разы сложнее этой детсадовской задачки.
Мысль правильная, но для начинающих - труднореализуемая. Когда есть код с циклом и delay() перевести все на конечный автомат, без блокировок требует навыков и понимания.