GO-AHEADの日記

GO-AHEADで出版した書籍の紹介をします

Re:50歳から始めるArduino UNO-14

Re:50歳から始めるArduino UNO

amazon kindleを出版しました。


 4.6 センサーの実験

(5)距離センサ-1(赤外線)
 距離センサには様々なセンサがありますが、ここでは、シャープの赤外線を利用した距離センサ(GP2Y0A21YK)を使用します。この距離センサは、超音波センサと違い、非線形な出力となりますので、プログラムで補正が必要になります。

 

f:id:GO-AHEAD:20201222102651p:plain

f:id:GO-AHEAD:20201222102702p:plain

 

f:id:GO-AHEAD:20201222102718p:plain

回路例(このセンサのケーブルの色に注意しましょう。)

f:id:GO-AHEAD:20201222102729p:plain

赤外線を発光している様子

5cm毎にグラフからデータを取り込んでいます。その間の電圧は、直線近似しましょう。

<プログラム>

void setup() {

Serial.begin( 9600 );

}

void loop() {
int i,n0;//A0 pin データ
float v;
float L_v[2][15]={{10,15,20,25,30,35,40,45,50,55,60,65,70,75,80},{2.55,1.65,1.35,1.10,0.95,0.85,0.75,0.70,0.65,0.575,0.5,0.475,0.45,0.44,0.425}};
float L=0;

n0=analogRead(A0);
v=float(n0)*5.0/1024;

if(v<=2.55 || v>=0.425){
//
for(i=1;i<15;i++){
if(L_v[1][i-1]>=v && L_v[1][i]<=v){
L=((L_v[1][i-1]-v)/(L_v[1][i-1]-L_v[1][i])*5+L_v[0][i-1]);
}
}
}
Serial.print("V=");
Serial.print(v);
Serial.print(",L=");
Serial.println(L); //改行付のprint
delay(1000);

}

このような出力になります。距離は大体計れているようです。物体が斜めになっていると計測が難しいときがあります。

 

f:id:GO-AHEAD:20201222102749p:plain