0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Arduinoで接触位置+感圧センサ(FSLP)を使った時のメモ

Last updated at Posted at 2024-06-05

SwitchScienceで販売されていた直線型接触位置+感圧センサ(FSLP)をArduinoで使った時のメモです。

FSLP

プログラム

販売元のPololuからセンサとLEDテープを使ったサンプルプログラムが出ているので、LEDテープの部分を除いて使用する。

const int fslpDriveLine1 = 8;
const int fslpDriveLine2 = A3;
const int fslpSenseLine = A2;
const int fslpBotR0 = 9;

void setup() {
  Serial.begin(9600);
}
void loop() {
  int pressure, position;
  pressure = fslpGetPressure();
  if (pressure == 0) position = 0;
  else position = fslpGetPosition();

  Serial.print("pressure     ");
  Serial.print(pressure);
  Serial.print("   position     ");
  Serial.println(position);
}

int fslpGetPosition() {
  pinMode(fslpSenseLine, OUTPUT);
  digitalWrite(fslpSenseLine, LOW);
  pinMode(fslpDriveLine1, OUTPUT);
  digitalWrite(fslpDriveLine1, LOW);
  pinMode(fslpDriveLine2, OUTPUT);
  digitalWrite(fslpDriveLine2, LOW);
  pinMode(fslpBotR0, OUTPUT);
  digitalWrite(fslpBotR0, LOW);
  digitalWrite(fslpDriveLine1, HIGH);
  pinMode(fslpBotR0, INPUT);
  pinMode(fslpSenseLine, INPUT);
  delayMicroseconds(10);
  analogReset();
  return analogRead(fslpSenseLine);
}

int fslpGetPressure() {
  pinMode(fslpDriveLine1, OUTPUT);
  digitalWrite(fslpDriveLine1, HIGH);
  pinMode(fslpBotR0, OUTPUT);
  digitalWrite(fslpBotR0, LOW);
  pinMode(fslpSenseLine, INPUT);
  pinMode(fslpDriveLine2, INPUT);
  delayMicroseconds(10);
  analogReset();
  int v1 = analogRead(fslpDriveLine2);
  analogReset();
  int v2 = analogRead(fslpSenseLine);
  if (v1 == v2) return 32 * 1023;
  return 32 * v2 / (v1 - v2);
}

void analogReset() {
#if defined(ADMUX)
#if defined(ADCSRB) && defined(MUX5)
  ADCSRB |= (1 << MUX5);
#endif
  ADMUX = 0x1F;
  ADCSRA |= (1 << ADSC);
  loop_until_bit_is_clear(ADCSRA, ADSC);
#endif
}

配線

販売元サイトに載っているこの画像を元に配線する。
FSLP

D1 : 8pin
D2 : A3
SL : A2 (4.7kΩ→9pin)

スクリーンショット 2024-06-05 13.00.39.png

結果

センサをタッチしている強さと、タッチ位置が計測できた。感圧は軽く触った時と強く押した時で値の変化がみれるが、タッチ位置は先端から中間くらいまでは値の変化が見られるが、中間から末端くらいまでは1000を行ったり来たりであまり制度は良くなさそうだった。

ある程度のタッチ位置と、感圧なら取れるって感じの印象でした。

スクリーンショット 2024-06-05 13.17.36.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?