STM32F767とGP2Y0A21YK(距離センサー)で6cmから80cmを求める。
目的
adcのテスト用
どうしてこうなったかは、6-10,10-20,20-80を参考
#include "mbed.h"
//アナログ入力の設定
//AnalogIn adc_vbat(A3); //PA_4
AnalogIn adc_vbat(A0); //767
//Serial pc(USBTX, USBRX); // tx, rx
Serial pc(SERIAL_TX, SERIAL_RX); //767
//Serial pc(PA_2, PA_3); //010
//Serial pc(PA_9, PA_10); //010
//RawSerial pc(PA_2, PA_3); //010
//赤外線距離センサー(GP2Y0A21YK)の電圧から距離を求める。
//Voltage //電圧
float ir_len(float Voltage)
{
float ir_length; //長さ
if (Voltage >= 0.0f && Voltage <= 0.4f) {Voltage = 0.4f;}
if (Voltage >= 3.12f && Voltage <= 5.0f) {Voltage = 3.12f;}
if (Voltage >= 0.4f && Voltage <= 1.3f ) { //80-20
ir_length = 1.0f/ ( 0.0125f + ( ( Voltage - 0.4f) * (0.0375f/0.9f) ) );
} else if (Voltage >= 1.3f && Voltage <= 2.3f ) { //20-10
ir_length = 1.0f/ ( 0.05f + ( ( Voltage - 1.3f) * 0.05f ) );
} else if (Voltage >= 2.3f && Voltage <= 2.75f) { //10-8
ir_length = 1.0f/ ( 0.1f + ( ( Voltage - 2.3f) * (0.025f/0.45f) ) );
} else if (Voltage >= 2.75f && Voltage <= 2.98f) { //8-7
ir_length = 1.0f/ ( 0.125f + ( ( Voltage - 2.75f) * (0.0179f/0.23f) ) );
} else if (Voltage >= 2.98f && Voltage <= 3.12f) { //7-6
ir_length = 1.0f/ ( 0.1429f + ( ( Voltage - 2.98f) * (0.0238f/0.14f) ) );
}//end if
//戻り値
return(ir_length);
} //ir_len
//メイン関数
int main()
{
float Voltage; //電圧
float ir_length; //長さ
//無限ループ
while(1){
//adcの読み込み 0から4096
int s = (adc_vbat.read_u16()>>4);
//d s = (4096/2)-1;
//d pc.printf(" -S=%d",s); //767
//電圧に変換 ex 3.300 -> 3300 mVを出力
s=(s*6600)>>13;
//s = 3300;
//d pc.printf("\t c=%d",s); //767
Voltage = (float)s / 1000.0f;
//d pc.printf("\t v=%f",Voltage); //767
//赤外線距離センサー(GP2Y0A21YK)の電圧から距離を求める。
ir_length = ir_len(Voltage);
//d pc.printf("\t l=%f",ir_length); //767
//d pc.printf("\r\n"); //767 リターン
//距離の出力
pc.printf("%f\r\n",ir_length); //767
wait_ms(1000);
}//while
}//main
Author And Source
この問題について(STM32F767とGP2Y0A21YK(距離センサー)で6cmから80cmを求める。), 我々は、より多くの情報をここで見つけました https://qiita.com/caa45040/items/1f4ec040251a0ab3ccf0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .