Ультразвуковой датчик US-100 c не может работать с GPS-модулем Beitian BN-880 - PullRequest
0 голосов
/ 10 апреля 2020

Я работаю на Arduino Uno.
Я объединяю модуль GPS с датчиком ультразвука c.
Я использую Beitian BN-880 в качестве GPS, и датчик US-100 Ultrasoni c.
Ниже приведен код.

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

#define echo 2
#define trigger 9

const int RXPin = 6, TXPin = 5;
const uint32_t GPSBaud = 9600;

int Data_US=0;

TinyGPSPlus gps;
SoftwareSerial ss(RXPin,TXPin);

void setup() {
  Serial.begin(9600);
  delay(500);
  ss.begin(9600);
  delay(1000);
  pinMode(echo, INPUT);
  pinMode(trigger, OUTPUT);
  delay(1000);
}

void loop() {
  show_distance();
  delay(1000);
}

void show_distance(){
  digitalWrite(trigger, LOW);
  delayMicroseconds(2);
  digitalWrite(trigger, HIGH);
  delayMicroseconds(5);
  digitalWrite(trigger, LOW);
  Data_US = 0;
  while (digitalRead(echo) == LOW){}
  while (digitalRead(echo) == HIGH){
    Data_US++;
    if (Data_US > 1000)
      break;
  }
  Serial.println(Data_US/10);
  delay(10);
}

Однако датчик ультразвука c каким-то образом выдает неверное значение расстояния в сочетании с модулем GPS.
Если я уберу строку ниже в функции настройки,
ss.begin(9600);
Ультразвуковой c датчик дает правильное значение расстояния.

У меня есть предположения, что тока электричества недостаточно для включения ультразвукового датчика c, поскольку я использую питание от своего ноутбука, но я не нашел никаких логических доказательств / документации по этому поводу. Или есть другая проблема внутри микроконтроллера, которая вызывает конфликты между SoftwareSerial, используемой в GPS и pinMode.

Есть ли решение этой проблемы?

...