Страница 6 из 15 ПерваяПервая 123456789101112 ... ПоследняяПоследняя
Показано с 51 по 60 из 144
  1. #51
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Re: Фен паяльный

    Кстати - опять резюк 510 дыманул, хотя и спарил 2 по 0.25w
    Странно. Похоже на то что у тебя симистор не правильно подключен, а работает через симистор оптрона и через резистор. Хотя лампочка через этот резистор не должна загораться
    Последний раз редактировалось Chip; 07.03.2018 в 02:56.

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

    По умолчанию Re: Фен паяльный

    С выходных буду разбираться что к чему. Похоже так же как у меня мерцания, только не понял как они исправили
    Последний раз редактировалось Kevin; 07.03.2018 в 03:06.

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

    По умолчанию Re: Фен паяльный

    Дописал скетч, проверь если не затруднит
    Теперь кнопкой можно вкл и выкл, при этом диммер сохраняет уровень яркости и состояние выключателя. Если обесточить, то диммер прочитает последние до выкл. настройки

    Код:
    #include <CyberLib.h> //Библиотека от Cyber-Place.ru
    
    
    // Выводы ЭНКОДЕРА
    #define CLK 3  // Clock Подключаем к INT1, нельзя переназначать
    #define DT 4  // выторой вывод энкодера
    #define SW 5  // switch кнопка энкодера
    
    
    
    
    #define ZD 2  // zero detection детектор ноля
    #define GT 6  // Gate Triac управление симристором
    #define Min 0 // минимальное значение диммера для устранения мерцания
    #define Max 255 //максимальное значение диммера для устранения мерцания
    
    
    
    
    volatile uint8_t tic, dimmer;
    boolean DT_last, stat_sw, tmp; // последнее состояние энкодера , состояние выключателя
    
    
    
    
    void setup()  
    {
      pinMode(CLK,INPUT_PULLUP); // Clock Подключаем к INT1, нельзя переназначать
      pinMode(DT, INPUT_PULLUP); // выторой вывод энкодера
      pinMode(SW, INPUT_PULLUP); // кнопка энкодера
      pinMode(ZD, INPUT);     // детектор нуля
      pinMode(GT, OUTPUT);    // управление симистором
      digitalWrite(GT, 0);    // отключить симмистор
    
    
    
    
      attachInterrupt(0, detect_up, LOW);  // настроить срабатывание прерывания int0 на низкий уровень
      attachInterrupt(1, encoderTick, CHANGE); // прерывания от Энкодера
      
      StartTimer1(halfcycle, 40);        // время для одного разряда ШИМ в мкс
      StopTimer1(); //остановить таймер
    
    
    
    
      stat_sw=ReadEEPROM_Byte(1);
      if(stat_sw) {dimmer=ReadEEPROM_Byte(0);} 
        else {dimmer=255;}
     
      DT_last = digitalRead(CLK);         // считываем положение CLK
      Serial.begin(115200);           // для отладки
    }
    
    
    
    
    void loop()
    {
    tmp=digitalRead(SW); //прочитать состояние кнопки
    delay(50); // исключаем дребезг кнопки
    if( !digitalRead(SW) && !stat_sw && !tmp)//если было нажатие кнопки и выключатель в состооянии выкл.
        {
          dimmer=ReadEEPROM_Byte(0);//прочитать состояние диммера
          stat_sw=true;//изменить состояние выключателя
          WriteEEPROM_Byte(1, stat_sw);//записать состояние выключателя
          while( !digitalRead(SW)){}
          StartTimer1(halfcycle, 40);   //запустить таймер
        }
          else 
          if( !tmp && !digitalRead(SW) && stat_sw )//если было нажатие кнопки и состояние выключателя вкл.
          { 
             StopTimer1(); //остановить таймер
             WriteEEPROM_Byte(0, dimmer); //записать состояние диммера
             dimmer=255;
             stat_sw=false;//изменить состояние выключателя
             WriteEEPROM_Byte(1, stat_sw); //записать состояние выключателя
             while( !digitalRead(SW)){} 
          }
      
      //Serial.println(dimmer); 
      //Serial.println(stat_sw);
      delay(50);         
    }
    //********************обработчики прерываний*******************************
    void halfcycle()  //прерывания таймера
    { 
      tic++;  //счетчик  
      if( dimmer < tic ) digitalWrite(GT, HIGH); //управляем выходом на симистор
    }
    
    
    
    
    void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту
    {  
     tic=0;             //обнулить счетчик
     ResumeTimer1();   //запустить таймер
     attachInterrupt(0, detect_down, HIGH);  //перепрограммировать прерывание на другой обработчик
    }  
    
    
    
    
    void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту
    {   
     StopTimer1();                      //остановить таймер
     digitalWrite(GT, LOW);             //логический ноль на выход
     tic=0;       //обнулить счетчик
     attachInterrupt(0, detect_up, LOW); //перепрограммировать прерывание на другой обработчик
    } 
    
    
    
    
    void encoderTick()     // Обратка прерываний от Энкодера
    {
      uint8_t DT_now = digitalRead(CLK);  // считываем текущее положение CLK
      
      if (DT_now != DT_last)              // если предыдущее и текущее положение CLK не равны, значит был поворот 
      {                     
        if (digitalRead(DT) != DT_now)    // если DT не равен CLK, значит вращение по часовой стрелке
        {                             
          if( dimmer < Max ) dimmer--;    // прибавить яркость
        } else {                          // если DT равен CLK, значит вращение против часовой
                 if( dimmer > Min ) dimmer++;  // убавить яркость           }
                }
      }         
      DT_last = DT_now;                   // сохранить положение CLK для следующей проверки
    }
    Последний раз редактировалось Chip; 13.03.2018 в 02:09.

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

    По умолчанию Re: Фен паяльный

    Я только после выходных смогу проверить (уехал по делам)

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

    По умолчанию Re: Фен паяльный

    Скетч проверил - работает не корректно. При нажатии на кнопку лампочка загорается на полную, при повторном нажатии опять на минимум, и так циклично. Если вращать вал, и потом нажать - сохраняется в память после выключения

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

    По умолчанию Re: Фен паяльный

    Так и было задумано.
    Нажатие - свет включается
    следующее нажатие выключается
    Отрегулировал нужную яркость, нажал на кнопку, свет выключился и сохранил последние значения яркости
    Последний раз редактировалось Chip; 11.03.2018 в 20:13.

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

    По умолчанию Re: Фен паяльный

    В том то и дело что свет не выключается. Он выключается при значении 255

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

    По умолчанию Re: Фен паяльный

    Ага, я забыл про это
    Ну тогда променяй dimmer=0; на dimmer=255;

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

    По умолчанию Re: Фен паяльный

    Делал - выключает : ) Но не сохраняет - выкл или вкл диммер. При перезагрузке - постоянно вкл, даже если диммер был выключен.

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

    По умолчанию Re: Фен паяльный

    Исправил все ошибки, проверяйте http://compcar.ru/forum/showthread.p...l=1#post112152
    Последний раз редактировалось Chip; 12.03.2018 в 01:28.

Страница 6 из 15 ПерваяПервая 123456789101112 ... ПоследняяПоследняя

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

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

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

Ваши права

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