Diskusní téma: Lekce 19 - Arduino a senzor tlaku BMP085

Datum
Vložil
Titulek

Re: lcd

// BAROMETER s modulom BMP085 16.1.2014
// by Filipe Vieira - knižnica
// Simple test of BMP085 output using default settings using dynamic update.
// In order to take full advantage of dynamic measurement, automatic temperature updates must be disabled.
// To disable automatic updates set AUTO_UPDATE_TEMPERATURE to false in bmp085.h.
// IMPORTANT!! To get correct values you MUST CHANGE init() parameters, in
// this example I've set 668m based on GPS data for my location.

// recreated by Pavel Putna

#include <Wire.h>
#include <BMP085.h>
#include <LiquidCrystal.h> //importuje knihovnu LiquidCrystal

//inicializuje objekt jménem dps pro získání dat ze senzoru
BMP085 dps = BMP085(); // Digital Pressure Sensor
// připraví promené pro tlak, výšku a teplotu
long Pressure = 0, Altitude = 0, Temperature = 0;

// Inicializujeme LCD objekt
// 12 - RS, 11 - E, 5 - DB4, 4 - DB5, 3 - DB6, 2 - DB7
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Definicia znaku 'stupeň'
byte degree[8] = {0b01100,0b10010,0b10010,0b01100,0b00000,0b00000,0b00000,0b00000 };

void setup(void) {

Serial.begin(9600);
Wire.begin();
lcd.begin(16, 2); // nastaví typ displeje na 16 znaků a 2 řádky (upravte dle sebe)
lcd.print("***BAROMETER***");
delay(500);
lcd.setCursor(2, 1);
lcd.print("Poprad 668m.");
delay(2000);
lcd.createChar(0, degree);

// odkomentujte pro rozdílný postup při použití senzoru
//dps.init(); // QFE (Field Elevation above ground level) je nastaveno na 0 metrů.
// jako kdyby jste měřili tlak u hladiny moře
// to samé jako init(MODE_STANDARD, 0, true);

//dps.init(MODE_STANDARD, 101850, false); // 101850Pa = 1018.50hPa, false = nastavené jednotky v Pa
// tuto metodu použijte, když znáte tlakve vašem místě např. z meteorologické stanice
// nebo z internetu z počasí

dps.init(MODE_STANDARD, 66800, true); // 668 metrů, true = nastavené jednotky v metrech
// tuto metodu použijte, když znáte Vaši nadmořskou výšku,
// tlak bude přepočítán automaticky na hladinu moře
// nastavenie MODE - funkcia určuje s akou presnoeťou bude počítať senzor dáta
// MODE_ULTRA_LOW_POWER --> přesnost 0,06hPa
// MODE_STANDARD --> přesnost 0,05hPa
// MODE_HIGHRES --> přesnost 0,04hPa
// MODE_ULTRA_HIGHRES --> přesnost 0,03hPa
}


void loop(void) {
// uloží do proměné "Pressure" hodnotu tlaku
dps.getPressure(&Pressure);
// uloží do proměné "Altitude" hodnotu výšky
dps.getAltitude(&Altitude);
// uloží do proměné "Altitude" hodnotu výšky
dps.getTemperature(&Temperature);

// Výstup na Seriový port
// - nazapomenme, že teplota se pro správný výsledek musí
// vydělit číslem 10, protože je v rozlišení 0,1C a je udávaná
// v celých číslech
Serial.print(" Vyska(m):");
Serial.print(Altitude*0.01); //*0.01- v metroch
Serial.print(" Tlak(Pa):");
Serial.print(Pressure);
Serial.print(" Teplota(C):");
Serial.println((float)Temperature/10);

//výstup na LCD 16x2, iba teplota a tlak
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tlak ");
lcd.print(Pressure*0.01);
//lcd.write(' ');
lcd.print(" hPa");
lcd.setCursor(0,1);
lcd.print("Teplota ");
lcd.print(Temperature*0.1);
lcd.write(' ');
lcd.write(byte(0)); //zobrazí znak stupeň
lcd.write('C');

// počkáme 5 sekund, ať se z toho seriový port nezblázní :-)
delay(5000);
}

Zpět na diskuzi

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.