Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Arduino.h>
- #include <freertos/FreeRTOS.h>
- #include <WiFi.h>
- #include <esp_wifi.h>
- #include "freertos/task.h"
- #include "freertos/queue.h"
- #include "driver/gpio.h"
- #include <WebServer.h>
- #include <ESPAsyncWebServer.h>
- #include "SPIFFS.h"
- #include <string>
- const auto REGISTER_BIT3_ON_PIN = GPIO_NUM_33;
- const auto REGISTER_BIT2_ON_PIN = GPIO_NUM_25;
- const auto REGISTER_BIT1_ON_PIN = GPIO_NUM_26;
- const auto REGISTER_BIT0_ON_PIN = GPIO_NUM_27;
- const auto DisplayA = GPIO_NUM_14;
- const auto DisplayB = GPIO_NUM_12;
- const auto DisplayC = GPIO_NUM_13;
- const char* ssid = "Acces point";
- const char* contrasena = "noidea123";
- WiFiServer server(5050);
- AsyncWebServer webServer(80);
- uint8_t ds = 0;
- uint8_t s1 = 0;
- uint8_t s2 = 0;
- struct Dato
- {
- float inclinacion;
- int decimaSegundo;
- int decenaSegundo;
- int segundo;
- };
- std::vector<Dato> datosServer;
- auto ds1=ds;
- auto sa1=s1;
- auto sa2=s2;
- void Tiempo (void* parameter)
- {
- for(;;)
- {
- ds++;
- if (ds>9)
- {
- ds=0;
- s1++;
- }
- if (s1>9)
- {
- s1=0;
- s2++;
- }
- if (s2>9)
- {
- s2=0;
- }
- vTaskDelay(96/portTICK_PERIOD_MS);
- }
- }
- void GPIOConf (void)
- {
- gpio_config_t io_conf;
- io_conf.intr_type = GPIO_INTR_DISABLE;
- io_conf.mode = GPIO_MODE_OUTPUT;
- io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
- io_conf.pull_up_en = GPIO_PULLUP_DISABLE;
- io_conf.pin_bit_mask = ((1ULL<< REGISTER_BIT3_ON_PIN) | (1ULL<< REGISTER_BIT2_ON_PIN) |
- (1ULL<< REGISTER_BIT1_ON_PIN) |
- (1ULL<< REGISTER_BIT0_ON_PIN) |
- (1ULL << DisplayA) |
- (1ULL << DisplayB) |
- (1ULL << DisplayC));
- gpio_config(&io_conf);
- }
- void copy_register_to_GPIO_pins(unsigned char disp_register)
- {
- gpio_set_level(REGISTER_BIT3_ON_PIN, (disp_register & 0b1000) >> 3);
- gpio_set_level(REGISTER_BIT2_ON_PIN, (disp_register & 0b0100) >> 2);
- gpio_set_level(REGISTER_BIT1_ON_PIN, (disp_register & 0b0010) >> 1);
- gpio_set_level(REGISTER_BIT0_ON_PIN, (disp_register & 0b0001));
- }
- void setup()
- {
- datosServer.reserve(10);
- SPIFFS.begin();
- GPIOConf();
- WiFi.softAP(ssid, contrasena);
- esp_wifi_set_ps(WIFI_PS_NONE);
- xTaskCreate(
- Tiempo,
- "Tiempo",
- 10000,
- nullptr,
- 1,
- nullptr);
- server.begin();
- xTaskCreate(
- [](void* param)
- {
- for(;;)
- {
- copy_register_to_GPIO_pins(ds1);
- gpio_set_level(DisplayA, 1);
- gpio_set_level(DisplayB, 0);
- gpio_set_level(DisplayC, 0);
- vTaskDelay(10 / portTICK_PERIOD_MS);
- copy_register_to_GPIO_pins(sa1);
- gpio_set_level(DisplayA, 0);
- gpio_set_level(DisplayB, 1);
- gpio_set_level(DisplayC, 0);
- vTaskDelay(10 / portTICK_PERIOD_MS);
- copy_register_to_GPIO_pins(sa2);
- gpio_set_level(DisplayA, 0);
- gpio_set_level(DisplayB, 0);
- gpio_set_level(DisplayC, 1);
- vTaskDelay(10 / portTICK_PERIOD_MS);
- }
- },
- "Pan",
- 10000,
- nullptr,
- 1,
- nullptr);
- webServer.on("/datos", HTTP_GET, [](AsyncWebServerRequest *request)
- {
- std::string str = "{\"datos\": [";
- for (const auto& data : datosServer)
- {
- str += "{\"inc\":";
- str += data.inclinacion;
- str += ", \"seg1\":";
- str += data.segundo;
- str += ", \"seg2\":";
- str += data.decenaSegundo;
- str += ", \"decimaSeg\":";
- str += data.decimaSegundo;
- str += "}";
- }
- str += "]}";
- request->send(200, "application/json", str.c_str());
- });
- webServer.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html");
- webServer.begin();
- }
- void loop()
- {
- WiFiClient client = server.available();
- if (client)
- {
- while (client.connected())
- {
- while (client.available() > 0)
- {
- ds1=ds;
- sa1=s1;
- sa2=s2;
- ds=0;
- s1=0;
- s2=0;
- float inclinacion{};
- client.readBytes(reinterpret_cast<uint8_t*>(&inclinacion), sizeof(float));
- datosServer.push_back({inclinacion, ds1, sa1, sa2});
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement