Могу ли я объединить ультразвуковой датчик и GPS вместе?
Мне нужно управлять двумя разными датчиками с помощью Arduino UNO: модулем GPS и ультразвуковым датчиком. Мне удалось запустить каждую из них по отдельности, и я не знаю, как манипулировать кодом;
МОДУЛЬ GPS
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
// Объект TinyGPS++
TinyGPSPlus gps;
// Последовательное соединение с устройством GPS
SoftwareSerial ss(RXPin, TXPin);
void setup()
{
Serial.begin(9600);
ss.begin(GPSBaud);
}
void loop()
{
// Этот скетч отображает информацию
// каждый раз, когда новое предложение правильно закодировано.
while (ss.available() > 0)
{
gps.encode(ss.read());
if (gps.location.isUpdated())
{
Serial.print("Latitude= ");
Serial.print(gps.location.lat(), 6);
Serial.print(" Longitude= ");
Serial.println(gps.location.lng(), 6);
}
}
}
УЛЬТРАЗВУКОВОЙ ДАТЧИК
// определяет номера пинов
const int trigPin = 9;
const int echoPin = 10;
// определяет переменные
long duration;
int distance;
void setup()
{
pinMode(trigPin, OUTPUT); // Устанавливает тригПин как Выход
pinMode(echoPin, INPUT); // Устанавливает echoPin в качестве входа
Serial.begin(9600); // Запускает последовательную связь
}
void loop()
{
// Очищает триггер
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Устанавливает тригпин в состояние HIGH на 10 микросекунд
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Считывает echoPin, возвращает время прохождения звуковой волны в микросекундах
duration = pulseIn(echoPin, HIGH);
// Расчет расстояния
distance= duration*0.034/2;
// Печатает расстояние на последовательном мониторе
Serial.print("Distance: ");
Serial.println(distance);
}
@Afiq Azmii, 👍-1
1 ответ
▲ 1
Это просто. У меня нет возможности попробовать. Но если ваш код работал, это тоже будет. (Просто скопируйте/вставьте.) Мне пришлось заменить цикл while на блок if, потому что я не был уверен, блокируется ли блок while в течение более длительного времени. Могло быть и то, что GPS шлет, шлет и шлет... Вот бы заблокировать ультразвуковой датчик.
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 9600;
// Объект TinyGPS++
TinyGPSPlus gps;
// Последовательное соединение с устройством GPS
SoftwareSerial ss(RXPin, TXPin);
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;
void setup()
{
Serial.begin(9600);
ss.begin(GPSBaud);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop()
{
// Этот скетч отображает информацию
// каждый раз, когда новое предложение правильно закодировано.
if (ss.available() > 0)
{
gps.encode(ss.read());
if (gps.location.isUpdated())
{
Serial.print("Latitude= ");
Serial.print(gps.location.lat(), 6);
Serial.print(" Longitude= ");
Serial.println(gps.location.lng(), 6);
}
}
// Очищает триггер
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Устанавливает тригпин в состояние HIGH на 10 микросекунд
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Считывает echoPin, возвращает время прохождения звуковой волны в микросекундах
duration = pulseIn(echoPin, HIGH);
// Расчет расстояния
distance= duration*0.034/2;
// Печатает расстояние на последовательном мониторе
Serial.print("Distance: ");
Serial.println(distance);
}
,
@Peter Paul Kiefer
Смотрите также:
- GPS-модуль uBlox Neo 6M не отвечает
- TinyGPS не дает долготу, широту и другие данные
- последовательная передача данных на GPS-экране duinopeak
- GPS-модуль не работает с датчиком
- Модуль GPS выводит вопросительные знаки в последовательном окне
- Neo 6m выводит что-то, что я как нуб не могу понять
- Получение «Открыть сбой питания GPS» на модуле SIM808
- Arduino Uno R3 не работает с Сайтроном экран GPS 53
Спасибо за ваш ответ и помощь, сэр. Но у меня есть некоторые проблемы с выводом. Координата gps не показывает, @Afiq Azmii
@AfiqAzmii Я показал вам, как объединить два скетча. Это то, о чем вы просили. Я не могу вам сказать, почему это не работает, потому что я ничего не знаю о настройке. Я не вижу фотографий вашего проекта и проводки, и у меня нет ссылки на документацию обоих датчиков. Я даже не знаю, какой из них вы используете. Вы мне тоже не сказали, корректно ли работает датчик расстояния. Поскольку это совершенно новый вопрос, было бы лучше добавить новый вопрос или обновить старый. Если вы добавите всю информацию, которую я просил, у кого-то или у меня будет больше шансов помочь вам., @Peter Paul Kiefer
Я видел, что вы уже задали новый вопрос. Я смотрю на это., @Peter Paul Kiefer