Browse Source

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

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

2
.vscode/launch.json

@ -6,7 +6,7 @@
"request": "launch",
"cwd": "${workspaceRoot}",
"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",
"autorun": [ "source .pioinit" ]
}

2
html/acc.html

@ -32,7 +32,7 @@
<br />Частота обновления графика - 1 раз в двадцать секунд.
<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>

27
src/html.h

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

47
src/main.cpp

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

Loading…
Cancel
Save