Advertisement
Guest User

Servidor

a guest
Nov 18th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. #include <Arduino.h>
  2. #include <freertos/FreeRTOS.h>
  3. #include <WiFi.h>
  4. #include <esp_wifi.h>
  5. #include "freertos/task.h"
  6. #include "freertos/queue.h"
  7. #include "driver/gpio.h"
  8. #include <WebServer.h>
  9. #include <ESPAsyncWebServer.h>
  10. #include "SPIFFS.h"
  11. #include <string>
  12.  
  13. const auto REGISTER_BIT3_ON_PIN = GPIO_NUM_33;
  14. const auto REGISTER_BIT2_ON_PIN = GPIO_NUM_25;
  15. const auto REGISTER_BIT1_ON_PIN = GPIO_NUM_26;
  16. const auto REGISTER_BIT0_ON_PIN = GPIO_NUM_27;
  17.  
  18. const auto DisplayA = GPIO_NUM_14;
  19. const auto DisplayB = GPIO_NUM_12;
  20. const auto DisplayC = GPIO_NUM_13;
  21.  
  22. const char* ssid = "Acces point";
  23. const char* contrasena = "noidea123";
  24. WiFiServer server(5050);
  25. AsyncWebServer webServer(80);
  26.  
  27.  
  28. uint8_t ds = 0;
  29. uint8_t s1 = 0;
  30. uint8_t s2 = 0;
  31.  
  32. struct Dato
  33. {
  34. float inclinacion;
  35. int decimaSegundo;
  36. int decenaSegundo;
  37. int segundo;
  38. };
  39.  
  40. std::vector<Dato> datosServer;
  41.  
  42. auto ds1=ds;
  43. auto sa1=s1;
  44. auto sa2=s2;
  45.  
  46. void Tiempo (void* parameter)
  47. {
  48. for(;;)
  49. {
  50. ds++;
  51. if (ds>9)
  52. {
  53. ds=0;
  54. s1++;
  55. }
  56. if (s1>9)
  57. {
  58. s1=0;
  59. s2++;
  60. }
  61. if (s2>9)
  62. {
  63. s2=0;
  64. }
  65. vTaskDelay(96/portTICK_PERIOD_MS);
  66. }
  67. }
  68. void GPIOConf (void)
  69. {
  70. gpio_config_t io_conf;
  71. io_conf.intr_type = GPIO_INTR_DISABLE;
  72. io_conf.mode = GPIO_MODE_OUTPUT;
  73. io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
  74. io_conf.pull_up_en = GPIO_PULLUP_DISABLE;
  75. io_conf.pin_bit_mask = ((1ULL<< REGISTER_BIT3_ON_PIN) | (1ULL<< REGISTER_BIT2_ON_PIN) |
  76. (1ULL<< REGISTER_BIT1_ON_PIN) |
  77. (1ULL<< REGISTER_BIT0_ON_PIN) |
  78. (1ULL << DisplayA) |
  79. (1ULL << DisplayB) |
  80. (1ULL << DisplayC));
  81. gpio_config(&io_conf);
  82. }
  83.  
  84. void copy_register_to_GPIO_pins(unsigned char disp_register)
  85. {
  86. gpio_set_level(REGISTER_BIT3_ON_PIN, (disp_register & 0b1000) >> 3);
  87. gpio_set_level(REGISTER_BIT2_ON_PIN, (disp_register & 0b0100) >> 2);
  88. gpio_set_level(REGISTER_BIT1_ON_PIN, (disp_register & 0b0010) >> 1);
  89. gpio_set_level(REGISTER_BIT0_ON_PIN, (disp_register & 0b0001));
  90. }
  91.  
  92. void setup()
  93. {
  94. datosServer.reserve(10);
  95. SPIFFS.begin();
  96. GPIOConf();
  97. WiFi.softAP(ssid, contrasena);
  98. esp_wifi_set_ps(WIFI_PS_NONE);
  99.  
  100. xTaskCreate(
  101. Tiempo,
  102. "Tiempo",
  103. 10000,
  104. nullptr,
  105. 1,
  106. nullptr);
  107. server.begin();
  108.  
  109. xTaskCreate(
  110. [](void* param)
  111. {
  112. for(;;)
  113. {
  114. copy_register_to_GPIO_pins(ds1);
  115. gpio_set_level(DisplayA, 1);
  116. gpio_set_level(DisplayB, 0);
  117. gpio_set_level(DisplayC, 0);
  118. vTaskDelay(10 / portTICK_PERIOD_MS);
  119.  
  120. copy_register_to_GPIO_pins(sa1);
  121. gpio_set_level(DisplayA, 0);
  122. gpio_set_level(DisplayB, 1);
  123. gpio_set_level(DisplayC, 0);
  124. vTaskDelay(10 / portTICK_PERIOD_MS);
  125.  
  126. copy_register_to_GPIO_pins(sa2);
  127. gpio_set_level(DisplayA, 0);
  128. gpio_set_level(DisplayB, 0);
  129. gpio_set_level(DisplayC, 1);
  130. vTaskDelay(10 / portTICK_PERIOD_MS);
  131. }
  132. },
  133. "Pan",
  134. 10000,
  135. nullptr,
  136. 1,
  137. nullptr);
  138.  
  139. webServer.on("/datos", HTTP_GET, [](AsyncWebServerRequest *request)
  140. {
  141. std::string str = "{\"datos\": [";
  142. for (const auto& data : datosServer)
  143. {
  144. str += "{\"inc\":";
  145. str += data.inclinacion;
  146. str += ", \"seg1\":";
  147. str += data.segundo;
  148. str += ", \"seg2\":";
  149. str += data.decenaSegundo;
  150. str += ", \"decimaSeg\":";
  151. str += data.decimaSegundo;
  152. str += "}";
  153. }
  154. str += "]}";
  155.  
  156. request->send(200, "application/json", str.c_str());
  157. });
  158.  
  159. webServer.serveStatic("/", SPIFFS, "/").setDefaultFile("index.html");
  160. webServer.begin();
  161. }
  162.  
  163. void loop()
  164. {
  165. WiFiClient client = server.available();
  166. if (client)
  167. {
  168. while (client.connected())
  169. {
  170. while (client.available() > 0)
  171. {
  172.  
  173. ds1=ds;
  174. sa1=s1;
  175. sa2=s2;
  176. ds=0;
  177. s1=0;
  178. s2=0;
  179. float inclinacion{};
  180. client.readBytes(reinterpret_cast<uint8_t*>(&inclinacion), sizeof(float));
  181. datosServer.push_back({inclinacion, ds1, sa1, sa2});
  182. }
  183. }
  184. }
  185. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement