

このプログラムでgpsで位置情報を取得した後、ラジコンをまっすぐ走らせるというプログラムを作りたいのですが、どうしたらよいかわかりません。  
現在はこのコードでエラーが発生します。  
マイコンはesp-32を使用しており、開発環境はarduinoです。

[code]

    volatile int gps_hh;          // GPSの時
    volatile int gps_mm;          //　分
    volatile int gps_ss;          //　秒
    volatile int gps_dd;
    volatile int gps_MM;
    volatile int gps_yy;
    volatile int GPS_OK = 0;
    const int TD = 9;             //　UTC+9時間
    
    int RC_Motor_Pin = 26;
    int RC_Sarvo_Pin = 27;
    
    void setup()
    {
      // シリアルポート開始
      Serial.begin(115200);
      Serial2.begin(9600); // GPSとのシリアル通信
      //Serial3.begin(115200);
      GPS_INIT();          // GPSの設定(GPZDAのみ取得)
     
     
    }
    
    void loop() {
      GPS_function();
    }
    
    // GPGGA
    // 0----5---10---15---20---25---30---35---40---45---50---55---60---65---70-
    // $GPGGA,015850.00,3543.51555,N,13926.84251,E,1,07,1.26,76.8,M,39.0,M,,*61
    
    // GPZDA
    // 0----5---10---15---20---25---30---35
    // $GPZDA,065601.00,25,03,2021,00,00*67
    void GPS_function() {
      //if (Serial1.available()) {
      if (Serial2.available()) {
        String nmea_gga = Serial2.readStringUntil('\n');  // GPGGAのセンテンス取得
        String nmea_zda = Serial2.readStringUntil('\n');  // GPZDAのセンテンス取得
        String nmeames_gga = nmea_gga.substring(0, 6);    // $GPGGA
        String nmeames_zda = nmea_zda.substring(0, 6);    // $GPZDA
        
        if ( nmeames_zda.equals("$GPZDA") ) { // get UTC
          if (nmea_zda.length()==37){         // 異常出力抑制　※厳密にはチェックサム確認
            Serial.println("");
            String shh = nmea_zda.substring(7, 9);
            String smm = nmea_zda.substring(9, 11);
            String sss = nmea_zda.substring(11, 13);
            String ddd = nmea_zda.substring(17, 19);
            String MMM = nmea_zda.substring(20, 22);
            String yyy = nmea_zda.substring(23, 27);
            gps_hh = (shh.toInt() + TD) % 24; // Timezone offset+
            gps_mm = smm.toInt();
            gps_ss = sss.toInt();
            gps_dd = ddd.toInt();
            gps_MM = MMM.toInt();
            gps_yy = yyy.toInt();
            GPS_OK=1;
            Serial.print("GPS >> ");
            Serial.print(gps_yy);
            Serial.print("/");
            Serial.print(gps_MM);
            Serial.print("/");
            Serial.print(gps_dd);
            Serial.print(" ");
            Serial.print(gps_hh);
            Serial.print(":");
            Serial.print(gps_mm);
            Serial.print(":");
            Serial.println(gps_ss);
          }
        }
        else{
          Serial.println("GPZDAが来ないぞ！");
        }
    
        if ( nmeames_gga.equals("$GPGGA") ) {   // 衛星の数取得
          if (nmea_gga.length()==73){         // 異常出力抑制　※厳密にはチェックサム確認
            String satellite = nmea_gga.substring(46, 48);
    //        Serial.println(nmea_gga);
            Serial.print("衛星の数: ");
            Serial.println(satellite);
          }
        }
        else{
          Serial.println("GPGGAが来ないぞ！");
        }
      }
      else {
    //    Serial.println("受け取れてないな...");
    }
          if (Serial2.available()) {
            if(gps_mm() > 35.65){
              analogWrite(RC_Motor_Pin, 86)
              analogWrite(RC_Sarvp_Pin, 85)
            }
            else{
              analogWrite(RC_Motor_Pin, 89)
              analogWrite(RC_Sarvp_Pin, 85)
            }
            else{
              analogWrite(RC_Motor_Pin, 89)
              analogWrite(RC_Sarvp_Pin, 85)
            }
          }
       
    }
    
[/code]


CC BY-SA 4.0
2023-01-26T19:48:29.040
93576
2023-01-27T01:30:29.487
2023-01-27T01:30:29.487
3060
56772
question
arduino gps
gpsで位置情報を取得した後ラジコンを走らせるプログラムを作りたい