IOT再びーーーESP32編(7)ーーーESP32への移植-A0221AT

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刻みでうごかしています。