1 (edited by scherban.alexey 2025-02-08 20:52:57)

Topic: Помогите пожалуйста поправить код

Доброго времени суток!!!

Недавно начал осваивать программирование, не могу разобраться с библиотекой ESP8266Ping.h помогите пожалуйста дополнить код возможностью пинговать подключенный WiFi выводить на эран показания пинга  в int8_t Ping и при высоком пинге (более 100) включать strings_01 (сообщение) и led_01 (индикатор)



ЗАРАНЕЕ ОЧЕНЬ СИЛЬНО БЛАГОДАРЕН!!!!


Вот скетч:

#define REMOTEXY_MODE__WIFI_CLOUD

// настройки соединения
#define REMOTEXY_WIFI_SSID "Xiaomi_A95D"
#define REMOTEXY_WIFI_PASSWORD "****"
#define REMOTEXY_CLOUD_SERVER "cloud.remotexy.com"
#define REMOTEXY_CLOUD_PORT 6376
#define REMOTEXY_CLOUD_TOKEN "*****"
#define REMOTEXY_ACCESS_PASSWORD "*******"

#include <SoftwareSerial.h>
#include <TinyGPS++.h>
#include <ESP8266WiFi.h>
#include <ESP8266Ping.h>

// Define the RX and TX pins for Software Serial 2
#define RX 12
#define TX 14

#define GPS_BAUD 9600

// The TinyGPS++ object
TinyGPSPlus gps;

// Create an instance of Software Serial
SoftwareSerial gpsSerial(RX, TX);

#include <RemoteXY.h>

// конфигурация интерфейса RemoteXY
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =  // 213 bytes
  { 255, 3, 0, 18, 0, 206, 0, 19, 0, 0, 0, 75, 97, 116, 101, 114, 0, 0, 1, 200,
    84, 1, 1, 13, 0, 5, 127, 7, 68, 68, 35, 1, 26, 31, 73, 3, 3, 7, 17, 4,
    128, 0, 2, 26, 0, 0, 0, 0, 0, 0, 200, 66, 0, 0, 0, 0, 67, 0, 61, 72,
    9, 78, 2, 26, 7, 67, 0, 73, 72, 9, 78, 2, 26, 7, 129, 1, 62, 30, 8, 64,
    2, 208, 168, 208, 184, 209, 128, 208, 190, 209, 130, 208, 176, 0, 129, 1, 74, 32, 8, 64,
    2, 208, 148, 208, 190, 208, 187, 208, 179, 208, 190, 209, 130, 208, 176, 0, 67, 0, 50, 72,
    9, 94, 2, 26, 129, 1, 51, 34, 8, 64, 2, 87, 105, 70, 105, 32, 100, 66, 109, 0,
    70, 82, 2, 20, 20, 16, 134, 37, 0, 1, 81, 54, 24, 24, 0, 187, 31, 82, 101, 98,
    111, 111, 116, 0, 72, 17, 1, 31, 31, 12, 166, 163, 2, 26, 0, 0, 0, 0, 0, 0,
    200, 66, 0, 0, 0, 0, 74, 72, 23, 42, 10, 9, 2, 0, 37, 67, 76, 111, 119, 32,
    115, 105, 103, 110, 97, 108, 0, 69, 103, 1, 7, 7, 1 };

// структура определяет все переменные и события вашего интерфейса управления
struct {

  // input variables
  int8_t joystick_01_x;  // oт -100 до 100
  int8_t joystick_01_y;  // oт -100 до 100
  uint8_t button_01;     // =1 если кнопка нажата, иначе =0

  // output variables
  float linearbar_01;  // oт 0 до 100
  float Lat;
  float Long;
  int8_t Ping;  // -128 .. 127
  uint8_t led_01;         // oт 0 до 1 индикатор низкого сигнала Wifi
  int8_t circularBar_01;  // oт 0 до 100 уровень сигнала строка
  uint8_t strings_01;     // oт 0 до 1 сообщение о низком сигнале Wifi
  int16_t sound_01;       // =0 нет звука, иначе ID звука, для примера 1001, смотри список звуков в приложении
 
    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0
  
  const char* domain = "Xiaomi_A95D";
  
} RemoteXY;
#pragma pack(pop)

/* определяем пины управления правым мотором */

#define PIN_MOTOR_RIGHT_UP D7  // на пин IN1
#define PIN_MOTOR_RIGHT_DN D8  // IN2
//#define PIN_MOTOR_RIGHT_SPEED D8 //ENA Удалить

/* определяем пины управления левым мотором */

#define PIN_MOTOR_LEFT_UP D3  // на пин IN3
#define PIN_MOTOR_LEFT_DN D4  // IN4
//#define PIN_MOTOR_LEFT_SPEED D3 //ENB Удалить

/* определяем пин управления светодиодом */

//#define PIN_LED D5

/* определяем два массива с перечислением пинов для каждого мотора */

unsigned char RightMotor[3] = { PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN };
unsigned char LeftMotor[3] = { PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN };

void Wheel(unsigned char* motor, int v)

{

  if (v > 100) v = 100;
  if (v < -100) v = -100;
  if (v > 0) {

    digitalWrite(motor[0], HIGH);
    digitalWrite(motor[1], LOW);
    //analogWrite(motor[2], v*2.55);

  }

  else if (v < 0) {

    digitalWrite(motor[0], LOW);
    digitalWrite(motor[1], HIGH);
    //analogWrite(motor[2], (-v)*2.55);

  }

  else {

    digitalWrite(motor[0], LOW);
    digitalWrite(motor[1], LOW);
    //analogWrite(motor[2], 0);
  }
}



void setup() {

  RemoteXY_Init();

  // Set WiFi to Station Mode ДЛЯ WIFI
  WiFi.mode(WIFI_STA);

  // для Wifi Connect to WiFi
  WiFi.begin(REMOTEXY_WIFI_SSID, REMOTEXY_WIFI_PASSWORD);
  RemoteXY_delay(10);
  // для Wifi Check if connected to WiFi
  while (WiFi.status() != WL_CONNECTED)
    RemoteXY_delay(500);


  /* инициализация пинов */

  pinMode(PIN_MOTOR_RIGHT_UP, OUTPUT);
  pinMode(PIN_MOTOR_RIGHT_DN, OUTPUT);
  pinMode(PIN_MOTOR_LEFT_UP, OUTPUT);
  pinMode(PIN_MOTOR_LEFT_DN, OUTPUT);
  //pinMode (PIN_LED, OUTPUT);

  // Serial Monitor
  Serial.begin(115200);



  // TODO you setup code
  // Start Serial 2 with the defined RX and TX pins and a baud rate of 9600
  gpsSerial.begin(GPS_BAUD);
  //Serial.println("Software Serial started at 9600 baud rate");

    


}



void loop() {
  RemoteXY_Handler();


  // TODO you loop code
  // используйте структуру RemoteXY для передачи данных
  // не используйте функцию delay(), вместо нее используйте RemoteXY_delay()
  // This sketch displays information every time a new sentence is correctly encoded.



   {
    /* управляем правым мотором */
    Wheel(RightMotor, RemoteXY.joystick_01_x + RemoteXY.joystick_01_y);

    /* управляем левым мотором */
    Wheel(LeftMotor, RemoteXY.joystick_01_x - RemoteXY.joystick_01_y);
  }


  unsigned long start = millis();

  while (millis() - start < 1000) {
    while (gpsSerial.available() > 0) {
      gps.encode(gpsSerial.read());
    }
    if (gps.location.isUpdated()) {

      float Lat = gps.location.lat();
      float Long = gps.location.lng();
      //float Speed = gps.speed.kmph();
      RemoteXY.Lat = Lat;
      RemoteXY.Long = Long;
      


//RemoteXY.RSSI = WiFi.RSSI();
      
     
     
    }
  }
}