Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14
  1. #1
    Пользователь
    Регистрация
    18.04.2012
    Сообщений
    26
    Вес репутации
    184

    По умолчанию Указатели ТОЖ и УТ на ардуино.

    Пытаюсь внедрить панель приборов от другого автомобиля в свой.
    В процессе испытаний выяснилось несоответствие показаний датчика температуры охлаждающей жидкости и датчика уровня топлива. В этой панели индикаторы ТОЖ и УТ сделаны на логометрах, которыми управляет микроконтроллер ШИМ-ом через мосфеты. Решил передать функцию управления логометрами своему контроллеру на ардуино. Он же управляет светодиодом недостаточного уровня топлива.
    Все вроде как работает, и с ТОЖ видимых проблем нет, а вот стрелка уровня топлива постоянно скачет вместе с плесканием топлива в баке.
    Понятно что надо сделать сглаживание, но знаний и умений не хватает.
    На сколько я понимаю нужно делать несколько измерений в течение определенного времени, складывать их результаты и делить на количество измерений. Помогите написать такой скетч. Может у кого есть готовый алгоритм?

    Вот то что пока есть:
    PHP код:
    int sensePin = 0;
    int ledPin = 6;
    int sensePin2 = 2;
    int ledPin2 = 5;
    int dut = 8;
     
    void setup()
    {
      
    TCCR0B = TCCR0B & 0b11111000 | 2;
      
    pinMode(ledPin, OUTPUT);
      
    pinMode(ledPin2, OUTPUT);
      
    pinMode(dut, OUTPUT);
      
    int dut = LOW;
    }
    void loop()
    {
      
    int val = analogRead(sensePin);
      
    val = constrain(val, 45, 540);
      
    int val2 = analogRead(sensePin2);
      
    val2 = constrain(val2, 150, 988);
      
    int ledLevel = map(val, 45, 540, 0, 200);
      
    int ledLevel2 = map(val2, 150, 988, 30, 230);
      
    analogWrite(ledPin, ledLevel);
      
    analogWrite(ledPin2, ledLevel2);
      if (
    val > 435)
     {
      
    digitalWrite(dut, HIGH);
     }
      else
     {
      
    digitalWrite(dut, LOW);
      } 
     } 

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

    По умолчанию Re: Указатели ТОЖ и УТ на ардуино.

    Количество замеров можно увеличивать
    Смотри пример:
    PHP код:
    val = analogRead(sensePin);
    delay(100);
    val = val+analogRead(sensePin);
    delay(100);
    val = val+analogRead(sensePin);
    val=val/3; 

  3. #3
    Пользователь
    Регистрация
    18.04.2012
    Сообщений
    26
    Вес репутации
    184

    По умолчанию Re: Указатели ТОЖ и УТ на ардуино.

    То есть если я хочу делать скажем 10 измерений нужно 9 раз повторить операцию:
    delay(100);
    val = val+analogRead(sensePin);

    и потом разделить val на 10?

    А покороче это нельзя записать как нибудь? В виде цикла

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

    По умолчанию Re: Указатели ТОЖ и УТ на ардуино.

    Лучше конечно сделать вычисление циклом

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

    По умолчанию Re: Указатели ТОЖ и УТ на ардуино.

    Вот так нормально?
    PHP код:
    int val = analogRead(sensePin); 
    val = constrain(val, 45, 540); 

    int var = 1; 
    if (var < 
    10)
    {
        
    delay(100); 
        
    val = val+analogRead(sensePin); 
         var++;
    }
    val=val/10;

    int ledLevel = map(val, 45, 540, 0, 200);
    analogWrite(ledPin, ledLevel); 

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

    По умолчанию Re: Указатели ТОЖ и УТ на ардуино.

    Я бы использовал цикл FOR, но и так тоже можно

  7. #7
    Пользователь
    Регистрация
    18.04.2012
    Сообщений
    26
    Вес репутации
    184

    По умолчанию Re: Указатели ТОЖ и УТ на ардуино.

    Спасибо большое
    В воскресенье попробую на машине

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

    По умолчанию Re: Указатели ТОЖ и УТ на ардуино.

    У тебя ошибка в скетче
    Var перед IF всегда будет равен единице

  9. #9
    Пользователь
    Регистрация
    18.04.2012
    Сообщений
    26
    Вес репутации
    184

    По умолчанию Re: Указатели ТОЖ и УТ на ардуино.

    а как правильно написать? так лучше?

    PHP код:
    int val = analogRead(sensePin);  
    val = constrain(val, 45, 540); 
    for (
    int var=0; var < 10; var++)
    {
        
    delay(100);  
        
    val = val+analogRead(sensePin);
    }
    val=val/10; 
    int ledLevel = map(val, 45, 540, 0, 200); 
    analogWrite(ledPin, ledLevel); 
    Последний раз редактировалось ma1ex; 14.05.2012 в 12:22.

  10. #10
    Пользователь
    Регистрация
    18.04.2012
    Сообщений
    26
    Вес репутации
    184

    По умолчанию Re: Указатели ТОЖ и УТ на ардуино.

    Проверил, при 10 измерениях все равно скачет, а вот при 100 уже нет, так пока и оставил

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Ваши права

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