Я работаю на 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.
Есть ли решение этой проблемы?