В Serial показания датчиков выводит - на ST7735 нет.
- Войдите на сайт для отправки комментариев
Сб, 07/03/2020 - 21:13
#include <SFE_BMP180.h> #include <Wire.h> #include <DS3231.h> #include <DHT.h> #include <TFT.h> #include <SPI.h> #define cs 10 #define dc 9 #define rst 8 SFE_BMP180 pressure; int DHTPIN = 2; DHT dht(DHTPIN, DHT22); unsigned long sec_60; TFT TFTscreen = TFT(cs, dc, rst); DS3231 clock; RTCDateTime dt; void setup() { Serial.begin(9600); dht.begin(); pressure.begin(); TFTscreen.begin(); clock.begin(); // Manual (YYYY, MM, DD, HH, II, SS //clock.setDateTime(2020, 2, 13, 21, 30, 00); } void loop() { goto first_launching; circle: if (millis() - sec_60 > 60000){ sec_60 = millis(); first_launching: int h = dht.readHumidity(); int t = dht.readTemperature(); double T, P; pressure.getPressure(P, T); Serial.println(h); Serial.println(t); Serial.println(P,2); TFTscreen.background(0, 0, 0); dt = clock.getDateTime(); TFTscreen.setTextSize(5); TFTscreen.stroke(255, 255, 255); TFTscreen.text(clock.dateFormat("H:i:s", dt),7,10); TFTscreen.setTextSize(2); TFTscreen.stroke(242, 133, 7); TFTscreen.text(dht.readHumidity("h"), 20, 90); TFTscreen.text(clock.dateFormat("d.m.Y", dt), 20, 110); } goto circle; }
Не знаю, как работать с чтением температуры и влажности для вывода на экран. В сериал выводит данные в типе int, да дисплей просит float, но при изменении с int на float все равно ничего не выходит. Пробовал по-разному, никак не работает. В проекте: TFT ST7735, DHT22, BMP180, DS3231
Example к библиотеке TFT рисует цифири на экране?
Так Вы же разные вещи выводит на экран и в сериал. Попробуйте выводить одинаковые, чтобы хоть понятно было в чём беда.
Да
Так Вы же разные вещи выводит на экран и в сериал. Попробуйте выводить одинаковые, чтобы хоть понятно было в чём беда.
Извиняюсь, как в сериал тоже пробовал, ничего не вышло и я начал экспериментировать, тоже нифига.
P. S. не знаю что еще написать к этому дефекту
Выглядит как адекватное решение, но компилятор выдает:
Если экзампл рисует, то берете команды, которые выводят цифири, копипастите в свой скетч и подставляете в них свои переменные.
P. S. не знаю что еще написать к этому дефекту
Напишите вывод одного и того же - одинаковых переменных. И выложите
1) скетч
2) протокол того, что вывелось в сериал (копипастом)
3) фото того, что вывелось на экран
TFTscreen.text("15", 20, 90);
Выводит как ASCII, в кавычках, в типе float
скетч переписывать не буду, меняется по сути 1-2 строки:
1.
2.
3.
Полный бред и набор бессмыслицы в тысячи вариантах исполнения, используя разные методы и ключевые слова
З. Ы. хоть инт, хоть флоат - сути не меняет
скетч переписывать не буду, меняется по сути 1-2 строки:
Т.е. делать то, что я Вас попросил в посте #6 Вы не будете, и я не увижу что и как у Вас печатается, чтобы понять в чём проблема?
Ну, тогда, извините, хорошего вечера.
скетч переписывать не буду, меняется по сути 1-2 строки:
Т.е. делать то, что я Вас попросил в посте #6 Вы не будете, и я не увижу что и как у Вас печатается, чтобы понять в чём проблема?
Ну, тогда, извините, хорошего вечера.
Хочу, чтобы Вы обратили внимание на пост #1.
Yee, а откуда вдруг идея, что ТФТ нужен флоат? Вы описание к библиотеке не пробовали читать?
Хочу, чтобы Вы обратили внимание на пост #1.
и на что там обращать внимание?
Хочу, чтобы Вы обратили внимание на пост #1.
Я уже обратил и сказал Вам, что там Вы в сериал выводите одни переменные, а на экран другие. Потому и попросил Вас вывести одни и те же, и показать мне, что выводится. Но, раз Вам это не нужно, мне - тем более. Удачи.
Хорошо, немного изменим суть вопроса. КАК ПРАВИЛЬНО преобразовать данные из int в const char чтобы вывести данные на экран. С сериалом проблем нет, все нормально преобразуется, здесь же что-то не идет.
через String к примеру
не определяется как ключевое слово (не подсвечивается оранжевым)
Yee, посмотрите соседнюю тему "работа с ТФТ дисплеем", там пример вывода
Ссылка на библиотеку TFT засветить.
http://arduino.cc/en/Reference/TFTLibrary
Неплохо бы показать и сам дисплейчик. А то может он "не той системы".
Ну вот же, пример как вывести int.
ST7735, 1.8''
пытался, мозг не осилил... будь я индивидом с iq выше 30, столько бы не мучался, сами понимаете... Попробую с другой библиотекой, мб что выйдет
Ну, ёпрст, подставь вместо analogRead(A0) свои переменные. У меня такой же IQ, ничо, как-то стараюсь.
https://www.youtube.com/watch?v=HIZzJJG-YeM Повторите что делает автор ролика. И так пока не заработает скетч приведеный в ролике.
Ну, ёпрст, подставь вместо analogRead(A0) свои переменные. У меня такой же IQ, ничо, как-то стараюсь.
Вы не видите, но я утек под стол от счастья! Спасибо Вам огромное! <3
Да, очень сложно было посмотреть тут
Да, очень сложно было посмотреть тут
Это же не наш метод!
Да, очень сложно было посмотреть тут
Это же не наш метод!
я думал, что Вы за String сейчас побурчите, ан нет )))
я думал, что Вы за String сейчас побурчите, ан нет )))
Вы меня с кем-то путаете. А не делэефоб, не стрингофоб, не гоутуфоб и т.п. Я совершенно нормально отношусь ко всем этим прекрасным вещам :-)
Да, очень сложно было посмотреть тут
Да смотрел я там, только путём ничего не понял, а потом sadman объяснил всё. Только сейчас вот думаю, как преобразовать показания с барометра (там по библиотеке тип данных double) так, чтобы перевести их в символы и вывести на дисплей. Через String не работает, компилятор пишет, что тип данных не подходит
где:
floatvar - преобразуемая переменная типа float;
StringLengthIncDecimalPoint - длина получаемого символьного значения;
numVarsAfterDecimal - количество символов после запятой;
charbuf - символьный массив для сохранения результата преобразования
Только все равно ничего не выводится на экран, сижу дальше :)
Интересное наблюдение: когда DHT22 не подключен к ардуино, показания с BMР180 нормально выводятся на экран, когда же датчик температуры/влажности стоит на своем законном месте и подключен к плате, давление на экран не выводит. А когда не подключен барометр, то показания влажности адекватные: 50-60% (хотя с ним доходит до 70-80%). Плюс, когда вывожу только показания с давлением, после двух чисел после запятой вылезают два рандомных символа
yeee,
Вы читаете, что Вам говорит компилятор? Или плевать на него?
У Вас в строках №№42-45 ошибок штук шесть - эти строки - вообще одна сплошная ошибка! Вы вообще, понимаете, что в этих строках написано?
Вот например (одна ошибка из шести), Вы в строке №42 объявляете переменную Т, а потом передаёте её библиотеке. Вопрос: где, когда и при каких обстоятельствах Вы присвоили её хоть какое-то разумное значение?
yeee,
Вы читаете, что Вам говорит компилятор? Или плевать на него?
У Вас в строках №№42-45 ошибок штук шесть - эти строки - вообще одна сплошная ошибка! Вы вообще, понимаете, что в этих строках написано?
Вот например (одна ошибка из шести), Вы в строке №42 объявляете переменную Т, а потом передаёте её библиотеке. Вопрос: где, когда и при каких обстоятельствах Вы присвоили её хоть какое-то разумное значение?
Компилятор пишет, что загрузка завершена) Переменная "t" осталась от прошлых попыток вывести значения давления на экран.
эти строки я удалил, извиняюсь, что забыл удалить их и здесь. А переменная Т это уже идет из библиотеки к BMP180, её значение равно давлению в миллибарах.
Вот например (одна ошибка из шести), Вы в строке №42 объявляете переменную Т, а потом передаёте её библиотеке. Вопрос: где, когда и при каких обстоятельствах Вы присвоили её хоть какое-то разумное значение?
https://github.com/LowPowerLab/SFE_BMP180
см. пример скетча
https://github.com/LowPowerLab/SFE_BMP180
см. пример скетча
ИМХО, в библиотеке пример с ошибкой
В самом коде библиотеки функция описана так
то есть надо передавать адреса переменных, а не значения. как в примере (и как у вас)
Найдите того, кто это Вам сказал и плюньте в наглую рожу.
Это Вы должны передать T библиотеке, а не она Вам. Она его там использует. Вот текст этого метода - там и комментарий есть и использование видно.
В самом коде библиотеки функция описана так
Дак это "передача по ссылке". Так что синтаксически верно, а вот алгоритмически - нет, ибо:
А вот T в коде yeee равна неизвестно чему и неизвестно что с ней сделает компилятор.
то есть надо передавать адреса переменных, а не значения. как в примере (и как у вас)
Это ссылки, а не адреса. Передача внешне ничем не отличается от передачи значений.
Это ссылки, а не адреса. Передача внешне ничем не отличается от передачи значений.
рука-лицо :)
ОК, надо мне все ж таки серьезно в этом разобраться....
Что-то я совсем запутался... А как тогда мне вывести данные на дисплей? Если не прописывать переменную Т, то что? И почему в моем случае давление не выводится на дисплей когда подключен DHT22???
Я вообще удивлен тому, что не зависает все сразу после того, как в двубайтовые массивы по четыре байта запихивают.
в некоторые по 4, а кое-куда даже 6 :)
Самое интересное, что при четырехбайтовом массиве выводилось только первая цифра
Для меня это тоже загадка :)
Самое интересное, что при четырехбайтовом массиве выводилось только первая цифра
потому что массив для строчки давления должен быть длиной 7 байт
yeee, заремьте все, что связано с TFT, добейтесь чтобы в Serial выводились правильные текстовые строки. Дисплей пока мешается.
Массив может быть один, возьмите его с запасом, символов на 15 и используйте его в каждом преобразовании число->строка.
Что-то я совсем запутался... А как тогда мне вывести данные на дисплей? Если не прописывать переменную Т, то что? И почему в моем случае давление не выводится на дисплей когда подключен DHT22???
Вы прочитали тест программы, который я Вам привёл? Хотя бы комментарии? Нет? Так прочитайте! Фраза: "T: previously-calculated temperature" Вам ни о чём не говорит? Непонятно, что туда нужно передавать?