KREMEN Реклама
KREMEN Реклама

не могу снять показания с слайдера .

timob256
Идет загрузка
Загрузка
24.06.2025
273
1
Вопросы и ответы

Написал код. Всё работает , но при изменении значения на  слайдере не происходит изменение значения .

Вот код :

// система будет висеть на телефоне

#define AP_SSID "TECNO CAMON 17P"

#define AP_PASS "огурчик"

#include // подключаем библиотеку Wi-Fi

#include //библиотека веб интерфейса

// Создаем объект GyverPortal

GyverPortal portal;

// переменные

int PWM_CHANNEL = 0; // ESP32 has 16 channels which can generate 16 independent waveforms

int PWM_FREQ = 20000; // частота 20 к Герц

int PWM_RESOLUTION = 16; // есп32 16 бит

int PWM_SKVAJ = 256; // скважность (256 половина от 512)

int PWM_SKVAJ1 = 0; // скважность (датчик измененния)

int PWM_FREQ1 = 0; // частота 20 к Герц (датчик измененния)

int PWM_START = 0; // датчик запуска генератора (датчик измененния)

int sliderValue_SKVAJ = 0; // снимаем данные с слайсера скважность

int sliderValue_FREQ = 0; // снимаем данные с слайсера частота

 

 const int LED_OUTPUT_PIN = 25;

bool valSwitchKV =0; // волна прямоугольная

bool valSwitchSin = 0; // волна синусоидальная

// конструктор страницы ( вид Ок !! )

void build() {

  GP.BUILD_BEGIN(GP_DARK);

  GP.TITLE(" Генератор ", "t1");

  GP.HR();

  GP.LABEL("Квадратная волна: ");

  GP.BREAK();// перевод строки

   // туту плот

  GP.LABEL("включение: ");

  GP.SWITCH("sw", valSwitchKV); GP.BREAK();

  GP.BREAK(); // перевод строки

  GP.LABEL("Синусоидальная волна: ");

  GP.BREAK(); // перевод строки

  GP.LABEL("включение: ");

  GP.SWITCH("sw", valSwitchSin); GP.BREAK();

  GP.BREAK(); // перевод строки

  GP.LABEL("Частота");

  GP.SLIDER("sld", PWM_FREQ, 1000, 400000);

  GP.BREAK();

  GP.LABEL("Скважность ");

  GP.SLIDER("sld1", PWM_SKVAJ, 52, 460); // 10 и 90 процентов

  GP.BREAK();

  GP.BUILD_END();

}

void setup() {

  // вот моё добавил канал (многое скважность регулируют через канал).

  ledcAttachChannel(LED_OUTPUT_PIN, PWM_FREQ, PWM_RESOLUTION, PWM_CHANNEL);

  //тут будет изменения скважности и частоты

  PWM_SKVAJ1 = PWM_SKVAJ;

  PWM_FREQ1 = PWM_FREQ;

  Serial.begin(115200);

  // Подключаемся к Wi-Fi

  WiFi.mode(WIFI_STA);

  WiFi.begin(AP_SSID, AP_PASS);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println();

  Serial.print("Подключено! IP адрес: ");

  Serial.println(WiFi.localIP());

  // Инициализация GyverPortal

  portal.attachBuild(build);

  portal.start();

}

void loop() {

  // запускаю светодиод

  //ledcWrite(LED_OUTPUT_PIN, PWM_CHANNEL);

  // моё

  // проверка первичного запуска

  if(PWM_START == 0 )

  {

    ledcWrite(PWM_CHANNEL, PWM_SKVAJ);

    PWM_START = 1;

    Serial.println("старт");

  }

  // изменинение скважности

  if(PWM_SKVAJ1 != PWM_SKVAJ )

  {

    ledcWrite(PWM_CHANNEL, PWM_SKVAJ);

    Serial.print("скважность: ");

    Serial.println(PWM_SKVAJ );

    PWM_SKVAJ1 = PWM_SKVAJ;

  }

  // измениение частоты

  if(PWM_FREQ1 != PWM_FREQ)

  {

    ledcChangeFrequency(LED_OUTPUT_PIN, PWM_FREQ, PWM_RESOLUTION);

    Serial.print("частота: ");

    Serial.println(PWM_FREQ );

    PWM_FREQ1 = PWM_FREQ;

  }

  portal.tick(); // Обработка веб-интерфейса

  // Получаем значение слайдера при изменении

  if (portal.update()) {

    sliderValue_SKVAJ = portal.getInt("sld1"); // Ключ должен совпадать с именем слайдера

    sliderValue_FREQ = portal.getInt("sld"); // Ключ должен совпадать с именем слайдера

    Serial.println("1");

    if(sliderValue_SKVAJ != PWM_SKVAJ)

    {

      PWM_SKVAJ = sliderValue_SKVAJ;

      Serial.println("скважность");

    }

    if(sliderValue_FREQ != PWM_FREQ)

    {

      PWM_FREQ = sliderValue_FREQ;

      Serial.println("частота");

    }

  }

}

Вывод :

..

Подключено! IP адрес: 192.168.80.79

старт

Вот не знаю почему не заходит  в portal.update()

Ответы на вопросы
Lider 3D Реклама
Lider 3D Реклама