Светодиод и переменный резистор.

Тема в разделе "Arduino & Shields", создана пользователем varvik85, 8 май 2015.

  1. varvik85

    varvik85 Нерд

    Здравствуйте дяденьки и тетеньки)Может кто подскажет начинающему?)
    Стоит задача:
    Считывать значение с аналогового входа к которому подключен потенциометр.
    Когда напряжение на этом входе доходит до нужного интервала значений - включить светодиод.
    если нет то опрашивать дальше.
    Интервал значений напряжений расположить допустим от 3 до 4 вольт,если в этом интервале появляется напряжение то включить светодиод.
    Немного не пойму как задать этот интервал чисел с которым я буду сравнивать переменную аналогового входа,создать массив с числами или как?
    Заранее благодарен,жму руку:)
     
    Последнее редактирование: 8 май 2015
  2. vvr

    vvr Инженерище

    Малыш, для этого есть функция map
    Код (Text):
    int val = analogRead(A0);
    val = map(val, 0, 1023, 0, 5);

    if(val > 3 && val <4)
    {
      digitalWrite(led, HIGH);
    }
    else
    {
      digitalWrite(led, LOW);
    }
     
     
    varvik85 нравится это.
  3. varvik85

    varvik85 Нерд

    :)Большое большое спасибо!
    Если сделать преобразование в самом начале программы void setup ,то какая будет область видимости val? в любом loop?в любой области программы будут уже конвертированные значения?А если мне нужно создать несколько конвертированных значений,допустим от 0до5 и от 100 до 255,и нужно чтоб эти значения хранились в разных переменных например bute znachenie1 и bute znachenie2,как присвоить конвертированным значениям переменную?причем чтоб эти переменные были видны везде в программе,а не только в каком то частном цикле?Чтоб каждый раз не делать преобразования,а просто вызывать нужную переменную?

    int val = analogRead(A0);
    void setup() {
    val = map(val, 0, 1023, 0, 5);
    pinMode(13, OUTPUT);
    }

    void loop() {

    if (val > 3 && val <4)
    {
    digitalWrite(13, HIGH);
    }
    else
    {
    digitalWrite(13, LOW);
    }

    }
     
  4. vvr

    vvr Инженерище

    сетап выполняется только один раз в начале программы, если туда поместить обработку потенциометра, то в цикле будет только начальное значение.
    вы мечтаете одним потом менять две переменные?
     
  5. varvik85

    varvik85 Нерд

    да,так можно?вроде так код будет компактнее,или после в процессе компилирования будет больше весить?
     
  6. vvr

    vvr Инженерище

    Код (Text):
    int val = analogRead(A0);
    int val1;
    int val2;
    val1 = map(val, 0, 1023, 0, 5);
    val2 = map(val, 0, 1023, 0, 255);
     
    varvik85 нравится это.
  7. varvik85

    varvik85 Нерд

    Спасибо!