Сегодня попробуем собрать небольшую, комнатную метеостанцию с часами.
Основная задача данного проекта проверить работоспособность только что полученного датчика давления и по совместительству датчика температуры BMP085
Как и ранее нам понадобится небольшое количество железячек:
1. Arduino UNO
2.Часы реального времени 1307
3. Датчик давления и температуры BMP085
4.ЖК индикатор 1602 с интерфейсом I2C
Все вышеперечисленные устройства удачно уживаются на шине I2C, и занимают только 2 пина на Ардуино.
Линии интерфейса SDA и SCL это 4 и 5 пины соответственно.
Соединяем все вышеперечисленные элементы:
Особое внимание для питания BMP085 необходимо напряжение 3,3V
Если возникнут проблемы с экраном проверьте адрес интерфейса I2C дисплея, как это сделать смотрим здесь I2C scaner
Заливаем скетч:
//Подключаем библиотеки #include <Wire.h> //Часы #include <DS1307RTC.h> #include <Time.h> //Дисплей #include <LiquidCrystal_I2C.h> //Барометр #include <Adafruit_BMP085.h> LiquidCrystal_I2C lcd(0X27,16,2); Adafruit_BMP085 bmp; //——————————————————— void setup() { //Инициализируем устройства bmp.begin(); lcd.init(); lcd.begin(16, 2); lcd.backlight(); } //——————————————————— void loop() { //Запрос к часам tmElements_t tm; RTC.read(tm); //Устанавливаем курсор в нулевую позицию, выводим время и дату lcd.setCursor(0, 0); //для корректного вывода отсутствующих 0 обращаемся к процедуре print2digits(tm.Hour); lcd.print(":"); print2digits(tm.Minute); lcd.print(" "); print2digits(tm.Day); lcd.print("/"); print2digits(tm.Month); lcd.print("/"); lcd.print(tmYearToCalendar(tm.Year)); // Переставляем курсор во 2 строку lcd.setCursor(0, 1); // Запрашиваем и печатаем температуру lcd.print("T="); lcd.print(bmp.readTemperature()); // запрашиваем давление и делим его на коэффициент перевода из Па в мм.рт.столба, выводим полученное значение на экран lcd.print(" P="); lcd.print(bmp.readPressure()/133.322); delay(1000); //ждем 1 секунду } //———————————————————- void print2digits(int number) { if (number >= 0 && number < 10) { lcd.print('0'); } lcd.print(number); }
при компелирование кода выдаёт ошибку на эту строкуLiquidCrystal_I2C lcd(0×27,16,2); что нужно сделать чтобы было всё без ошибок
Спасибо за найденную опечатку, к сожалению при вставке на сайт его движок внес небольшие ошибки, все поправил
програма 1.0.6 версии в которой я работаю
библиотеки все у меня рабочие
int h1 = (h-(int)h)*100;
int t1 = (t-(int)t)*100;
//Формируем буфер
sprintf(dataString, «/%1d.%1d/%1d.%1d»,int(t),t1,int(h),h1);
Тут есть проблема. При переходе на отрицательную температуру показывает: -1.-23
И при отрицательной температуре ниже ноля показывает: 0.-16
Извините не в эту тему написал.
Не работает код!
sketch_jan22b.ino: In function ‘void loop()’:
sketch_jan22b:29: error: ‘tmElements_t’ was not declared in this scope
sketch_jan22b:29: error: expected `;’ before ‘tm’
sketch_jan22b:30: error: ‘RTC’ was not declared in this scope
sketch_jan22b:30: error: ‘tm’ was not declared in this scope
sketch_jan22b:42: error: ‘tmYearToCalendar’ was not declared in this scope
Все библиотеки есть. Среда 1.0.6