SHARP GP2Y0A021 10-80cm

Тема в разделе "Arduino & Shields", создана пользователем <Lame>, 26 янв 2013.

  1. <Lame>

    <Lame> Гик

    Ктонибудь создавал скетч для преобразования raw данных с этого сенсора в сантиметры?
    Помогите плиз, надо очень!
     
  2. Unixon

    Unixon Оракул Модератор

    В даташите на сенсор есть таблица. Забиваете ее в код, добавляете линейную интерполяцию и пользуетесь.
     
  3. <Lame>

    <Lame> Гик

    Спасибо, а то я сам что-то не догадался в дата shit-е посмотреть:)
     
  4. Dmitriy Kunin

    Dmitriy Kunin Гик

    Код (Text):
    int IRpin = 1;                                  // analog pin for reading the IR sensor
    void setup() {
      Serial.begin(9600);                           // start the serial port
    }
    void loop() {
      float volts = analogRead(IRpin)*0.0048828125;  // value from sensor * (5/1024) - if running 3.3.volts then change 5 to 3.3
      float distance = 65*pow(volts, -1.10);          // worked out from graph 65 = theretical distance / (1/Volts)S - luckylarry.co.uk
      Serial.println(distance);                   // print the distance
      delay(100);                                   // arbitary wait time.
    }
     
  5. <Lame>

    <Lame> Гик

    Спасибо, не надо, я уже сам давно сделал!
    Код (Text):

    int irPin = A2;
    int currentDist = 0;
    int distMetr = 0;
     
     
     
    void setup()
     
    {
     
      pinMode (irPin, INPUT);
     
      Serial.begin(9600);
     
    }
     
     
     
    void loop()
     
    {
     
      currentDist = analogRead(irPin);         //данные с датчика
     
      int i = constrain(currentDist, 40, 650);   //ограничиваем диапазон выдаваемых значений
     
      int z = (6787/(i-3))-4;                   //невероятная формула (Интернет)
     
      int distMetr = constrain(z, 10, 80);     //задаем ограничения по реальному диапазону
     
                                                 //во избежании ошибочных данных
     
       
     
      Serial.println(distMetr);               //вывод на экран для наглядности
     
     
     
       
     
     delay(500);
     
    }