перенес с SoftwareSerial - перестает работать

ELITE
Offline
Зарегистрирован: 11.01.2018

в общем подключил ЖПС (библиотека 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("     ");
}

}

изза чего может не работать через аппаратный вход?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В комменатриях написано "nano v3", это правда? Если так, то у Вас на одном интерфейсе сидят и gps, и Serial.print. Они дерустя между собой, оттого и не работают толком.

ELITE
Offline
Зарегистрирован: 11.01.2018

это я предполагал, но что им драться? ведь мне с ЖПС надо принимать только а в порт только выводить....

можно это както разрулить на одном порте?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы хотите подключить к одному устройству UART два других (по крайней мере RX ардуины Вы намерены подключить сразу к двум TX разных устройств).

Почитайте описание физического протокола UART и подумайте, можно так или нет.

ELITE
Offline
Зарегистрирован: 11.01.2018

но мне не надо к компу - устройство 1 - жпс

но даже так оно не идет

или встенный на плату преобразователь ch340 мешает работе даже без поключения к пк?

 

ELITE
Offline
Зарегистрирован: 11.01.2018

ок тогда подскажите другое - можно ли в software serial задать только 1 порт ТХ? дабы не тратить впустую пин RХ

okta
Offline
Зарегистрирован: 10.01.2015

Поумолчанию, в самых распространенных библиотеках -  нет.

1. Можно поискать реализацию библиотеки, где выпилино, что вам не нужно (встречал как-то).

2. Можно порыться в своей, и самому выпилить.

3. Протокол очень простой - можно реализовать самому (в проектах для ATtyni13 есть несколько реализаций, тоже в инетах надо покопать).

ELITE
Offline
Зарегистрирован: 11.01.2018

ясно, значит выпилю сам

я щас столкнулся с другой проблемой - как отформатировать карту памяти хотябы в ФАТ 16

и да, карта на 8мб.....

b707
Offline
Зарегистрирован: 26.05.2017

ELITE пишет:

ясно, значит выпилю сам

я щас столкнулся с другой проблемой - как отформатировать карту памяти хотябы в ФАТ 16

 

"Закат Солнца вручную"  - картина неизвестного автора :)

ELITE
Offline
Зарегистрирован: 11.01.2018

да вы сами попробуйте 8мб карту форматить - на ней даже фат 16 не лезит... максимум фат12 (другой карты не нашлось под рукой)

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

ELITE пишет:

да вы сами попробуйте 8мб карту форматить - на ней даже фат 16 не лезит... максимум фат12 (другой карты не нашлось под рукой)

Поищи повнимательней, а ещё лучше - выкинь нахер эти новомодные штучки, и юзай перфокарты - в двадцать первом веке - самое то, стоят в одном ряду с карточкой на 8 мегабайт.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ELITE пишет:

да вы сами попробуйте 8мб карту форматить - на ней даже фат 16 не лезит... максимум фат12 (другой карты не нашлось под рукой)

ELITE, файловая система fat16 поддерживает объем не более 2 Гбайт (недокументрованно - до 4 Гбайт). 

Единственное, что можно посоветовать - создать в каком-нибудь подходящем софте образ карты 2 Гбайта и этим же софтом впихнуть его на карту, после чено эта карта будет видна в системе как 2-гигабайтная.

ELITE
Offline
Зарегистрирован: 11.01.2018

andriano пишет:

ELITE пишет:

да вы сами попробуйте 8мб карту форматить - на ней даже фат 16 не лезит... максимум фат12 (другой карты не нашлось под рукой)

ELITE, файловая система fat16 поддерживает объем не более 2 Гбайт (недокументрованно - до 4 Гбайт). 

Единственное, что можно посоветовать - создать в каком-нибудь подходящем софте образ карты 2 Гбайта и этим же софтом впихнуть его на карту, после чено эта карта будет видна в системе как 2-гигабайтная.

:) как вариант, вот только 8мб не хватает даже на разметку фат16, а вы предлагаете еще и разметку порезать

 

и да фат16 - до 32мб

а 2Гб - это фат32

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Где ж Вы такую карту нашли?

Думал, опечатка и читать следует 8Гб.

Кстати, на разметку fat16 нужно не более 256 кб, так что на 8 Мб вполне влезет.

И вообще, при кластере 512 байт fat16 должна начинаться уже с 2 Мб.