Показано с 1 по 8 из 8

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Новичок
    Регистрация
    26.03.2010
    Возраст
    41
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Управление подсветкой приборки.

    Я новичок в этом деле, пытаюсь сделать управление подсветкой приборной панели(светодиодной) сейчас управляется ШИМом +12v регистрируется яркость переменным резистором 25кОМ, хочу использовать тот же переменный резистор, что бы при включении габаритов подсветка загоралась плавно на тот уровень яркости который задан резистором и так же плавно тухла при отключении.
    Попытался написать скетч, но что-то не то, помогите!!!
    PHP код:
    #define LED 9     //  выход на управлении подсветкой

    #define BUTTON 7  // переключател   гараритов

    int i = 0;        


    int val = 0;  // состояние переключателя габаритов on - off    

    int res = 0; // уровень яркости

    int old_val = 0;  



    void setup() {
      
    pinMode(LED, OUTPUT);   
      
    pinMode(BUTTON, INPUT); 
    }

    void loop() {

      
    val = digitalRead(BUTTON); // читаем состояния переключателя 

       
    delay(10);



     
        if ((
    val == 1)&& (old_val == LOW) ) { //если подсветку включаем
    res = analogRead(0);  // читаем состояние регулятора яркости
    for (i = 0; i < res/4; i++) { // зажигаем плавно подсветку до уровня //выбранной яркости
        
    analogWrite(LED, i);       
        
    delay(10); 
          }
        }  
      

      
    old_val = val; // сохраняем состояние

    if ((val == 0 )&& (old_val == HIGH)) {//если подсветку выключаем
    res = analogRead(0); 

     for (
    i = res/4; i > 0; i--) { // тушим плавно от уровня регулятора яркости //до нуля

        
    analogWrite(LED, i); // set the LED brightness
        
    delay(10);           // Wait 10ms
      
    }
     }
    } 

    1)Вход с переключателя габаритов 12v
    2)Пока подсветку заменяет один светодиод, думаю делать на поливеке IRFL4105 и BC547 управление.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	pod.JPG 
Просмотров:	1245 
Размер:	90.7 Кб 
ID:	8157  
    Последний раз редактировалось crash-100; 29.03.2010 в 01:09.

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

    По умолчанию Re: Управление подсветкой приборки.

    Переключатель неправильный.
    Нужен диод и внутреннюю подтяжку на вход включить.
    А если судить по твоей схеме то ты спалишь контроллер

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

    По умолчанию Re: Управление подсветкой приборки.

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

    Вот здесь посмотри как реализовано

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

    По умолчанию Re: Управление подсветкой приборки.

    Вот так все работает
    PHP код:
    #define LED 9     //  выход на управлении подсветкой 
    #define BUTTON 7  // переключател   гараритов 
    #define Ain 5  // аналоговый вход для измерения сопротивления

    int i = 0;         
    int val = LOW;  // состояние переключателя габаритов on - off     
    int res = 0; // уровень яркости 
    int old_val = LOW;   



    void setup() { 
      
    pinMode(LED, OUTPUT);    
      
    pinMode(BUTTON, INPUT);  
      
    digitalWrite(BUTTON, HIGH); //Подключить внутренний подтягивающий резистор
    } 

    void loop() { 

      
    val = digitalRead(BUTTON); // читаем состояния переключателя  
       
    delay(10); 

        if (
    val == HIGH && old_val==1)   //если подсветку включаем 
          
    {
            
    res = analogRead(Ain)/4;  // читаем состояние регулятора яркости 
            
    for (i = 0; i < res; i++) { // зажигаем плавно подсветку до уровня //выбранной яркости 
             
    analogWrite(LED, i);        
            
    delay(20);  
              } 
           
    old_val = 0;   
          }   

      if ( 
    val == LOW  && old_val==0) //если подсветку выключаем 
        
    {
          
    res = analogRead(Ain)/4;  
           for (
    i = res; i > 0; i--) { // тушим плавно от уровня регулятора яркости //до нуля 
            
    analogWrite(LED, i); // set the LED brightness 
          
    delay(20);           // Wait 10ms 
          
    } 
         
    old_val = 1; 
        } 
    } 
    Последний раз редактировалось Chip; 29.03.2010 в 15:55.

  5. #5
    Пользователь
    Регистрация
    10.03.2009
    Сообщений
    68
    Вес репутации
    230

    По умолчанию Re: Управление подсветкой приборки.

    Как просто
    Я, как всегда, на прерываниях сделал ))
    В общем у меня проект бАльшой, посему вырезки, мож кому пригодится:
    Код:
    // вход датчика света (аналог)
    #define  LIGHT_SENS 7
    
    // текущее и новое значение яркости подсветки
    volatile  byte  bl_cur = 0, bl_new = 0;
    
    // меняем яркость подсветки LCD
    void  set_bl(byte val)  { bl_new = val; }
    
    // Вызывается 100 раз в секунду (см attach() в IRremote.cpp)
    void  isr()
    {
      // проверка, нужно ли порулить полвсеткой LCD
      if (bl_cur != bl_new)
      {
        if (bl_new > bl_cur)
            bl_cur++;
        else
            bl_cur--;
        analogWrite(LCD_BKLT, bl_cur);
      }
    }
    В общем, когда надо установить нужный уровень - просто вызываем:
    Код:
    set_bl(192);
    В общем получается красиво и жутко плавно.
    Последний раз редактировалось AMurchick; 30.03.2010 в 17:02.
    TOYOTA CAMRY - NEXUS 7

  6. #6
    Новичок
    Регистрация
    26.03.2010
    Возраст
    41
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Re: Управление подсветкой приборки.

    Вот законченный вариант, интересно было бы посмотреть как это реализовать с прерываниями, на выходе как и писал ранее управление штатной подсветкой +12v.
    PHP код:
    #define LED 9     //  выход на управлении подсветкой 
    #define BUTTON 7  // переключател   гараритов 
    #define Ain 5  // аналоговый вход для измерения сопротивления

    int i = 0;         
    int val = LOW;  // состояние переключателя габаритов on - off     
    int res = 0; // уровень яркости 
    int old_val = LOW;   
    int old_res = LOW;
    int on = 0;



    void setup() { 
      
    pinMode(LED, OUTPUT);    
      
    pinMode(BUTTON, INPUT);  
      
    analogWrite(LED, 0);

    } 

    void loop() { 
      
      
    res = analogRead(Ain)/4;

      
    val = digitalRead(BUTTON); // читаем состояния переключателя  
       
    delay(10); 

        if (
    val == HIGH && old_val==0)   //если подсветку включаем 
          
    {
            
    res = analogRead(Ain)/4;  // читаем состояние регулятора яркости 
            
    for (i = 0; i < res; i++) { // зажигаем плавно подсветку до уровня //выбранной яркости 
             
    analogWrite(LED, i);        
            
    delay(30);  
              } 
           
    old_val = 1; 
         
    on = 1;  
          }   

      if ( 
    val == LOW  && old_val==1) //если подсветку выключаем 
        
    {
          
    res = analogRead(Ain)/4;  
           for (
    i = res; i > 0; i--) { // тушим плавно от уровня регулятора яркости //до нуля 
            
    analogWrite(LED, i); // set the LED brightness 
          
    delay(10);           // Wait 10ms 
          
    } 
         
    old_val = 0;
        
    analogWrite(LED, 0); 
        
    on = 0; 
        } 
        
       
    if(
    old_res < res and on ==1){
    for (
    i = old_res; i < res; i++) { // loop from 0 to 254 (fade in)
        
    analogWrite(LED, i);      // set the LED brightness
        
    delay(10); // Wait 10ms because analogWrite
                   // is instantaneous and we would
                   // not see any change  

    }

      }
       
    old_res = res; 
     } 

  7. #7
    Новичок
    Регистрация
    09.07.2010
    Возраст
    52
    Сообщений
    6
    Вес репутации
    202

    По умолчанию Re: Управление подсветкой приборки.

    Цитата Сообщение от crash-100 Посмотреть сообщение
    Вот законченный вариант, интересно было бы посмотреть как это реализовать с прерываниями, на выходе как и писал ранее управление штатной подсветкой +12v.
    PHP код:
    #define LED 9     //  выход на управлении подсветкой 
    #define BUTTON 7  // переключател   гараритов 
    #define Ain 5  // аналоговый вход для измерения сопротивления

    int i = 0;         
    int val = LOW;  // состояние переключателя габаритов on - off     
    int res = 0; // уровень яркости 
    int old_val = LOW;   
    int old_res = LOW;
    int on = 0;



    void setup() { 
      
    pinMode(LED, OUTPUT);    
      
    pinMode(BUTTON, INPUT);  
      
    analogWrite(LED, 0);

    } 

    void loop() { 
      
      
    res = analogRead(Ain)/4;

      
    val = digitalRead(BUTTON); // читаем состояния переключателя  
       
    delay(10); 

        if (
    val == HIGH && old_val==0)   //если подсветку включаем 
          
    {
            
    res = analogRead(Ain)/4;  // читаем состояние регулятора яркости 
            
    for (i = 0; i < res; i++) { // зажигаем плавно подсветку до уровня //выбранной яркости 
             
    analogWrite(LED, i);        
            
    delay(30);  
              } 
           
    old_val = 1; 
         
    on = 1;  
          }   

      if ( 
    val == LOW  && old_val==1) //если подсветку выключаем 
        
    {
          
    res = analogRead(Ain)/4;  
           for (
    i = res; i > 0; i--) { // тушим плавно от уровня регулятора яркости //до нуля 
            
    analogWrite(LED, i); // set the LED brightness 
          
    delay(10);           // Wait 10ms 
          
    } 
         
    old_val = 0;
        
    analogWrite(LED, 0); 
        
    on = 0; 
        } 
        
       
    if(
    old_res < res and on ==1){
    for (
    i = old_res; i < res; i++) { // loop from 0 to 254 (fade in)
        
    analogWrite(LED, i);      // set the LED brightness
        
    delay(10); // Wait 10ms because analogWrite
                   // is instantaneous and we would
                   // not see any change  

    }

      }
       
    old_res = res; 
     } 


    Зесь есть не доработка!
    При регулировке яркости в "+" все работает корректно, но при регулировке в "-" идут траблы.
    Причина, в отсудствии регулировок в низ. Для устранения необходимо перед строкой

    " old_res = res; "

    дописать

    if(old_res > res and on ==1){
    for (i = old_res; i > res; i--) { // loop from 0 to 254 (fade in)
    analogWrite(LED, i); // set the LED brightness
    delay(10);
    }
    }
    Последний раз редактировалось Karas; 07.03.2011 в 04:28.

  8. #8
    Новичок
    Регистрация
    09.07.2010
    Возраст
    52
    Сообщений
    6
    Вес репутации
    202

    По умолчанию Re: Управление подсветкой приборки.

    Зесь есть не доработка!
    При регулировке яркости в "+" все работает корректно, но при регулировке в "-" идут траблы.
    Причина, в отсудствии регултровок в низ. Для устранения необходимо перед строкой
    " old_res = res; "
    дописать
    if(old_res > res and on ==1){
    for (i = old_res; i > res; i--) { // loop from 0 to 254 (fade in)
    analogWrite(LED, i); // set the LED brightness
    delay(10); // Wait 10ms because analogWrite
    // is instantaneous and we would
    // not see any change

    }
    }

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

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

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

Ваши права

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