Помощь с проектом WaterDance

Всем привет! Помогите, пожалуйста. Я хочу сделать проект AlexGiver (WaterDance) на его сайте есть инструкция о том, как сделать этот проект. В нем есть код. При установке всех библиотек и компиляции ошибок нет. Загрузка на плату проходит без проблем. Плата ESP32 в мониторе порта отображает IP для управления WiFi. Пингую этот айпы, отзыв идет нормальный. А на странице пишет, что она не доступна. Я уже 5 день сижу и пробую переписать код, но как бы я ни крутил, то ошибка компиляции, то белый экран при переходе по выбранному IP.
Можете помочь? Через приложение GyverHub также пытаюсь подключиться по этому IP, но также выбивает ошибку.,что такая страница не найдена.

А почему Вы не обратились за помощью

Там тоже есть форум, а на том форуме, наверняка, есть люди, которые этот проект уже повторяли.

Нет. Помогают тому, кто сам делает. Вы же сами ничего не делаете. По крайней мере, мы не видели ни Вашего кода, ни Вашей схемы.

Кто Вам сказал, что я не обращался за помощью?
Я написал, от только ответа до сих пор нет!

А зачем я написал “AlexGiver (WaterDance) на его сайте есть инструкция о том, как сделать этот проект”. Это не мой код и не мой проект. Я просто хочу повторить чужой проект. Проблема в том, что у меня выбивает ошибку и не знаю с чем это связано. Все свои действия я описал выше. (скачал,скомпилировал, загрузил на плату)

Вот код

#include <GyverHub.h>
GyverHub hub;

#define AP_SSID "WiFiHOME2.4"
#define AP_PASS "11111111"
#define DAC_CH1 25
#define DAC_CH2 26
#define PIN_R 27
#define PIN_G 32
#define PIN_B 33

#include <driver/dac.h>

#include "phase.h"
#include "rgb.h"
#include "sine.h"
#include "soc/timer_group_reg.h"
#include "soc/timer_group_struct.h"

TaskHandle_t Task0;
void core0(void *p);
struct Data {
    bool state = 0;
    uint8_t freq = 15;
    uint8_t ampliX = 20;
    uint8_t ampliY = 20;
    uint8_t phaseY = 0;
    int8_t multY = 0;
    uint16_t expo = 500;
};
Data data;
gh::Timer genTmr, rgbTmr;
RGB rgb(PIN_R, PIN_G, PIN_B);

#define PHASE_AMOUNT 5
Phase phase[PHASE_AMOUNT];

// build
void build(gh::Builder &b) {
    {
        gh::Row r(b);
        b.Switch(&data.state).label("СОСТОЯНИЕ");
        if (b.click()) genTmr.restart();
    }

    b.Slider(&data.freq).label("ЧАСТОТА").range(10, 30, 1);
    if (b.click()) genTmr.startInterval(1000000ul / data.freq / 256);
    b.Slider(&data.ampliX).label("АМПЛИТУДА X").range(0, 128, 1);

    b.Slider(&data.multY).label("МНОЖИТЕЛЬ Y").range(0, 3, 1);
    b.Slider(&data.ampliY).label("АМПЛИТУДА Y").range(0, 128, 1);
    b.Slider(&data.phaseY).label("ФАЗА Y").range(0, 255, 1);

    b.Slider(&data.expo).label("ЯРКОСТЬ").range(100, 2000, 1);

    static int p = 0;
    b.Select(&p).label("СТРУЯ").text("СТРУЯ 1;СТРУЯ 2;СТРУЯ 3;СТРУЯ 4;СТРУЯ 5");
    if (b.click()) b.refresh();

    bool resetTrig = 0;
    bool resetHue = 0;
    {
        gh::Row r(b);
        b.Switch(&phase[p].state).label("СОСТОЯНИЕ");
        b.Switch(&phase[p].hue.autoMode).label("ЦВЕТ АВТО");
        b.Switch(&phase[p].trig.autoMode).label("ФАЗА АВТО");
    }

    b.Slider(&phase[p].hue.val).label("ЦВЕТ").range(0, 255, 1);
    if (b.click()) resetHue = 1;

    b.Slider(&phase[p].trig.val).label("ФАЗА").range(0, 255, 1);
    if (b.click()) resetTrig = 1;

    b.Slider(&phase[p].hue.step).label("ШАГ ЦВЕТА").range(-10, 10, 1);
    if (b.click()) resetHue = 1;

    b.Slider(&phase[p].trig.step).label("ШАГ ФАЗЫ").range(-20, 20, 1);
    if (b.click()) resetTrig = 1;

    if (resetHue) {
        for (int i = 0; i < PHASE_AMOUNT; i++) phase[i].hue.shift = 0;
    }
    if (resetTrig) {
        for (int i = 0; i < PHASE_AMOUNT; i++) phase[i].trig.shift = 0;
    }
}

void setup() {
    xTaskCreatePinnedToCore(core0, "Task0", 10000, NULL, 1, &Task0, 0);

    Serial.begin(115200);
    WiFi.mode(WIFI_STA);
    WiFi.begin(AP_SSID, AP_PASS);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println();
    Serial.println(WiFi.localIP());

    hub.config(F("MyDevices"), F("WaterDance"));
    hub.onBuild(build);
    hub.begin();

    rgbTmr.setSource(micros);
    genTmr.setSource(micros);
    genTmr.keepPhase(true);
    genTmr.startInterval(1000000ul / data.freq / 256);
    dac_output_enable(DAC_CHANNEL_1);
    dac_output_enable(DAC_CHANNEL_2);
}

uint8_t fade8(uint8_t val, uint8_t fade) {
    return ((uint16_t)val * (fade + 1)) >> 8;
}

void loop() {
    if (rgbTmr) rgb.off();

    if (data.state && genTmr.tick()) {
        static uint8_t count = 0;
        count++;
        dac_output_voltage(DAC_CHANNEL_1, fade8(sine_table[count], data.ampliX));
        dac_output_voltage(DAC_CHANNEL_2, fade8(sine_table[(uint8_t)((count * data.multY) + data.phaseY)], data.ampliY));

        for (int i = 0; i < PHASE_AMOUNT; i++) {
            if (phase[i].tick(count)) {
                rgb.writeHue(phase[i].hue.getVal());
                rgbTmr.startTimeout(data.expo);
            }
        }
    }
}

void core0(void *p) {
    for (;;) {
        // feed dog
        TIMERG0.wdt_wprotect = TIMG_WDT_WKEY_VALUE;  // write enable
        TIMERG0.wdt_feed = 1;                        // feed dog
        TIMERG0.wdt_wprotect = 0;                    // write protect

        hub.tick();
    }
}

компилируется и заливается? Если да по адресу http://ваш IP/hub/upload_portal отзывается?
Ну значит половина дела сделана )))



я жеж сказал другой адрес: http://192.168.31.175/hub/upload_portal

Хрен Вас знает, зачем Вы это написали. Неужели, Вы думали, что все кинутся что-то искать

когда Вы даже ссылку не дали! Если Вы и впрямь так думали, то Вы альтернативно одарены.

В сети не принято шастать по посторонним сайтам. Код и схему (причём именно Ваш код и Вашу схему, а не гиверовские - Ваши со всеми Вашими малейшими изменениями) Вы должны выложить здесь. Иначе в этой теме ничего, кроме глума и срача, не будет.

Извините, не совсем понял, что Вы имеете ввиду

Т.е. проект не поддерживается его автором? Его точно стоит повторять?

В любом случае спорить с Вами нет никакого удовольствия. Вы правы, я не додал всю нужную информацию к своему вопросу.
Вы мне с моей проблемой помочь можете? Если да, то буду благодарный, если нет, то спасибо за розьяснения о том, как писать вопросы

Петрович! Там всё проще! Он жирным красным пишет - читать до полного просветления, прежде чем вопросы задавать, что ты хочешь, ТС даже по готовой (ручками набивал его IP) ссылке не удосужился перейти )))

1 лайк

Не за что, обращайтесь ещё, если что. “Розъясню”!

1 лайк

Ну, я же Вам уже сказал, что для этого нужны Ваши код и схема! Этого как не было, так и нет. Так с чего Вы мне ещё раз это вопрос задаёте? Сразу-то что непонятно было? Или Вы и впрямь альтернативно одарены и не понимаете таких простых фраз?

@Евгеш
Ваша проблема решилась?
Не забывайте пометить правильный ответ меткой “Решение”

Это наврядли, надо понимать как работает GyverHUB а этого понимания у ТС нет!

Таки добавлю!
ТС! Из коробки локально вэбморда не заработает, надо в скетче это разрешить, добавить пару строк

#include <Arduino.h>
#define GH_INCLUDE_PORTAL
#define GH_FILE_PORTAL
#include <GyverHub.h>
GyverHub hub;

1 лайк

Я понял, спасибо большое!