Не получается вывести переменные с модуля часов ds1302 на OLED 128х64
- Войдите на сайт для отправки комментариев
Ср, 11/04/2018 - 14:58
Всем привет! Пытаюсь сделать часы на Ардуино Uno и модуле ds1302. Пишу скетч, переменные времени прекрасно выводятся в Serial, а вот при выводе на дисплей, получаем кракозябры, какие-то случайные цифры и буквы! Что я делаю не так?
#include <iarduino_RTC.h>
iarduino_RTC time(RTC_DS1302, 2, 3, 4);
#include <OLED_I2C.h>
OLED myOLED(SDA, SCL, 8);
extern uint8_t SmallFont[];
extern uint8_t MegaNumbers[];
void setup() {
delay(300);
Serial.begin(9600);
time.begin();
myOLED.begin();
myOLED.setFont(MegaNumbers);
time.gettime();
}
void loop() {
if (millis() % 1000 == 0) { // если прошла 1 секунда
myOLED.setFont(SmallFont);
myOLED.print(time.Hours, LEFT, 13); // Переменная часов на OLED выводится криво,
Serial.println (time.Hours); // а в Serial выводится правильно
myOLED.print(time.minutes, RIGHT, 13);
Serial.println (time.minutes);
myOLED.setFont(SmallFont);
myOLED.print(time.gettime("d-m-Y"), LEFT, 2);
myOLED.print(time.seconds, RIGHT, 2); /
myOLED.update();
}
}
А Вы что-нибудь, безо всяких часов можете выести на этот экран?
Для начала забудьте про часы и научитесь просто выводить на экран число 321. Как научитесь,сделайте тоже самое, но с переменной.
После этого никаких вопросов про часы у Вас уже не останется.
А Вы что-нибудь, безо всяких часов можете выести на этот экран?
Для начала забудьте про часы и научитесь просто выводить на экран число 321. Как научитесь,сделайте тоже самое, но с переменной.
После этого никаких вопросов про часы у Вас уже не останется.
Спасибо за совет, мысля пошла! Сделал с помощью объекта класса String так:
#include <iarduino_RTC.h> iarduino_RTC time(RTC_DS1302, 2, 3, 4); #include <OLED_I2C.h> OLED myOLED(SDA, SCL, 8); extern uint8_t SmallFont[]; extern uint8_t MegaNumbers[]; void setup() { delay(300); Serial.begin(9600); time.begin(); myOLED.begin(); myOLED.setFont(MegaNumbers); time.gettime(); } void loop() { if (millis() % 1000 == 0) { // если прошла 1 секунда myOLED.setFont(MegaNumbers); myOLED.print(String (time.Hours), LEFT, 13); myOLED.print(String (time.minutes), RIGHT, 13); myOLED.setFont(SmallFont); myOLED.print(time.gettime("d-m-Y"), LEFT, 2); myOLED.print(String (time.seconds), RIGHT, 2); myOLED.update(); } }Это правильно?
Ну, если правильно показывает, значит правильно.