Страница 31 из 32 ПерваяПервая ... 212526272829303132 ПоследняяПоследняя
Показано с 301 по 310 из 315
  1. #301
    Местный Аватар для Kevin
    Регистрация
    02.02.2018
    Возраст
    53
    Сообщений
    127
    Вес репутации
    104

    По умолчанию Re: AC dimmer 220V 50Hz

    на одно прерывание - это как?

  2. #302
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    И тут меня не на шутку понесло!!!
    Можно весь энкодер повесить на 1 вход
    Нажмите на изображение для увеличения. 

Название:	encoder.png 
Просмотров:	570 
Размер:	151.5 Кб 
ID:	19336
    Только еще 1 ограничительный резистор 1К по питанию нужно будет добавить.
    Последний раз редактировалось Chip; 15.02.2018 в 10:54.

  3. #303
    Местный Аватар для Kevin
    Регистрация
    02.02.2018
    Возраст
    53
    Сообщений
    127
    Вес репутации
    104

    По умолчанию Re: AC dimmer 220V 50Hz

    Цитата Сообщение от Chip Посмотреть сообщение
    Через энкодер не проблема, можно сделать.
    Ни как не пойму как сделать

  4. #304
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    Ни как не пойму как сделать

    подключить энкодер?

    За основу код для энкодера можно взять здесь
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	энкодер1.png 
Просмотров:	112 
Размер:	58.1 Кб 
ID:	19339  
    Последний раз редактировалось Chip; 16.02.2018 в 02:47.

  5. #305
    Местный Аватар для Kevin
    Регистрация
    02.02.2018
    Возраст
    53
    Сообщений
    127
    Вес репутации
    104

    По умолчанию Re: AC dimmer 220V 50Hz

    Как подключать энкоднер знаю, вот как с помощью его управлять диммером - не разберусь

  6. #306
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    Я могу помочь, подсказать , подправить, но весь код не напишу, да и подключенного энкодера у меня сейчас нет
    Без тестов код написать сложно

  7. #307
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    Сделайте пока по классической схеме
    код:
    Код:
    void loop() { currentTime = millis(); if(currentTime >= (loopTime + 5)){ // проверяем каждые 5мс (200 Гц) encoder_A = digitalRead(pin_A); // считываем состояние выхода А энкодера encoder_B = digitalRead(pin_B); // считываем состояние выхода B энкодера if((!encoder_A) && (encoder_A_prev)){ // если состояние изменилось с положительного к нулю if(encoder_B) { // выход В в полож. сост., значит вращение по часовой стрелке // увеличиваем яркость, не более чем до 255 if(brightness + fadeAmount <= 255) brightness += fadeAmount; } else { // выход В в 0 сост., значит вращение против часовой стрелки // уменьшаем яркость, но не ниже 0 if(brightness - fadeAmount >= 0) brightness -= fadeAmount; } } encoder_A_prev = encoder_A; // сохраняем значение А для следующего цикла loopTime = currentTime; } }
    Последний раз редактировалось Chip; 15.02.2018 в 19:24.

  8. #308
    Местный Аватар для Kevin
    Регистрация
    02.02.2018
    Возраст
    53
    Сообщений
    127
    Вес репутации
    104

    По умолчанию Re: AC dimmer 220V 50Hz

    Сделал по аналогии данного кода, но иногда при регулировке бывают яркие вспышки лампочки (особенно на малой мощности)

  9. #309
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: AC dimmer 220V 50Hz

    Конденсаторы 0,1 мкФ на выходах энкодера установлены?
    По поводу кода не понял? Выложи здесь
    Последний раз редактировалось Chip; 15.02.2018 в 21:13.

  10. #310
    Местный Аватар для Kevin
    Регистрация
    02.02.2018
    Возраст
    53
    Сообщений
    127
    Вес репутации
    104

    По умолчанию Re: AC dimmer 220V 50Hz

    Забыл код выложить : )
    PHP код:
    #include <Encoder.h>
    #include <CyberLib.h> //Библиотека от Cyber-Place.ru
    volatile unsigned long Dimmer

    #define PIN_ENCODER_CLK 12
    #define PIN_ENCODER_DT 11
    #define PIN_ENCODER_SW 10
    Encoder myEnc(PIN_ENCODER_DTPIN_ENCODER_CLK);


    int accel 1;
    int i 0;
    long oldPosition 0;

    void setup() {
      
    Serial.begin(9600);
      
    D4_Out;  //Настраиваем порты на выход
      
    D4_Low;  //установить на выходах низкий уровень сигнала
      
    D2_In//настраиваем порт на вход для отслеживания прохождения сигнала через ноль

      //CHANGE – прерывание вызывается при любом изменении значения на входе;
      //RISING – вызов прерывания при изменении уровня напряжения с низкого (Low) на высокий(HIGH)
      //FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкий (Low)
      
    attachInterrupt(0detect_upRISING);  // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
     
    Dimmer 4500;
    }
    //********************обработчики прерываний*******************************

    void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту
    {
      
    delay_us(Dimmer);
      
    D4_High;
      
    delay_us(40); //формируем импульс включения симистора
      
    D4_Low;
    }

    //*************************************************************************
    void loop(){

    //=== ручка энкодера/регулироака
      
    long newPosition myEnc.read() / accel;    
      if (
    newPosition oldPosition
      {      
        
    Dimmer -= 100;
        
    Serial.println(">>>");
        if ( 
    Dimmer 500 )
        
    Dimmer 500;
      }
      else
      if (
    newPosition oldPosition)
      {        
        
    Dimmer += 100;                  // Убавляем скорость
        
    Serial.println("<<<");
        if ( 
    Dimmer 9500 )
        
    Dimmer 9500;
      } 
      if ( 
    newPosition != oldPosition)
      {
        
    = (1)%16;
        
    oldPosition newPosition;
        
    Dimmer Dimmer;
        
    Serial.println(Dimmer);
      } 

    Энкодер у меня модулем (резисторы есть)

Страница 31 из 32 ПерваяПервая ... 212526272829303132 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •