Измерить сопротивление в 4 точках одновременно

Тема в разделе "Arduino & Shields", создана пользователем vovchik001, 7 сен 2016.

  1. vovchik001

    vovchik001 Нерд

    Камрады! Посоветуйте, как можно реализовать одновременное измерение сопротивления 4 резисторов, смысл в чем, когда в 4 измеряемых точках выставляется правильное сопротивление (например 10, 20, 30, и 40 ком) срабатывает реле и запускается вентилятор.
     
  2. qwone

    qwone Гик

    Допрос ТС уже длился целый час. То условия темы автор так и не рассказал.
     
  3. ostrov

    ostrov Гуру

    Протянуть 4 проводка к 4 пинам с АЦП и постоянно их опрашивать. При совпадении параметров запускать вентилятор. На Уно и Про Мини таких пинов 6 штук.
     
  4. yul-i-an

    yul-i-an Гик

    Вам еще придется фильтровать данные АЦП (или среднее брать), а то возможно из-за шумов ничего не получится.
    Примерно так примерно будет выглядеть
    Код (C++):
    int x0=0;
    int x1=0;
    int x2=0;
    int x3=0;

    void setup(){
      //тут настраиваем пин управления реле
    }

    void loop(){
      x0=getAnalog(0);
      x1=getAnalog(1);
      x2=getAnalog(2);
      x3=getAnalog(3);

      if (x0==10 && x1==20 && x2=30 && x3==40){//если(истина)
        //включаем реле
      }
      else//иначе
      {
        //выключаем реле
      }
    }

    //Функция получения срднего значения из 5 замеров
    int getAnalog(byte ch){//в функию передаем канал АЦП
      int result=0;
      for (int i=0; i < 5; i++){
        result+=analogRead(ch);//считываем АЦП
      }
      return result/5;//возвращаем среднее из 5 замеров
    }
     
  5. vovchik001

    vovchik001 Нерд

    А как этот код в ардуино уно записать? Там же нет функции getAnalog и синтаксис мне кажется другой?

     
  6. qwone

    qwone Гик

    Афтар ты жжош!
    yul-i-an функцию лучше написать выше setup().
     
  7. vovchik001

    vovchik001 Нерд

    Не жгу( я попробовал этот код скомпилить в arduinoide выдает ошибку, ну не получается самому разобраться(
    sketch_sep08a:16: error: lvalue required as left operand of assignment

    if (x0==10 && x1==20 && x2=30 && x3==40){//если(истина)


    exit status 1
    lvalue required as left operand of assignment
     
  8. Vad33

    Vad33 Капитан-оригинал

    Код (C++):
    && x2=30&&
    нужно

    Код (C++):
    && x2==30&&
     
  9. yul-i-an

    yul-i-an Гик

    Функции я обычно в других вкладках проекта пишу.
     
  10. yul-i-an

    yul-i-an Гик

    Вот исправленный код и конец LOOP`а обозначен чтобы видеть где основной цикл заканчиваеться и начинаются всякие доп функции.
    Код (C++):
    int x0=0;
    int x1=0;
    int x2=0;
    int x3=0;

    void setup(){
      //тут настраиваем пин управления реле
    }

    void loop(){
      x0=getAnalog(0);
      x1=getAnalog(1);
      x2=getAnalog(2);
      x3=getAnalog(3);

      if (x0==10 && x1==20 && x2==30 && x3==40){//если(истина)
        //включаем реле
      }
      else//иначе
      {
        //выключаем реле
      }
    }//END LOOP

    //Функция получения срднего значения из 5 замеров
    int getAnalog(byte ch){//в функию передаем канал АЦП
      int result=0;
      for (int i=0; i < 5; i++){
        result+=analogRead(ch);//считываем АЦП
      }
      return result/5;//возвращаем среднее из 5 замеров
    }