Куда лепить оптопару?

Тема в разделе "Arduino & Shields", создана пользователем Mestniy, 17 сен 2015.

  1. Mestniy

    Mestniy Гуру

    Добрый день. Вопрос такой: Оптопаре без разници на какой пин ардуины ее вешать, для считывания показаний?
    Если нет, то что если на одну ардуину, подключено 2 оптопары? Мне нужно снять показания детектора нуля.
     
    Viquis нравится это.
  2. Radius

    Radius Гик

    Чтобы получить правильный ответ нужно задать правильный вопрос. Все гораздо понятнее если есть принципиальная схема. Что значит "детектор нуля"?
     
  3. Mestniy

    Mestniy Гуру

    Код (Text):
    void setup()  
    {    
      pinMode(AC_pin, OUTPUT);          
      attachInterrupt(0, FrontUp, RISING);  //прерывание по изменению уровня с низкого на высокий  
    }  
    // Функция обработки прерывания на подъем    
    void FrontUp()    
    {  
      detachInterrupt(0);  
      _delay_us(dim+1000);  // отсекаем лишнее
      digitalWrite(AC_pin, HIGH);  // включить симистор  
      _delay_us(20);      // короткая пауза, чтобы обеспечить включение симистора  
      digitalWrite(AC_pin, LOW);   // выключение симистора(он выключится когда полупериод достигнет нуля)    
      attachInterrupt(0, FrontDown, FALLING);    
    }    
    // Функция обработки прерывания на спад    
    void FrontDown()    
    {    
      detachInterrupt(0);    
      _delay_us(dim);  // отсекаем лишнее  
      digitalWrite(AC_pin, HIGH);  // включить симистор  
      _delay_us(20);      // короткая пауза, чтобы обеспечить включение симистора  
      digitalWrite(AC_pin, LOW);   // выключение симистора(он выключится    
      attachInterrupt(0, FrontUp, RISING);    
    }  

    void loop()  
    {    
      if(dimmer < 255) dimmer++; else dimmer=0;  // пример уменьшения яркости лампы
      dim=33*dimmer;
      delay(50);
    }  
    Вот это код, что-бы галогеновая лампа, то становилась ярче, то угасала.
    [​IMG]
    Вот она схема. На ней оптопара или детектор нуля это - 4n35.
    Вопрос: Можно ли на арду подключить 2 оптопары?
    Если да то как в коде указать, какая оптопара будет управлять какой лампой?
     
    Viquis нравится это.
  4. 1. оптопару можно подключить только ко входу где аппаратное прерывание
    2. вторая оптопара не нужна.
     
    Mestniy нравится это.
  5. Radius

    Radius Гик

    Вторая оптопара не нужна, если лампы на одной фазе. Прохождение через ноль у обеих ламп будет в одно и то же время.
     
  6. Mestniy

    Mestniy Гуру

    Дело в том что мне нужно подключить две лампы, на разные фазы. И что-бы яркость у каждой лампы была разная, в зависимости от того какой параметр я ей указал...
     
    Viquis нравится это.
  7. Mestniy

    Mestniy Гуру

    А как определить: какие порты arduino Uno поддерживают прерывание....
     
    Viquis нравится это.
  8. Radius

    Radius Гик

  9. Mestniy

    Mestniy Гуру

    Простите за глупый вопрос: Тоесть мне за место этого:
    Код (C++):
    attachInterrupt(0, FrontUp, RISING);
    Вставить вот это?:
    Код (C++):
    attachInterrupt(1, FrontUp, RISING);
     
    Viquis нравится это.
  10. Mestniy

    Mestniy Гуру

    Мне кажется что оно не выйдет, т.к. 0 и 1 в данном случае - это уровень димирования. Или я ошибаюсь?
     
    Viquis нравится это.
  11. Radius

    Radius Гик

    Микроконтроллеры AVR не имеют приоритетов для прерываний, это просто номера прерываний. Все прерывания равнозначны - одного приоритета.
     
    Viquis нравится это.
  12. Mestniy

    Mestniy Гуру

    ТОесть этот вариант прокатит?
     
    Viquis нравится это.
  13. Radius

    Radius Гик

    Да, но учтите, что пока обрабатывается прерывание, все прерывания лучше запретить. Затем когда выходите из прерывания, все прерывания опять разрешаете.
     
    Mestniy нравится это.
  14. Mestniy

    Mestniy Гуру

    Спасибо большое Radius. Но я честно говоря не понял, как запрещать и разрешать... Если подскажете огромный вам лайк от меня!
     
    Viquis нравится это.
  15. Radius

    Radius Гик

    Запретить прерывание noInterrupts(номер прерывания), разрешить прерывание Interrupts(номер прерывания).
     
    Mestniy нравится это.
  16. Mestniy

    Mestniy Гуру

    Понял спасибо...
     
    Viquis нравится это.