Построить график в урдуино как ?

Тема в разделе "Arduino & Shields", создана пользователем blackflash2009, 31 мар 2016.

  1. Конфигурация такая есть дисплей нокиа 5110 ардуино мини и датчик атмосферного давления Скетчь мне нужно чтобы на дисплей выводилась давления с датчика и температура а под ними шел столбчатый график который раз в час стерал последние значение и добавлял новое всего надо 10 значений не подскажете код для такого скетчя ( конкретно интересует код графика ) Код метеостанции первоначальное
    #include <LCD5110_Graph.h>
    #include "DHT.h"
    #include <Wire.h>
    #include <BMP085.h>
    #include "RTClib.h"
    #define DHTPIN 10 // 10 pin для датчика DHT22
    #define DHTTYPE DHT11

    RTC_DS1307 RTC;
    BMP085 dps = BMP085();
    DHT dht(DHTPIN, DHTTYPE);

    long temp3 = 0, Pressure = 0, Altitude = 0;

    // pin 3 - Serial clock out (SCLK)
    // pin 4 - Serial data out (DIN)
    // pin 5 - Data/Command select (D/C)
    // pin 7 - LCD chip select (CS)
    // pin 6 - LCD reset (RST)

    LCD5110 myGLCD(3, 4, 5, 6, 7);

    extern unsigned char SmallFont[];

    void setup() {

    myGLCD.InitLCD();
    myGLCD.setFont(SmallFont);

    Wire.begin();
    RTC.begin();
    dht.begin();
    delay(2000);

    dps.init(MODE_ULTRA_HIGHRES, 3200, true); // 3200 это 32 метра над уровнем моря (Питер на такой высоте располагается+ надо добавить несколько метров в зависимости от этажа на котором живете)

    }

    void loop() {

    dps.getPressure(&Pressure);
    dps.getAltitude(&Altitude);
    dps.getTemperature(&temp3);
    DateTime now = RTC.now();


    // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
    float h = dht.readHumidity();
    // Read temperature as Celsius
    float t = dht.readTemperature();


    myGLCD.setFont(SmallFont); // задаем маленький размер шрифта на экране
    myGLCD.clrScr(); // Очистка экрана

    myGLCD.print("Time=", LEFT, 0); //задаем время
    myGLCD.printNumI(int(now.hour()), 32, 0); // 32,0 означет 32=номер пропуска в строке, те откуда будем печатать. 0=номер строки
    myGLCD.print(":", 45, 0);
    myGLCD.printNumI(int(now.minute()), 50, 0);
    myGLCD.print(":", 62, 0);
    myGLCD.printNumI(int(now.second()), 67, 0);

    myGLCD.print("Date=", LEFT, 10); //задаем дату
    myGLCD.printNumI(int(now.day()), 32, 10);
    myGLCD.print("/", 44, 10);
    myGLCD.printNumI(int(now.month()), 50, 10);
    myGLCD.print("/", 62, 10);
    myGLCD.printNumI(int(now.year() - 2000), 68, 10);

    myGLCD.print("T=", LEFT, 20); //задаем температуру
    myGLCD.printNumF(t, 2, 13, 20); //Это температура с DHT22
    myGLCD.print("/", 45, 20);
    myGLCD.printNumF(temp3 * 0.1-7, 2, 53, 20); //Это температура с барометра

    myGLCD.print("Hum=", LEFT, 30); // задаем влажность с DHT22
    myGLCD.printNumF(h, 2, 28, 30);
    myGLCD.print("%", 63, 30);

    myGLCD.print("Pres=", LEFT, 40); // задаем атмосферное давление
    myGLCD.printNumF(Pressure / 133.3, 2, 31, 40); //рассчет атмосферного давления
    myGLCD.print("mm", 68, 40);

    // Serial.print(" Alt(m):"); кому надо, это текущая высота над уровнем моря
    // Serial.print(Altitude / 100);

    myGLCD.update(); // Вывод вместимого буфера на дисплей
    delay (1000); // Задержка 1 с

    }

    Со скется выкену часы температурный датчик только BMP085.h останется
     
  2. AlexVS

    AlexVS Гик

    Вам бы русский язык подтянуть, да научиться оборачивать в соответсвующие тэги исходный код....... :)
    А по существу вопроса примерно так:
    1.накапливать значения давления (температуры) в массиве;
    2.выделить на дисплее область под график и запомнить координаты области;
    3.перед построением графика найти точки с максимальным и минимальным значением давления;
    4.исходя из имеющихся координат и max & min значений вычислить шаг приращения по оси У;
    5.исходя из имеющихся координат и количства временных промежутков, котрые вы хотите отображать, вычислить приращение по Х, а так же ширину "столбика";
    6.ну и в финале набросать процедуру рисования графика;
    PS я готов дать исходники, рисующие такой график, но боюсь, что вы в них не сможете разобраться.
     
    Последнее редактирование: 1 апр 2016
  3. AlexVS

    AlexVS Гик