#include <Wire.h> #include <SPI.h> #include <LiquidCrystal_I2C.h> // LCD i2c LiquidCrystal_I2C lcd(0x3F,16,2); // i2c // #if defined(ARDUINO) && ARDUINO >= 100 #define printByte(args) write(args); #else #define printByte(args) print(args,BYTE); #endif // , . uint8_t graf0[8] = {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F}; uint8_t graf1[8] = {B00000, B11111, B11111, B11111, B11111, B11111, B11111}; uint8_t graf2[8] = {B00000, B00000, B11111, B11111, B11111, B11111, B11111}; uint8_t graf3[8] = {B00000, B00000, B00000, B11111, B11111, B11111, B11111}; uint8_t graf4[8] = {B00000, B00000, B00000, B00000, B11111, B11111, B11111}; uint8_t graf5[8] = {B00000, B00000, B00000, B00000, B00000, B11111, B11111}; uint8_t graf6[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B11111}; uint8_t graf7[8] = {B00000, B00000, B00000, B00000, B00000, B00000, B00000}; // int stat[2][25]; // 2 , ( ) //int stat[0]; // //int stat[1]; // #include <BMP085.h> BMP085 dps = BMP085(); // long Pressure = 0; void setup(void) { lcd.init(); lcd.backlight(); // lcd.createChar(0, graf0);// . lcd.createChar(1, graf1); lcd.createChar(2, graf2); lcd.createChar(3, graf3); lcd.createChar(4, graf4); lcd.createChar(5, graf5); lcd.createChar(6, graf6); lcd.createChar(7, graf7); }
void loop(void) { if (((millis()/3600000)-stat[1][23]) >= 1.0) // 1 (3600000) { // , int i=0; for (i = 0; i < 24; i++) stat[0][i] = stat[0][i+1]; for (i = 0; i < 24; i++) stat[1][i] = stat[1][i+1]; dps.getPressure(&Pressure); // stat[0][23] = Pressure/13.33; stat[1][23] = millis()/3600000; grafik(0, 2, 0); // , , , , . (0), (2) (0) }
int interval(int x) { int maxy = -5000; int inty = 0; int minx = minimum(x); for (int k = 0; k <= 24; k++) { if (stat[1][k] != 0) { // if (stat[x][k] > maxy) maxy = stat[x][k]; // }} if (maxy == -5000) maxy = 0; // inty = maxy - minx; intx = inty/8; return intx; }
int minimum(int d) { minx = 32767; for (int i = 0; i <= 24; i++) { if (stat[1][i] != 0) { // if (stat[d][i] < minx) minx = stat[d][i];// }} if (minx == 50000) minx = 0; return minx; }
void grafik(int x, int y, int z) { lcd.setCursor(0, 1); lcd.print("Dav"); // intx = interval(x); // int minx = minimum(x); // for (int i=z; i <= 24; i= i + y){ if (stat[x][i] == 0){ // lcd.print("-"); // , } else if (stat[x][i] > (minx + intx*7)) { lcd.printByte(0); } else if (stat[x][i] > (minx + intx*6)) { lcd.printByte(1); }else if (stat[x][i] > (minx + intx*5)) { lcd.printByte(2); }else if (stat[x][i] > (minx + intx*4)) { lcd.printByte(3); }else if (stat[x][i] > (minx + intx*3)) { lcd.printByte(4); }else if (stat[x][i] > (minx + intx*2)) { lcd.printByte(5); }else if (stat[x][i] > (minx + intx)) { lcd.printByte(6); } else { lcd.printByte(7); } } }
Source: https://habr.com/ru/post/357898/
All Articles