A0221ATのセンサーを ESP32 用に移植していました。何度書き換えても,思ったようにうごきませんでし
た。でもある HP の記載を見て,スケッチを変更したらやっと動きました。
いろんな方の HP で,シリアル通信(UART)にデフォルトで使えるピンの説明がありその通りにしていた
のですが,動きませんでした。「デフォルト」ということで,何もしなくてもいいのかと思っていました。
ある方のHPのように
Serial2.begin(9600);→→→→→→Serial2.begin(9600,SERIAL_8N1,16,17);
のように,使うピンを明示してやっと動作しました。
不要な部分を取り除いて,esp32に移植しとりあえず動くようにしたスケッチです。
byte hdr, data_h, data_l, chksum;
unsigned int distance;
void setup() {
// initialize both serial ports:
Serial.begin(9600);
Serial2.begin(9600,SERIAL_8N1,16,17);
}
void loop() {
Serial2.write("1");
if (Serial2.available())
{
hdr = (byte)Serial2.read();
if (hdr == 255){
data_h = (byte)Serial2.read();
data_l = (byte)Serial2.read();
chksum = (byte)Serial2.read();
if (chksum == ((hdr + data_h + data_l)&0x00FF)){
distance = data_h * 256 + data_l;
Serial.print(distance, DEC);
Serial.println(" mm");
}
}
}
delay(100);
}
はっきりしませんが,メジャーで,だいたいの距離をとりながら,測定させています。手で持っているので,
数字が安定しませんが,ほぼほぼ正確な距離をだしています。
始め,
センサーが天井をむいていたので,2000とかの数字ですが,
なおしてから10cm-20cm-30cmと10cm刻みでうごかしています。