Почему не моргают диоды?

Тема в разделе "Флудилка", создана пользователем Fartovjy, 21 сен 2017.

  1. Fartovjy

    Fartovjy Нуб

    Код (C++):
    #include <TroykaGPS.h>
    #include <uartDevice.h>


    int rele_left = 11;           // Реле левого клапана на 11-й ножки
    int rele_right = 12;          // Реле правого клапана на 12-й ножки

    // создаём объект класса GPS и передаём в него объект Serial1
    GPS gps(Serial1);
    // задаём размер массива для времени, даты, широты и долготы
    #define MAX_SIZE_MASS 16
    // массив для хранения текущего времени
    char time[MAX_SIZE_MASS];
    // массив для хранения текущей даты
    char date[MAX_SIZE_MASS];
    // массив для хранения широты в градусах, минутах и секундах
    char latitudeBase60[MAX_SIZE_MASS];
    // массив для хранения долготы в градусах, минутах и секундах
    char longitudeBase60[MAX_SIZE_MASS];

    void setup()
    {

      pinMode(rele_left, OUTPUT);  // Реле левого клапана на 11-й ножки
      pinMode(rele_right, OUTPUT); // Реле правого клапана на 12-й ножки

      // открываем последовательный порт для мониторинга действий в программе
      Serial.begin(115200);
      // ждём, пока не откроется монитор последовательного порта
      // для того, чтобы отследить все события в программе
      while (!Serial) {
      }
      Serial.print("Serial init OK\r\n");
      // открываем Serial-соединение с GPS-модулем
      Serial1.begin(115200);
     
    }
    void loop()
    {
     
          digitalWrite(rele_left, HIGH);
          digitalWrite(rele_right, HIGH);
          delay (1000);
         
          digitalWrite(rele_left, LOW);
          digitalWrite(rele_right, LOW);
          delay (1000);

          // считываем состояние GPS-модуля
      switch(gps.getData()) {
        // всё OK
        case GPS_OK:
          Serial.println("GPS is OK");
          // выводим координаты широты и долготы
          // 1. в градусах, минутах и секундах
          // 2. градусах в виде десятичной дроби
          Serial.println("GPS Coordinates: ");
          gps.getLatitudeBase60(latitudeBase60, MAX_SIZE_MASS);
          gps.getLongitudeBase60(longitudeBase60, MAX_SIZE_MASS);
          Serial.print("Latitude\t");
          Serial.print(latitudeBase60);
          Serial.print("\t\t");
          Serial.println(gps.getLatitudeBase10(), 6);
          Serial.print("Longitude\t");
          Serial.print(longitudeBase60);
          Serial.print("\t\t");
          Serial.println(gps.getLongitudeBase10(), 6);
          // выводим количество видимых спутников
          Serial.print("Sat: ");
          Serial.println(gps.getSat());
          // выводим текущую скорость
          Serial.print("Speed: ");
          Serial.println(gps.getSpeedKm());
          // выводим высоту над уровнем моря
          Serial.print("Altitude: ");
          Serial.println(gps.getAltitude());
          // выводим текущее время
          Serial.print("Time: ");
          gps.getTime(time, MAX_SIZE_MASS);
          gps.getDate(date, MAX_SIZE_MASS);
          Serial.write(time);
          Serial.println();
          // выводим текущую дату
          Serial.print("Date: ");
          Serial.write(date);
          Serial.println("\r\n");
          // каждую переменную дату и времени можно выводить отдельно
    /*    Serial.print(gps.getHour());
          Serial.print(gps.getMinute());
          Serial.print(gps.getSecond());
          Serial.print(gps.getDay());
          Serial.print(gps.getMonth());
          Serial.print(gps.getYear());
    */
     
          break;
        // ошибка данных
        case GPS_ERROR_DATA:
          Serial.println("GPS error data");
          break;
        // нет соединение со спутниками
        case GPS_ERROR_SAT:
          Serial.println("GPS no connect to satellites");
          break;
      }
     
    }
     
  2. Fartovjy

    Fartovjy Нуб

    Что интересно, без GPS всё работает.
     
  3. NikitOS

    NikitOS Король шутов Администратор

    В заголовке темы нужно было просто писать'' почему
     
  4. Karabas

    Karabas Гик

    [​IMG]
     
    Fartovjy и NikitOS нравится это.
  5. Fartovjy

    Fartovjy Нуб

    Вот так у нас во всём.
     
  6. Fartovjy

    Fartovjy Нуб

    Нашел. Не заметил строку "Ожидание открытия порта"
     
  7. DIYMan

    DIYMan Guest

    Подозреваю, что gps.getData() - блокирующая, и ждёт, пока там что-то не поступит. Соответственно, в ней висеть будет до получения данных, следовательно - светодиоды моргать не будут, т.к. нет новой итерации вызова loop.
     
  8. ostrov

    ostrov Гуру

    GPS передает данные односторонним потоком сознания данных по UART, которые следует парсить для извлечения нужных данных. Саму процедуру приема/расшифровки хорошо бы сделать независающей, на случай если данные не приедут или придут с ошибками. Все это делается вручную без подозрительных библиотек.