Нужна помощь! BMP 180 Вывод показаний на OLED дисплей 128х64
- Войдите на сайт для отправки комментариев
Ср, 20/02/2019 - 18:40
Доброго времени!
Надоели Вам уже наверное такие делитанты как и я, но все же...
Помогите пожалуйста с решением проблемы. Не пойму как вывести данные на OLED дисплей 128х64.
Есть код который считывает показатели с BMP 180, но как их вывести на экран, не пойму. Подскажите пожалуйста в каком направлении рыть?
Код:
#include <SFE_BMP180.h> #include <Wire.h> SFE_BMP180 pressure; #define ALTITUDE 465.0 void setup() { Serial.begin(9600); Serial.println("Перезагрузка"); // "ПЕРЕЗАГРУЗКА" if (pressure.begin()) Serial.println("Датчик опознан..."); else { Serial.println("Датчик не опознан..."); while(1); } } void loop() { char status; double T,P,p0,a; Serial.println(); Serial.print("Предоставленная высота: "); // "заданная высота над уровнем моря" Serial.print(ALTITUDE,0); Serial.print(" Метров, "); // " метров, " Serial.print(ALTITUDE*3.28084,0); Serial.println(" Футов"); // " футов, " status = pressure.startTemperature(); if (status != 0) { delay(status); status = pressure.getTemperature(T); if (status != 0) { Serial.print("Температура: "); // "температура: " Serial.print(T,2); Serial.print(" °С, "); // " градусов Цельсия, " Serial.print((9.0/5.0)*T+32.0,2); Serial.println(" °F"); // " градусов Фаренгейта" status = pressure.startPressure(3); if (status != 0) { delay(status); status = pressure.getPressure(P,T); if (status != 0) { Serial.print("Обс. давление: "); Serial.print(P,2); Serial.print(" mb, "); Serial.print(P*0.0295333727,2); Serial.println(" inHg"); p0 = pressure.sealevel(P,ALTITUDE); Serial.print("От. давление: "); Serial.print(p0,2); Serial.print(" mb, "); Serial.print(p0*0.0295333727,2); Serial.println(" inHg"); a = pressure.altitude(P,p0); Serial.print("Рас. высота: "); Serial.print(a,0); Serial.print(" Метров, "); Serial.print(a*3.28084,0); Serial.println(" Футов"); } else Serial.println("error retrieving pressure measurement\n"); } else Serial.println("error starting pressure measurement\n"); } else Serial.println("error retrieving temperature measurement\n"); } else Serial.println("error starting temperature measurement\n"); delay(5000); }
Если не подключить библиотеку для OLED, то можно написать на бумашке и приклеить к экранчику
Библиотеки будут подключены вот эти:
Думаю, да
Спасибо!
Но мой вопрос по прежнему актуальный.
Как вывести показания на OLED дисплей?
эта лучше подойдёт
Спасибо.
Спасибо!
Но мой вопрос по прежнему актуальный.
Как вывести показания на OLED дисплей?
Разными функциями класса OLED. Думаю, print() пададеть.
Ванечка, как измерить силушку, богатырскую? Просто, нянечка, помножить массушку на ускореньице.
А есть у вас две задачи, одну, получение данных от датчика, вы решили. Теперь решите вторую, вывод разных переменных на дисплей. Когда она решиться, останеться только переменным из второй задачи присвоить значения переменной из первой. От.
И пожалуй, в песочницу перемещу. От.
С песочницей согласен.
Ибо, как сделать то, что Вы описали, я не знаю.
Если не сложно, привидите пожалуйста пример кода, хотя бы по выводу температуры, отталкиваясь от моего кода.
Заранее благодарен!
"Везде пишут, что ардуино это просто! Пофакту, не так это просто и тот материал который есть, не всего полный, либо отсутствует нужный. Новичку тяжело освоиться" (с) Чьи-то слова.
Можно пример кода по выводу хотябы температуры, отталкиваясь от моего кода?
Ну нет у меня такого дисплея. Найдите библиотеку для него, подключите и поиграйтесь с примерами. Когда поймете, как выводятся переменные, так и задачка решиться.
Ну нет у меня такого дисплея. Найдите библиотеку для него, подключите и поиграйтесь с примерами. Когда поймете, как выводятся переменные, так и задачка решиться.
Как выводить текс, я разобрался, нашел пример кода, но как вывести показатели с датчика, не могу понять.
Уже неделю мучаюсь.
Библиотек очень много, пример используемых привел выше.
В любом случае спасибо за отклик на мои сообщения.
Ну не может быть, чтобы в примерах только текст. Там и переменные должны быть, и целочисленные, и с плавающей точкой, и с ограничением числа десятичных разрядов.
Покажите, как Вы выводите на дисплей хоть что-то.
Покажите, как Вы выводите на дисплей хоть что-то.
Видео смогу завтра загрузить. Сейчас уже лег отдыхать, у нас уже час ночи.
Ну не может быть, чтобы в примерах только текст. Там и переменные должны быть, и целочисленные, и с плавающей точкой, и с ограничением числа десятичных разрядов.
Нет примера пары вмр и олэд. Есть вмр и экран 16х2, я пытался изменить код под олэд дисплей, но ничего не вышло. Скорее всего, не понимая, делал просто не правильно.
Спасибо.
Завтра буду разбираться куда этот код вставлять в основном коде.
Ну не может быть, чтобы в примерах только текст. Там и переменные должны быть, и целочисленные, и с плавающей точкой, и с ограничением числа десятичных разрядов.
Да не нужна вам никакая пара и код с интернета никакой не нужен. Есть библиотека для вашего дисплея, в ней есть примеры, которые вы, надеюсь, использовали. Вот и приведите сюда код этих примеров. Садману еще только видео не хватало.
Ну не может быть, чтобы в примерах только текст. Там и переменные должны быть, и целочисленные, и с плавающей точкой, и с ограничением числа десятичных разрядов.
Да не нужна вам никакая пара и код с интернета никакой не нужен. Есть библиотека для вашего дисплея, в ней есть примеры, которые вы, надеюсь, использовали. Вот и приведите сюда код этих примеров. Садману еще только видео не хватало.
Я правильно понимаю, папка с библиотекой содержит примеры вывода данных с датчика на дисплей?
Вы меня извините, но это все новое для меня.
Я код брал из интернета, вместе с библиотеками.
Примеры показывают, как выводить на дисплей значения переменных. Когда вы этому научитесь, никто не сможет вам помешать присвоить переменной значение с датчика. Ведь с сериалом получается, а там те-же самые переменные.
Примеры показывают, как выводить на дисплей значения переменных. Когда вы этому научитесь, никто не сможет вам помешать присвоить переменной значение с датчика. Ведь с сериалом получается, а там те-же самые переменные.
Сейчас занимаюсь изучением кода, но все же не пойму, как объединить вывод данных с датчика на экран. Сейчас скину код которым вывожу текст на экран.
Примеры показывают, как выводить на дисплей значения переменных. Когда вы этому научитесь, никто не сможет вам помешать присвоить переменной значение с датчика. Ведь с сериалом получается, а там те-же самые переменные.
Вот скетч которым запускл экран:
https://github.com/adafruit/Adafruit_SSD1306/blob/master/examples/ssd130...
На место 0xDEADBEEF вполне себе можно подставить переменную.
https://github.com/adafruit/Adafruit_SSD1306/blob/master/examples/ssd130...
На место 0xDEADBEEF вполне себе можно подставить переменную.
sadman41 - О Вас тоже отзываются как о хорошем специалисте. Порекомендовали с Вами работать.
В какую часть моего скетча вставлять предоставленный Вами код? Подскажите пожалуйста.
Юзаю Ютуб по урокам программирования для ардуино.
Юзаю Ютуб по урокам программирования для ардуино.
Бросьте каку, лучше книжку какую из песочницы почитайте.
Юзаю Ютуб по урокам программирования для ардуино.
на рутрекере есть.
то что надо для начала
Юзаю Ютуб по урокам программирования для ардуино.
Бросьте каку, лучше книжку какую из песочницы почитайте.
=0)
Там человек постоянно ссылается на этот сайт как на надежный источник для начинающих. Да и за короткие ролики более менее начинаешь понимать, хотя бы как зажечь светодиод. =0)
Юзаю Ютуб по урокам программирования для ардуино.
на рутрекере есть.
то что надо для начала
Сейчас скачаю.
В какую часть моего скетча вставлять предоставленный Вами код? Подскажите пожалуйста.
display.print() - это такой же Serial.print(), но только на дисплей. Так что - где Serial.print() работает, туда и display.print() пристраивайте.
В какую часть моего скетча вставлять предоставленный Вами код? Подскажите пожалуйста.
display.print() - это такой же Serial.print(), но только на дисплей. Так что - где Serial.print() работает, туда и display.print() пристраивайте.
Сейчас буду тестить. Исходя из моего скетча, нужно подключать дополнительные библиотеки?
У меня подключено все по такой распиновки:
Железо:
Arduino Nano V3.0
Датчик BMP180
Дисплэй OLED 0,96" SSD 1306
Распиновка:
Дисплэй
SDA -> D4
SCK -> D5
VDD -> +5V
GND -> GND
BMP 180
SDA -> A4
SCK -> A5
VDD -> V3V
GND -> GND
Всеправильно подключено?
I2C шина у Nano - на выходах A4, A5. Дисплей, полагаю, подключается по I2C. В этом случае пины подключения дисплея ошибочны.
Библиотеки конечно подключать нужно. Перетащить инклюды и инициализацию дисплея из #7
I2C шина у Nano - на выходах A4, A5. Дисплей, полагаю, подключается по I2C. В этом случае пины подключения дисплея ошибочны.
Библиотеки конечно подключать нужно. Перетащить инклюды и инициализацию дисплея из #7
Вот это
Вставил под это:
Получилось вот так:
Правильно сделал?
I2C шина у Nano - на выходах A4, A5. Дисплей, полагаю, подключается по I2C. В этом случае пины подключения дисплея ошибочны.
Библиотеки конечно подключать нужно. Перетащить инклюды и инициализацию дисплея из #7
Выдает такую ошибку: Arduino: 1.8.8 (Windows 7), Плата:"Arduino Nano, ATmega328P (Old Bootloader)"
I2C шина у Nano - на выходах A4, A5. Дисплей, полагаю, подключается по I2C. В этом случае пины подключения дисплея ошибочны.
Библиотеки конечно подключать нужно. Перетащить инклюды и инициализацию дисплея из #7
Строка на которую ругается: display.setTextSize(1); // Draw 2X-scale text
Правильно сделал?
Полный код приведите, полагаю, что не подключили библиотеки дисплея.
I2C шина у Nano - на выходах A4, A5. Дисплей, полагаю, подключается по I2C. В этом случае пины подключения дисплея ошибочны.
Библиотеки конечно подключать нужно. Перетащить инклюды и инициализацию дисплея из #7
Проблему с ошибкой решил, компиляция скетча прошла успешно.
После загрузки на Ардуинку, на экран ничего не выводится. Ранее на экране крутилась надпись Hello Viki!, после загрузки скетча она просто остановилась и горит первой строкой.
Что сделал не так?
Правильно сделал?
Полный код приведите, полагаю, что не подключили библиотеки дисплея.
Обсалютно правый! Упустил одну строку, но уже все исправил. Данные не выводятся, чуть выше описал.
Это не отменяет предложение про полный код, раз не работает.
Это не отменяет предложение про полный код, раз не работает.
Да, да... Вот полный код.
Полагаю, что еще перед выводом нужно позицию начала рисования указать. Типа display.setCursor(5, 0);
У меня такого дисплея нет с собой, так что могу только общие соображения высказывать.
А сериал что нибудь при этом выдает.
Полагаю, что еще перед выводом нужно позицию начала рисования указать. Типа display.setCursor(5, 0);
У меня такого дисплея нет с собой, так что могу только общие соображения высказывать.
Готов пробавать любые Ваши догадки!
Вставил к остальным дисплеям:
Ошибок не показывает, но и на экран ничего не выводит. =0(
А кроме как в сериал в данном скетче в loop ничего никуда и не пытается выводиться. Так что всё правильно работает. Вывело заставку и всё.
А сериал что нибудь при этом выдает.
Где смотреть?
А кроме как в сериал в данном скетче в loop ничего никуда и не пытается выводиться. Так что всё правильно работает. Вывело заставку и всё.
Как поправить?
А, ну точно. Читайте свои же комментарии:
display.display();
// Как я понял, команда позволяет вывести текст на экран.
А кроме как в сериал в данном скетче в loop ничего никуда и не пытается выводиться. Так что всё правильно работает. Вывело заставку и всё.
Функцию display.display() запускать?
Вместо какой-то фигни в строках 57-58 нужно печатать Ваши переменные. Всё завершать вызовом display.display().
А почему Вы примеры не посмотрите от библиотеки Adafruit_SSD1306 ?