?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | 센서값을 이용한 이동평균함수 산출 질문입니다.

페이지 정보

작성자 타우린이필요해 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일17-02-24 17:04 조회863회 댓글1건

본문

센서값을 받을때 밑의 코딩과 유사하게 쓰고 있습니다.

예를들어 이코딩 안에 계산된 force값을 바로 이어서 이동평균 함수로 내고싶은데 

혹시 이 loop가 끝나고 이어서 또 다른 loop를 쓰는 방법은 없는지 

이동평균 함수를 이 구조에서 force값을 어떻게 불러와서 위치 시킬지 감이 잘 잡히지 않습니다.

const int FSR_PIN = A0; // Pin connected to FSR/resistor divider

 

// Measure the voltage at 5V and resistance of your 3.3k resistor, and enter

// their value's below:

const float VCC = 4.98; // Measured voltage of Ardunio 5V line

const float R_DIV = 3230.0; // Measured resistance of 3.3k resistor

 

void setup() 

{

  Serial.begin(9600);

  pinMode(FSR_PIN, INPUT);

}

 

void loop() 

{

  int fsrADC = analogRead(FSR_PIN);

  // If the FSR has no pressure, the resistance will be

  // near infinite. So the voltage should be near 0.

  if (fsrADC != 0) // If the analog reading is non-zero

  {

    // Use ADC reading to calculate voltage:

    float fsrV = fsrADC * VCC / 1023.0;

    // Use voltage and static resistor value to 

    // calculate FSR resistance:

    float fsrR = R_DIV * (VCC / fsrV - 1.0);

    Serial.println("Resistance: " + String(fsrR) + " ohms");

    // Guesstimate force based on slopes in figure 3 of

    // FSR datasheet:

    float force;

    float fsrG = 1.0 / fsrR; // Calculate conductance

    // Break parabolic curve down into two linear slopes:

    if (fsrR <= 600) 

      force = (fsrG - 0.00075) / 0.00000032639;

    else

      force =  fsrG / 0.000000642857;

    Serial.println("Force: " + String(force) + " g");

    Serial.println();

 

    delay(500);

  }

  else

  {

    // No pressure detected

  }

}

[출처] [아두이노 강좌] 압력 센서 저항(Force Sensitive Resistor) 아두이노와 사용하기|

 

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

loop() 는 아두이노가 동작하는 메인 루프입니다. 따라서 loop()는 영원히 반복됩니다.
loop() 가장 마지막에 for/while 반복문을 이용해서 원하시는 평균 작업을 추가하시면 됩니다.