Вывод времени на OLED экран...
- Войдите на сайт для отправки комментариев
Пнд, 21/09/2015 - 08:53
Добрый день проблема скажем так с азов... вывести время на экран
#include <OneWire.h>
#include <Wire.h>
#include <RTClib.h>
#include <OLED_I2C.h>
OLED myOLED(SDA, SCL, 8);
extern uint8_t SmallFont[];
RTC_DS1307 RTC;
void setup () {
Wire.begin();
RTC.begin();
myOLED.begin();
//RTC.adjust(DateTime(__DATE__, __TIME__));
}
void loop (){
DateTime myTime = RTC.now();
myOLED.print(myTime.year(), 4,4);
}
ругается на
myOLED.print(myTime.year(), 4,4);
invalid conversion from 'uint16_t {aka unsigned int}' to 'char*' [-fpermissive]
подскажите что можно подправить...
попробуй так
#include <OneWire.h> #include <Wire.h> #include <RTClib.h> #include <OLED_I2C.h> OLED myOLED(SDA, SCL, 8); extern uint8_t SmallFont[]; RTC_DS1307 RTC; void setup () { Wire.begin(); RTC.begin(); myOLED.begin(); //RTC.adjust(DateTime(__DATE__, __TIME__)); } void loop (){ DateTime myTime = RTC.now(); myOLED.print(String(myTime.year()), 4,4); }То есть вам не очевидно?
Большое спасибо! теперь по аналогии надеюсь температура заведется...
да почему бы и нет. реальных причин не вижу
Не говори загадками
Назрел очередной вопрос.
У меня DS3231 подключена к A0 A1 при работе с библиотекой DS1307.h время выводится как положено
#include <OLED_I2C.h> // Подключение библиотеки для дисплея OLED myOLED(SDA, SCL, 8); #include <DS1307.h> // Подключение библиотеки для часового модуля DS1307 rtc(A0, A1); void setup() { myOLED.begin(); rtc.halt(false); } void loop(){ String stringOne = rtc.getTimeStr(); myOLED.print(stringOne.substring(0,2), 4, 12); // Отображение часов myOLED.print("/", 51, 12); // Отображение двоеточия myOLED.print(stringOne.substring(3,5), 75, 12); // Отображение минут myOLED.update(); }а с библиотекой (
RTClib.h)время (часы минуты) воводятся как 165 165 соответсвенно, что может в чем может быть проблема?Логичный вопрос чем меня не устравивает библиотека DS1307 а тем что делаю реле времени и в примере используется unixtime а данной переменной нету в данной библиотеке
либо если есть у Вас время переделать этот год под бибилиотеку DS1307
#include <OneWire.h> #include <Wire.h> #include <RTClib.h> #include <OLED_I2C.h> OLED myOLED(SDA, SCL, 8); //Подключение выходов const int RelayChn1 = 5; //Используем цифровой ПОРТ 5 для ПЕРВОГО канала релейного модуля #define mn 60UL #define hr 3600UL //----------Настройки времени и продолжительности включения реле //----------1 аквариум //----------Первый канал---------------------------- const long StartRelCn_1 = 8*hr+30*mn; const long DurationCh_1 = 9*hr+31*mn; RTC_DS1307 RTC; void setup () { Wire.begin(); RTC.begin(); //RTC.adjust(DateTime(__DATE__, __TIME__)); // строка только для первой компиляции!!! DateTime myTime = RTC.now(); //RTC.adjust(DateTime(myTime.unixtime()+15)); //строка только для первой компиляции!!! //RTC.adjust(DateTime(myTime.unixtime()+3));//для второй компиляции, коррекция при перезагрузках Arduino на 3 сек. //Первоначальные установки выходов pinMode(RelayChn1,OUTPUT); //Инициализируем порт для 1 канала как ВЫХОД digitalWrite(RelayChn1,HIGH); //Устанавливаем на входах релейного модуля ВЫСОКИЙ уровень myOLED.begin(); myOLED.clrScr(); } //*************************************************** void loop () { DateTime myTime = RTC.now(); uint32_t utime = myTime.unixtime(); utime %=86400; //----------------------------релейная настройка начало------------------ //------------КАНАЛ 1------------------------------ if ((utime >= StartRelCn_1) && (utime < (StartRelCn_1+DurationCh_1))) { digitalWrite(RelayChn1,LOW); //Устанавливаем на входе релейного модуля НИЗКИЙ уровень - реле срабатывает myOLED.print("Chanel 1 ON", 90, 0); } else { digitalWrite(RelayChn1,HIGH); //Устанавливаем на входе релейного модуля ВЫСОКИЙ уровень - реле выключается myOLED.print("Chanel 1 OFF", 90, 0); } }Или подсказать как добавить Unixtime в библиотеку либо кодом как то ее описать
> У меня DS3231 подключена к A0 A1
А нахрена? Аппаратного i2c мало?
> а с библиотекой (
RTClib.h)время (часы минуты) воводятся как 165 165 соответсвенноНу что-то ты не так делаешь.
> используется unixtime а данной переменной нету в данной библиотеке
А я вот не знал и передаю unixtime с одной ардуины на другую. Вот как так?
> У меня DS3231 подключена к A0 A1
А нахрена? Аппаратного i2c мало?
> а с библиотекой (
RTClib.h)время (часы минуты) воводятся как 165 165 соответсвенноНу что-то ты не так делаешь.
> используется unixtime а данной переменной нету в данной библиотеке
А я вот не знал и передаю unixtime с одной ардуины на другую. Вот как так?
Тогда раз вы опытнее в этом вопросе быть может подскажете апаратный i2c что это или к каким пинам подключать (часовой модуль у меня arduino nano v3)
я описал что подключая к A0 и A1 выводится такие значения
раз передаете подскажите,
я понимаю прикольно глумиться, но после подколов можно было и подсказать...
Берем распиновку nano и ищем глазами пини с функциями SDA и SCL. Они внезапно A5 и A4 соответственно.
Подключаем, пишем скетч, получаем часики.
Вот спасибо!, в этом и была проблема, теперь время показывает логика работает, еще раз спасибо