Прерывания

Тема в разделе "Arduino & Shields", создана пользователем Igor532, 17 июл 2019.

  1. Igor532

    Igor532 Нуб

    Ребят мне нужна помощь, вот я сижу и думаю. Мне нужно чтоб какой то датчик постоянно опрашивался, что бы прекратить функцию, если вы скажите что функция закончится то вы не правы, Эта функцию у меня будет длиться часов 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);
    }
     
    Последнее редактирование модератором: 17 июл 2019
  2. Daniil

    Daniil Гуру

    Эм...а можно по-русски? Прочтите, пожалуйста, свое сообщение как-будто это вам его прислали и вы не в теме.
    Опрашивать надо - опрашивайте. Чем это мешает РГБ эффекту? Что такое РГБ эффект?
     
    Danil_2002 нравится это.
  3. NikitOS

    NikitOS Король шутов Администратор

    Что за хрень я сейчас прочитал?
    У меня т9 и то более вразумительные фразы выдает
     
    Danil_2002, parovoZZ и Daniil нравится это.
  4. Igor532

    Igor532 Нуб

    Я написал эффект для rgb Ленты. Я не могу опрашивать датчики пока не закончится этот эффект
     
  5. Daniil

    Daniil Гуру

    Напишите процедуру rgb ленты без delay, a с millis.
     
  6. Igor532

    Igor532 Нуб

    Хммм... Можно
    Только что мне это даст

    типо если я поставлю миллис то датчики спокойно будут опрашиваться пока идет эффект?
     
  7. NikitOS

    NikitOS Король шутов Администратор

    delay останавливает всю программу на указанное время, поэтому он мешает.

    И хватит писать по несколько сообщений, мне уже надоело объединять
     
    Daniil нравится это.
  8. parovoZZ

    parovoZZ Гуру

    Через гугол надо прогнать. Гугол и не такую хрень переводил.

    пачаму?
    Мешает что?
     
  9. NikitOS

    NikitOS Король шутов Администратор

    Хммм....
    upload_2019-7-17_18-19-53.png
     
    Andrey12 и parovoZZ нравится это.
  10. parovoZZ

    parovoZZ Гуру

    NikitOS нравится это.
  11. parovoZZ

    parovoZZ Гуру

    Если есть сомнения, то реализуй через конечный автомат. В принципе, МК и надо программировать как конечные автоматы. Код получается линейным и предельно ясным.
     
  12. b707

    b707 Гуру

    Коллеги, хочу дать некоторые пояснения.
    ТС уже приходил с этой же проблемой на ардуино.ру.
    Это я ему сказал. что ему нужно переписать его эффект.
    Но ТС не верит и продолжает генерить идеи то с прерываниями. то с блютусом...

    Igor532 - поймите главное!
    Если вы не в состоянии переписать этот простенький код на 20 строчек, который вы называете "эффектом" - то ни в какие прерывания и опросы датчиков вам и соваться не стоит - любые "прерывания" в разы сложнее этой детсадовской задачки.
     
    Airbus, NikitOS и Daniil нравится это.
  13. SergeiL

    SergeiL Оракул Модератор

    Мысль правильная, но для начинающих - труднореализуемая.
    Когда есть код с циклом и delay() перевести все на конечный автомат, без блокировок требует навыков и понимания. ;)
     
    Airbus нравится это.