- Текущие значения CO2, температуры, влажности и давления:
- датчик на экран;
- минимальное и максимальное значения для каждого датчика;
- все значения датчиков на одном экране.
- Управление одной кнопкой:
- одно нажатие - следущий датчик;
- два нажатия - смена режима (обычный / min-max режим);
- удержание - переворот экрана.
- Цветовая индикация концентрации CO2:
- зелёный - менее 800 ppm;
- жёлтый - от 800 до 1000 ppm;
- красный - более 1000 ppm.
- Подстройка выводимых значений.
- Вывод значений в Serial.
Mode 0 | Mode 1 | |
---|---|---|
Sensor 0 | Температура | Мин.-макс. температура |
Sensor 1 | Влажность | Мин.-макс. влажность |
Sensor 2 | Давление | Мин.-макс. давление |
Sensor 3 | CO2 | Мин.-макс. CO2 |
Sensor 4 | Все датчики | Версия. Год |
- Arduino Nano
- MH-Z19B
- BME280
- OLED SSD1306 128x32
- MH-Z19 - библиотека для MH-Z19 и MH-Z19B CO2 датчиков.
- SparkFun BME280 - библиотека для датчика BME280 (температура, влажность, давление).
- U8g2 - графическая библиотека для монохромных OLED дисплеев.
- GyverButton - работа с кнопками.
Шрифты созданы с помощью Fony 1.4.7-WIP и конвертированы для вставки в скетч с помощью bdfconv.
Код шрифтов для вставки в свой скетч
const uint8_t lcdnums_10x16[330] U8G2_FONT_SECTION("lcdnums_10x16") =
"\26\0\4\3\5\4\3\4\6\26\17\0\373\12\0\0\0\0\0\0\0\1\61$ \365:\66\224\224\310\220"
"H\210HL\224H\210H\34\210H\210HHD\234\224\310P\251\241R#%\33\212;l\214\305D\305"
"\244\210\11\211\31\11\314d&$&*&*&l\2\0&\13\346\274)\34\224\10\351\4\0'\5\0"
"\210)(\5\0\210))\5\0\210)*\14\345\274gL\304\350&b\2\0+\5\0\210),\5\0"
"\210)-\5\0\210).\6b\70$\30/\5\0\210)\60\20\351\71k\134DTL\361\277\232\250\210"
"\270\0\61\13\346=+\320\14\351 rP\62\24\351\71+\34\204X\304\351\302B\302BNw\21&\7"
"\1\63\24\351\71+\34\204X\304\351\244\42\342\62N\27\26\7\22\0\64\16\351\71+H\361\325DE\304"
"e\234>\65\24\351\71k\34HX\310i\27ar\20\247\27\26\7\22\0\66\25\351\71k\34HX\310"
"ix\21Q\61\305\253\211\212\210\13\0\67\16\351\71+\34\204X\304)\323\235~\4\70\27\351\71k\134"
"DTLq\65Q\21q\21\67\305\325DE\304\5\0\71\25\351\71k\134DTLq\65Q\21q\31"
"\247\13\213\3\11\0\0\0\0";
const uint8_t lcdnums_12x32[407] U8G2_FONT_SECTION("lcdnums_12x32") =
"\26\0\4\3\4\6\4\6\6\21 \0\354\14\0\0\0\0\0\0\0\1~$%\237(\23\303\310H\214"
"HDH\204\304HDH\204\304HDHD\12\222\221\210\10\241\64Bi\204\322\10\245\11%%Y-"
"\303\306TLPLPLPLPLPL\324L\134\276\231\212\11\212\11\212\11\212\11\212\11\212\211\232"
"\0&\13\226\354\230\302A\211\220>\1'\6\0 \10\2(\6\0 \10\2)\6\0 \10\2*\14"
"\226\354\230\6E\220>\212\240\0+\6\0 \10\2,\6\0 \10\2-\10\66\350\246\302\3\2.\10"
"R\60\243\302\301\0/\6\0 \10\2\60\25\12*\343\306AD\204\305\30\377\377\377g\23\26\21\7\21"
"\0\61\16\6\62\343\2\315\220\376\377\377O\16\12\62\30\12*\343\302\201\310E\240\376/,&,&,"
"\4\365 \30qr \63\34\12*\343\302\3\212\210\3A\375\207\7\23\7\23\7\21\201\372\277\70\70\230"
"\70\230\0\64\23\12*\343\202\30\377\277\240\230\260\210\70\210\24\324\377\7\65\30\12*\343\306\301\304\205\240"
"\376/,\42,\42,\4\365\377\342\301\4\0\66\32\12*\343\306\301\304\205\240\376\207\21'\27\22\25d"
"\374?\233\260\210\70\210\0\67\26\12*\343\302\201\310E\240\356\4\345\4\345\4\345\4\365\377?\2\70\35"
"\12*\343\306AD\204\305\30\377g\23\26\21\7\21\21\26c\374?\233\260\210\70\210\0\71\30\12*\343"
"\306AD\204\305\30\377/*$N.\2\365\377\342\301\4\0\0\0\0";