Страница 5 из 15 ПерваяПервая 1234567891011 ... ПоследняяПоследняя
Показано с 41 по 50 из 144
  1. #41
    Новичок
    Регистрация
    06.03.2018
    Сообщений
    1
    Вес репутации
    0

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

    Работает. А почему (#define CLK 3) // Clock Подключаем к INT1, нельзя переназначать?
    Не знал что (#define GT 6 // Gate Triac управление симистором) можно поменять с 4 на 6.
    P,S не приходит письмо с форума, на восстановление пароля. (Kevin)

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

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

    Работает.
    Спасибо! значит я могу выкладывать? Хотя еще хочу немного доделать, что бы он последние настройки сохранял и управлял вкл/выкл кнопкой
    А почему (#define CLK 3) // Clock
    Потому что D2 уже занят под диммер, а прерываний все 2, int0 и int1
    Можно сделать и без прерываний, но это уже не совсем правильно, так как не будет работать в фоновом режиме

    Не знал что (#define GT 6 // Gate Triac управление симистором) можно поменять с 4 на 6.
    Можно на любой пин поменять

    P,S не приходит письмо с форума, на восстановление пароля. (Kevin)
    Рассылку почты забанили опять
    Скинул новый пароль в личку
    Последний раз редактировалось Chip; 07.03.2018 в 01:45.

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

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

    При подключении библиотеки u8glib, лампочка при малых мощностях начинает мерцать.
    Код HTML:
    void loop()
    {
    u8g.firstPage();  
    do {
       draw();
    } 
    while( u8g.nextPage() );
    } 
    
    void draw(void) {
      u8g.setFont(u8g_font_courR24n);
      u8g.setPrintPos(15, 22);
      u8g.print(dimmer);
    }
    Последний раз редактировалось Kevin; 07.03.2018 в 01:44.

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

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

    выложи весь код посмотрю где ошибка

    Хотя врятли поможет, нужно смотреть на саму либу
    Скорее всего i2c при транзакции запрещает все прерывания
    Последний раз редактировалось Chip; 07.03.2018 в 01:49.

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

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

    Бардачина в коде - экспериментировал

    PHP код:
    #include "U8glib.h"
    #include <CyberLib.h> //Библиотека от Cyber-Place.ru
    #include "rus6x12.h"


    #define PAGE_HEIGHT HEIGHT
    // Выводы ЭНКОДЕРА
    #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 ticdimmer=0;
    boolean DT_last// последнее состояние энкодера
    //===========================================================
    U8GLIB_SSD1306_128X64 u8g(A4/* data=*/ A3/* cs=*/ A0/* dc=*/ A1/* reset=*/ A2); // наш дисплей  ||
    //===========================================================
    int motorPin 3;
    int motorSpeed 75;                   // Изначальная скорость двигателя
    int fanPower 155;                    // Изначальная мощность фена
    int selectMode 1;                    // Что изменять, скорость или мощность фена

    void draw(void) {
      
    u8g.setFont(u8g_font_courR24n);// мой тонкие цифры
      
    u8g.setPrintPos(1522);
      
    u8g.print(dimmer);

      
    u8g.setPrintPos(1564);
      
    u8g.print(motorSpeed);
      
      if(
    selectMode == 1)
      {  
      
    u8g.setPrintPos(7823);
      
    u8g.print(".");
      }
      else
      {
      
    u8g.setPrintPos(7859);
      
    u8g.print(".");
      }
    // =================================== 
      
    u8g.setPrintPos(816);
      
    u8g.setFont(rus6x12);
      
    u8g.print("температура");

      
    u8g.setPrintPos(8443);
      
    u8g.print("обороты");
    // =================================== 
      
    u8g.setFont(u8g_font_courR14r);
      
    u8g.setPrintPos(9527);
      
    u8g.print(dimmer);

      
    u8g.setPrintPos(9564);
      
    u8g.print(motorSpeed);
      
    // =================================== 
      
    u8g.setPrintPos(-270);

      
    u8g.setFont(u8g_font_ncenR24);
      
    u8g.print("*");
      
    // =================================== 
      
    u8g.drawLine(7707764); // Вертикальная линия
      
    u8g.drawLine(803212832); // Горизонтальная короткая линия

     // u8g.drawBitmapP(0, 0, 1, 24, Termometr);
    //  u8g.drawBitmapP(-2, 47, 2, 14, Cooler);
    }
    void setup()
    {

      
    pinMode(CLK,INPUT_PULLUP); // Clock Подключаем к INT1, нельзя переназначать
      
    pinMode(DTINPUT_PULLUP); // второй вывод энкодера
      
    pinMode(SWINPUT_PULLUP); // кнопка энкодера
      
    pinMode(ZDINPUT);     // детектор нуля
      
    pinMode(GTOUTPUT);    // управление симистором
      
    digitalWrite(GT0);    // отключить симмистор


      
    attachInterrupt(0detect_upLOW);  // настроить срабатывание прерывания int0 на низкий уровень
      
    attachInterrupt(1encoderTickCHANGE); // прерывания от Энкодера
      
      
    StartTimer1(halfcycle40);        // время для одного разряда ШИМ в мкс
      
    StopTimer1();                      //остановить таймер
      
      
    DT_last digitalRead(CLK);         // считываем положение CLK
    //  Serial.begin(115200);           // для отладки



      
      //Serial.begin( 9600 );
      
    TCCR2B TCCR2B 0b11111000 7;
      
    pinMode(motorPinOUTPUT);
      
    //======================
        
    u8g.firstPage();  
        do {
      
    u8g.drawBitmapP(001664Logo);
        } while( 
    u8g.nextPage() );
      
    delay (4000);
      
    //======================  
        
    u8g.firstPage();  
        do {
            
    draw();
        } while( 
    u8g.nextPage() );
      
    //====================== 
    }
      

    //********************обработчики прерываний*******************************
    void halfcycle()  //прерывания таймера

      
    tic++;  //счетчик  
      
    if( dimmer tic digitalWrite(GTHIGH); //управляем выходом на симистор
    }

    void  detect_up()  // обработка внешнего прерывания. Сработает по переднему фронту
    {  
     
    tic=0;             //обнулить счетчик
     
    ResumeTimer1();   //запустить таймер
     
    attachInterrupt(0detect_downHIGH);  //перепрограммировать прерывание на другой обработчик
    }  

    void  detect_down()  // обработка внешнего прерывания. Сработает по заднему фронту
    {   
     
    StopTimer1();                      //остановить таймер
     
    digitalWrite(GTLOW);             //логический ноль на выход
     
    tic=0;       //обнулить счетчик
     
    attachInterrupt(0detect_upLOW); //перепрограммировать прерывание на другой обработчик
    }
    //**************************************** *********************************

    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++;    // прибавить яркость
                                            //====================== 
                                            
                                                
    if (selectMode == 0)  
                                                {  
                                                  
    motorSpeed += 5;                  // Прибавляем скорость
                                                  
    if ( motorSpeed 255 )
                                                  
    motorSpeed 255;
                                                }
                                                else
                                                {
                                                  
    dimmer++;
                                             
    //     fanPower -= 5;                   // Прибавляем мощность фена
                                              //    if ( fanPower < 0)
                                             //     fanPower = 0;     
                                                
    }
                                            
    //======================
                                    /*          u8g.firstPage();  
                                              do {
                                                  draw();
                                              } 
                                              while( u8g.nextPage() );*/
                                            
                                            //======================       
      
    } else 
    //====================== ===================== ===================== ===================== ===================== 
    {                          // если DT равен CLK, значит вращение против часовой
      
    if( dimmer Min 
     
    //     dimmer--;  // убавить яркость           
                                                  //====================== 
                                                  
                                                      
    if (selectMode == 0)  
                                                      {       
                                                        
    motorSpeed -= 5;                  // Убавляем скорость
                                                        
    if ( motorSpeed 75 )
                                                        
    motorSpeed 75;
                                                      }
                                                      else
                                                      {
                                                        
    dimmer--;
                                                     
    //  fanPower += 5;                   // Убавляем мощность фена
                                                       // if ( fanPower > 255)
                                                      //  fanPower = 255;   
                                                      
    }
                                                  
    //======================
                                             /*       u8g.firstPage();  
                                                    do {
                                                        draw();
                                                    } 
                                                    while( u8g.nextPage() );*/
                                                  
                                                  //======================  
    }
      }         
      
    DT_last DT_now;                   // сохранить положение CLK для следующей проверки
    }


    void loop()
    {
                                                
    u8g.firstPage();  
                                              do {
                                                  
    draw();
                                              } 
                                              while( 
    u8g.nextPage() );
      
    //  Serial.println(dimmer); 
     // delay(100);



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

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

    А для чего вот этот цикл?
    do {
    draw();
    }
    while(
    u8g.nextPage() );
    Я думаю что нужно скорость цикла уменьшить, поставить там delay(500) после draw
    Последний раз редактировалось Chip; 07.03.2018 в 02:01.

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

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

    Это обновление/вывод инфы на дисплей. Без него не работает. Вот пример из либы
    PHP код:
    void draw(void) {
      
    // graphic commands to redraw the complete screen should be placed here  
      
    u8g.setFont(u8g_font_unifont);
      
    //u8g.setFont(u8g_font_osb21);
      
    u8g.drawStr022"Hello World!");
    }

    void setup(void) {
      
      
    // flip screen, if required
      // u8g.setRot180();
      
      // set SPI backup if required
      //u8g.setHardwareBackup(u8g_backup_avr_spi);

      // assign default color value
      
    if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
        
    u8g.setColorIndex(255);     // white
      
    }
      else if ( 
    u8g.getMode() == U8G_MODE_GRAY2BIT ) {
        
    u8g.setColorIndex(3);         // max intensity
      
    }
      else if ( 
    u8g.getMode() == U8G_MODE_BW ) {
        
    u8g.setColorIndex(1);         // pixel on
      
    }
      else if ( 
    u8g.getMode() == U8G_MODE_HICOLOR ) {
        
    u8g.setHiColorByRGB(255,255,255);
      }
    }

    void loop(void) {
      
    // picture loop
      
    u8g.firstPage();  
      do {
        
    draw();
      } while( 
    u8g.nextPage() );
      
      
    // rebuild the picture after some delay
      
    delay(500);


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

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

    Частота мерцания меняется. Пробовал 100 и 500. В принципе для фена это наверно не будет критично.

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

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

    Для фена точно не будет критично

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

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

    Ну тогда и забуду про это. Проверял мультиметром - максимум на 1 вольт скачет напруга. Кстати - опять резюк 510 дыманул, хотя и спарил 2 по 0.25w

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

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

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

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

Ваши права

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