Browse Source

Все данные для формирования графика собраны в один класс. Исправлено описание акселерометра в html.h.

master
Defend 7 years ago
parent
commit
4c5ed05369
  1. 2
      .vscode/launch.json
  2. 2
      html/acc.html
  3. 25
      src/html.h
  4. 47
      src/main.cpp

2
.vscode/launch.json

@ -6,7 +6,7 @@
"request": "launch", "request": "launch",
"cwd": "${workspaceRoot}", "cwd": "${workspaceRoot}",
"name": "PlatformIO Debugger", "name": "PlatformIO Debugger",
"target": "c:/Users/itsmy_000/Desktop/node_mcu_001/.pioenvs/nodemcuv2/firmware.elf", "target": "c:/Users/itsmy_000/Desktop/VSCode Workplace/node_mcu_001/.pioenvs/nodemcuv2/firmware.elf",
"gdbpath": "C:/Users/itsmy_000/.platformio/penv/Scripts/piodebuggdb", "gdbpath": "C:/Users/itsmy_000/.platformio/penv/Scripts/piodebuggdb",
"autorun": [ "source .pioinit" ] "autorun": [ "source .pioinit" ]
} }

2
html/acc.html

@ -32,7 +32,7 @@
<br />Частота обновления графика - 1 раз в двадцать секунд. <br />Частота обновления графика - 1 раз в двадцать секунд.
<br />Данные с сенсора снимаются с частотой в 20Hz. </p> <br />Данные с сенсора снимаются с частотой в 20Hz. </p>
<canvas id="myCanvas" width="400" height="200" style="border:1px solid #3c70ff;"> <canvas id="myCanvas" width="400" height="200" style="border:1px solid #000000;">
Браузер устарел! Браузер устарел!
</canvas> </canvas>

25
src/html.h

@ -47,17 +47,13 @@ const char style[] PROGMEM = {
\ \
<div id=\"main_block\" align=\"center\">\ <div id=\"main_block\" align=\"center\">\
<h2>Лабораторная работа</h2>\ <h2>Лабораторная работа</h2>\
<h3>Высокочувствительный оптодатчик ADPD2214</h3>\ <h3>Акселерометр ADW22035Z - Cемейство ADXL103</h3>\
<p id=\"hbs_text\">Применяется для измерения пульса, расчета фотоплетизмограммы. Низкое энергопотребление, а также управляемое выключение\ <p id=\"hbs_text\">Акселерометр подает на выход данные по одной оси.</p>\
этого электроприбора позволяет использовать его в портативных устройствах.\ <p id=\"hbs_text\">Частота обновления графика - 1 раз в секунду. Данные с сенсора снимаются\
</p>\ с частотой в 50Hz. </p>\
<p id=\"hbs_text\">Также применяется в химическом анализе. Частота обновления графика - 1 раз в двадцать секунд. Данные с сенсора снимаются\ <canvas id=\"myCanvas\" width=\"400\" height=\"200\" style=\"border:1px solid #000000;\">\
с частотой в 20Hz. </p>\
\
<canvas id=\"myCanvas\" width=\"400\" height=\"200\" style=\"border:1px solid #3c70ff;\">\
Браузер устарел!\ Браузер устарел!\
</canvas>\ </canvas>\
\
"}; "};
const char script_begin[] PROGMEM = { const char script_begin[] PROGMEM = {
@ -69,19 +65,12 @@ const char script_begin[] PROGMEM = {
const char script_end[] PROGMEM = { const char script_end[] PROGMEM = {
"context.stroke();\ "context.stroke();\
context.font = \"50px Arial\";\
context.fillText(\"122\",300,170);\
</script>"}; </script>"};
const char html_end[] PROGMEM = { const char html_end[] PROGMEM = {
"<div id=\"navs\">\ "<div class=\"clear\"></div>\
<button onclick=\"window.location.href='/acc.html?f=0'\" class=\"button\">Акселерометр</button>\
</div>\
<div class=\"clear\"></div>\
\
</div>\ </div>\
<footer>\ <footer>Тамбовский Государственный Технический Университет 2017 г.\
Тамбовский Государственный Технический Университет 2017 г.\
</footer>\ </footer>\
</body>\ </body>\
</html>"}; </html>"};

47
src/main.cpp

@ -12,12 +12,32 @@ ESP8266WebServer server(80);
long int lastUpdate = 0; long int lastUpdate = 0;
int acc = 0; int acc = 0;
const int graph_size = 200; class Graph {
int graph1[graph_size] = { 200 }; public:
int graph1counter = 0; int graphSize;
int graphUpdate = 50; // Раз в секунду int graphUpdateRate;
int * graphArray;
int graphCounter;
// int graph_size = 200;
// int graph1[graph_size] = { 200 };
// int graph1counter = 0;
// int graphUpdate = 50;
Graph (int graphSize, int graphUpdateRate) {
this->graphSize = graphSize;
this->graphUpdateRate = graphUpdateRate; // Раз в секунду
graphArray = new int[graphSize];
graphCounter = 0;
}
Graph () {
Graph(200, 50);
}
}; // Раз в секунду
Graph graphAccelerometer;
void handleAccelerometer() void handleAccelerometer()
{ {
@ -29,8 +49,8 @@ void handleAccelerometer()
bias += getHtml(HTML_BEGIN, *html_code, arr_size, 0); bias += getHtml(HTML_BEGIN, *html_code, arr_size, 0);
bias += getHtml(STYLE, *html_code, arr_size, bias); bias += getHtml(STYLE, *html_code, arr_size, bias);
bias += getHtml(SCRIPT_BEGIN, *html_code, arr_size, bias); bias += getHtml(SCRIPT_BEGIN, *html_code, arr_size, bias);
for (int i = 0; i != graph_size - 1; i++) { for (int i = 0; i != graphAccelerometer.graphSize - 1; i++) {
bias += snprintf((html_code+bias), arr_size - bias, "context.lineTo(%i*2, %i);", i, graph1[i]); bias += snprintf((html_code+bias), arr_size - bias, "context.lineTo(%i*2, %i);", i, graphAccelerometer.graphArray[i]);
} }
bias += getHtml(SCRIPT_END, *html_code, arr_size, bias); bias += getHtml(SCRIPT_END, *html_code, arr_size, bias);
//bias += snprintf((html_code+bias), arr_size - bias, "<br />Current accelerometer: %i", acc); //bias += snprintf((html_code+bias), arr_size - bias, "<br />Current accelerometer: %i", acc);
@ -43,17 +63,17 @@ void handleAccelerometer()
void updateAccelerometer() void updateAccelerometer()
{ {
if ((millis() - lastUpdate) > (1000 / graphUpdate)) if ((millis() - lastUpdate) > (1000 / graphAccelerometer.graphUpdateRate))
{ {
acc = map(analogRead(A0), 512, 768, 200, 0); acc = map(analogRead(A0), 512, 768, 200, 0);
if (graph1counter < graph_size - 1) { if (graphAccelerometer.graphCounter < graphAccelerometer.graphSize - 1) {
graph1[graph1counter] = acc; graphAccelerometer.graphArray[graphAccelerometer.graphCounter] = acc;
graph1counter++; graphAccelerometer.graphCounter++;
} else { } else {
for(int i = 0; i != graph1counter; i++) { for(int i = 0; i != graphAccelerometer.graphCounter; i++) {
graph1[i] = graph1[i + 1]; graphAccelerometer.graphArray[i] = graphAccelerometer.graphArray[i + 1];
} }
graph1[graph1counter] = acc; graphAccelerometer.graphArray[graphAccelerometer.graphCounter] = acc;
} }
lastUpdate = millis(); lastUpdate = millis();
} }
@ -78,6 +98,7 @@ void handleNotFound()
void setup(void) void setup(void)
{ {
graphAccelerometer = Graph(200, 50);
pinMode(A0, INPUT); pinMode(A0, INPUT);
Serial.begin(115200); Serial.begin(115200);
WiFi.softAP(ssid); WiFi.softAP(ssid);

Loading…
Cancel
Save