Стрелочный барометр автора Arduino Project Hub под ником Mirko Pavleski получает данные от датчика BMP280, обрабатывает их при помощи Arduino Uno, а результат измерения выводит на микроамперметр с переделанной шкалой. Лицензия - GPL версии 3 или больше по вашему выбору.
На приведённой далее схеме резистор, включённый последовательно с микроамперметром, показан как постоянный, на самом деле он переменный или подстроечный. Значение 5 кОм дано для индикатора с током полного отклонения в 1 мА. Сразу после включения скетч сначала отклоняет стрелку на максимум, и за это время надо успеть выставить её точно на конечное деление шкалы. При последующих включениях, если переменный или подстроечный резистор качественный, а калибровка не сбита, повторять её не требуется.
Скетч приведён далее, его даже под спойлер прятать не надо - всего 41 строка:
#include "Wire.h" // imports the wire library for talking over I2C
#include "Adafruit_BMP085.h" // import the Pressure Sensor Library
Adafruit_BMP085 mySensor; // create sensor object called mySensor
float pressure; //Variable for holding pressure reading
int out=0;
int ANALOGPRESSURE=0;
void setup()
{
pinMode(6, OUTPUT);
mySensor.begin(); //initialize mySensor
test();
}
void loop() {
pressure=mySensor.readPressure(); //Read Pressure
ANALOGPRESSURE=map (pressure,90135,95653,0,255);//Absolute values
analogWrite (6,ANALOGPRESSURE);
delay (20000);
}
void test() {
for (int i=1;i<=255;i++)
{
analogWrite (6, i);
delay (20);
}
for (int i=255;i>=1;i--)
{
analogWrite (6, i);
delay (20);
}
delay (1000);
}
Для работы программы требуется библиотека Adafruit_BMP085.h
Разберём одну строку кода:
ANALOGPRESSURE=map (pressure,90135,95653,0,255);//Absolute values
Здесь 90135 и 95653 - минимальное и максимальное абсолютное давление в местности, где проживает автор, а 0 и 255 - минимальное и максимальное значение байта на входе ЦАП. Первые два числа необходимо поменять на минимальное и максимальное значение абсолютного давления в вашей местности (потребуется знать свою высоту над уровнем моря). Шкалу можно отградуировать в значениях как абсолютного, так и относительного давления - мастер предпочёл второй вариант. В расчётах вам поможет этот калькулятор. Возможна и градуировка шкалы в привычных миллиметрах ртутного столба, тут калькулятор потребуется этот.
Останется изготовить или приобрести подходящий корпус, предусмотрев в нём отверстия для уравнивания внутреннего давления с внешним, и готов удобный и недорогой барометр.
Источник (Source)