перенес с SoftwareSerial - перестает работать
- Войдите на сайт для отправки комментариев
Втр, 13/02/2018 - 16:39
в общем подключил ЖПС (библиотека TinyGPS)
через SoftwareSerial всё нормально работает
но я хочу использовать аппаратный Serial
соответственно подключаю на него ЖПС модуль
а в мониторе тишина....
даже из примера не работает
#include <TinyGPS.h>
//#include <SoftwareSerial.h>
TinyGPS gps;
// Дискретные пины, к которым подключен GPS skgps
//SoftwareSerial skgps(A1, A0); /*rx-tx*/
// Подключен к d0 - rx только (nano v3) от приемника взят tx
void setup(){
// Скорость работы с GPS модулем (для skgps 9600)
//skgps.begin(9600);
Serial.begin(9600);
// Выводим на экран текст о том, что идет поиск спутников
Serial.println("Find satellites");
Serial.println(" Please Wait ");
}
float latp, lonp; //для запоминания прошлых точек
float dist = 0; //путь
void loop(){
bool newData = false;
// Каждую секунду парсим GPS данные
for (unsigned long start = millis(); millis() - start < 1000;) {
while (Serial.available()){
char c = Serial.read();
if (gps.encode(c)) newData = true;
}
}
if (newData){
float lat, lon;
unsigned long age;
int year;
byte month, day, hour, minutes, second, hundredths;
// Получаем координаты
gps.f_get_position(&lat, &lon, &age);
// Получаем дату и время
gps.crack_datetime(&year, &month, &day, &hour, &minutes, &second, &hundredths, &age);
// Строка 1 - широта
Serial.print("Широта: ");
Serial.println(lat*10000000);
// стока 2 - долгота
Serial.print("Долгота: ");
Serial.println(lon*10000000);
// Строка 3 - скорость км/ч
Serial.print("Speed: ");
Serial.print(gps.f_speed_kmph());
Serial.println(" ");
// Строка 4 - количество спутников и высота в метрах
Serial.print("Спутников:");
Serial.println(gps.satellites());
Serial.print(" Высота:");
Serial.print(gps.f_altitude());
Serial.println(" ");
// Строка 5 - путь
//(float lat1, float long1, float lat2, float long2)
if(latp<1 || lonp<1 ) {latp=lat; lonp=lon; Serial.println("сброс ");}
dist=dist+gps.distance_between(lat,lon,latp,lonp);
Serial.print("Дистанция:"); Serial.print(lat);Serial.print(" ");Serial.print(lon); Serial.print(" ");Serial.print(latp); Serial.print(" ");Serial.print(lonp);Serial.print(" ");
Serial.println(gps.distance_between(lat,lon,latp,lonp));
Serial.println(dist);
latp=lat;
lonp=lon;
//dist = 0; //путь
// Строка 3 ' - дата
Serial.print("Дата:");
Serial.print(year);
Serial.print("-");
Serial.print(month);
Serial.print("-");
Serial.print(day);
Serial.println(" ");
// Строка 4 ' - время
Serial.print("Время:");
Serial.print(hour);
Serial.print(":");
Serial.print(minutes);
Serial.print(":");
Serial.print(second);
Serial.println(" ");
Serial.println(" ");
}
}
изза чего может не работать через аппаратный вход?
В комменатриях написано "nano v3", это правда? Если так, то у Вас на одном интерфейсе сидят и gps, и Serial.print. Они дерустя между собой, оттого и не работают толком.
это я предполагал, но что им драться? ведь мне с ЖПС надо принимать только а в порт только выводить....
можно это както разрулить на одном порте?
Вы хотите подключить к одному устройству UART два других (по крайней мере RX ардуины Вы намерены подключить сразу к двум TX разных устройств).
Почитайте описание физического протокола UART и подумайте, можно так или нет.
но мне не надо к компу - устройство 1 - жпс
но даже так оно не идет
или встенный на плату преобразователь ch340 мешает работе даже без поключения к пк?
ок тогда подскажите другое - можно ли в software serial задать только 1 порт ТХ? дабы не тратить впустую пин RХ
Поумолчанию, в самых распространенных библиотеках - нет.
1. Можно поискать реализацию библиотеки, где выпилино, что вам не нужно (встречал как-то).
2. Можно порыться в своей, и самому выпилить.
3. Протокол очень простой - можно реализовать самому (в проектах для ATtyni13 есть несколько реализаций, тоже в инетах надо покопать).
ясно, значит выпилю сам
я щас столкнулся с другой проблемой - как отформатировать карту памяти хотябы в ФАТ 16
и да, карта на 8мб.....
ясно, значит выпилю сам
я щас столкнулся с другой проблемой - как отформатировать карту памяти хотябы в ФАТ 16
"Закат Солнца вручную" - картина неизвестного автора :)
да вы сами попробуйте 8мб карту форматить - на ней даже фат 16 не лезит... максимум фат12 (другой карты не нашлось под рукой)
да вы сами попробуйте 8мб карту форматить - на ней даже фат 16 не лезит... максимум фат12 (другой карты не нашлось под рукой)
Поищи повнимательней, а ещё лучше - выкинь нахер эти новомодные штучки, и юзай перфокарты - в двадцать первом веке - самое то, стоят в одном ряду с карточкой на 8 мегабайт.
да вы сами попробуйте 8мб карту форматить - на ней даже фат 16 не лезит... максимум фат12 (другой карты не нашлось под рукой)
ELITE, файловая система fat16 поддерживает объем не более 2 Гбайт (недокументрованно - до 4 Гбайт).
Единственное, что можно посоветовать - создать в каком-нибудь подходящем софте образ карты 2 Гбайта и этим же софтом впихнуть его на карту, после чено эта карта будет видна в системе как 2-гигабайтная.
да вы сами попробуйте 8мб карту форматить - на ней даже фат 16 не лезит... максимум фат12 (другой карты не нашлось под рукой)
ELITE, файловая система fat16 поддерживает объем не более 2 Гбайт (недокументрованно - до 4 Гбайт).
Единственное, что можно посоветовать - создать в каком-нибудь подходящем софте образ карты 2 Гбайта и этим же софтом впихнуть его на карту, после чено эта карта будет видна в системе как 2-гигабайтная.
и да фат16 - до 32мб
а 2Гб - это фат32
Где ж Вы такую карту нашли?
Думал, опечатка и читать следует 8Гб.
Кстати, на разметку fat16 нужно не более 256 кб, так что на 8 Мб вполне влезет.
И вообще, при кластере 512 байт fat16 должна начинаться уже с 2 Мб.