Отображение значений из функции на GLCD
Я новичок в Arduino и пробую свой первый Pro Mini. Мне удалось найти код DS1302 на github, который работает отлично. Моя проблема заключается в попытке добавить код LM35 для отображения данных о температуре и времени.
Кажется, код не запускает функции Цельсия и Фаренгейта. Я прикрепил свой код. Любая помощь будет оценена по достоинству.
//Требуемая библиотека - http://www.rinkydinkelectronics.com/library.php?id=5
//Запись в блоге - http://overskill.alexshu.com/ds1302-real-time-clock-w-arduino/
#include "U8glib.h"
#include <DS1302.h>
#include <PreciseLM35.h>
//целое число с плавающей точкой pinLM35 = A0;
const int pinLM35 = A0;
PreciseLM35 lm35(pinLM35, DEFAULT);
DS1302 rtc(2, 3, 4);
U8GLIB_ST7920_128X64 u8g(13, 11, 12, U8G_PIN_NONE);
void setup(void) {
rtc.halt(false);
rtc.writeProtect(false);
// Следующие строки можно закомментировать, чтобы использовать значения, уже сохраненные в DS1302
// После того, как вы прошьете Arduino правильным временем.
//rtc.setDOW(FRIDAY); // Установить день недели на ПЯТНИЦУ
//rtc.setTime(12, 0, 0); // Устанавливаем время на 12:00:00 (24-часовой формат)
//rtc.setDate(6, 8, 2010); // Устанавливаем дату на 6 августа 2010 г.
// назначить значение цвета по умолчанию
if (u8g.getMode() == U8G_MODE_R3G3B2)
u8g.setColorIndex(255); // белый
else if (u8g.getMode() == U8G_MODE_GRAY2BIT)
u8g.setColorIndex(3); // максимальная интенсивность
else if (u8g.getMode() == U8G_MODE_BW)
u8g.setColorIndex(1); // пиксель включен
}
void draw(void) {
u8g.setFont(u8g_font_04b_03);
u8g.drawStr( 2,5, "******************************");
u8g.drawStr( 13,10, "Arduino Pro Mini Control ");
u8g.drawStr( 24,20, (rtc.getTimeStr()));
u8g.drawStr( 1,20, "TIME: ");
u8g.drawStr(70,20, "Temp (C): ");
u8g.drawStr (80,20, (lm35.readCelsius()));
u8g.drawStr( 25,30, rtc.getDOWStr());
u8g.drawStr(70,30, "Temp (F): ");
u8g.drawStr(3,30, "DAY: ");
u8g.drawStr(80,30, (lm35.readFahrenheit()));
u8g.drawStr( 24,40, rtc.getDateStr());
u8g.drawStr(1,40, "DATE: ");
u8g.drawStr(70,40, "AREF : ");
u8g.drawStr(80,40, (lm35.readPreciseAref()));
u8g.drawStr( 15,55, "DS1302 Real Time Clock");
u8g.drawStr( 2,65, "********************************");
}
void loop(void) {
// цикл изображения
u8g.firstPage();
do {
draw();
} while(u8g.nextPage()); //u8g.nextPage()
// перестраиваем картинку после некоторой задержки
delay(500);
}
@Michael Bennett, 👍0
Обсуждение0
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Пробовали ли вы отправить вывод функций на последовательный монитор и посмотреть, связана ли проблема с библиотекой отображения или функциями?, @Code Gorilla
Я использовал этот код: u8g.setPrintPos(110,20);, @Michael Bennett