Нужна помощь OLED часы-погодная станция.
- Войдите на сайт для отправки комментариев
Вс, 04/03/2018 - 17:18
Здравствуйте, столкнулся с проблемой, собрал OLED часы на arduino nano с показанием температуры и влажности. Но возникла проблема с отображением отрицательной температуры (датчик температуры 18b20, датчик влажности DHT 11) искал на просторах интернета толком не нашел ничего. Если изменить шрифт с MegaNumbers на BigNumbers то отображает отрицательную температуру, но не сильно красиво получаеться. Библиотека для Oled I2C UKR_RUS. Если кто то знает в какую сторону копать, буду очень благодарен!
#include <dht11.h>
dht11 sensor;
#define DHT11PIN A2
#include <OLED_I2C.h>
//SDA pin -> Arduino A4 или иной назначенный SDA pin
//SCL pin -> Arduino A5 или иной назначенный SCL pin
OLED myOLED(A4, A5, 8); //пины OLED: SDA на A4, SCK на A5 Arduino
extern uint8_t MegaNumbers[];//Установка шрифтов Больших
extern uint8_t RusFont[];// Установка русских шрифтов
extern uint8_t SmallFont[];// Установка малых шрифтов
extern uint8_t term[];//картинка термометра
extern uint8_t grad[];//картинка градуса
extern uint8_t water[];//картинка флажности
extern uint8_t percentage[];//картинка процента
#include <OneWire.h>//подключение библиотеки однопроводного интерфейса
OneWire ds(A3); // пин сенсора датчика температуры (средняя ножка) DS18b20 к пину A1 Arduino. Не забываем этот пин сенсора подтянуть к 3,3V сопротивлением!
#include <DS1307.h>//подключение библиотеки часового модуля
DS1307 rtc(A0, A1);//часовой модуль подключен к пинам Arduino: Vcc к +5V, GND к 3емле, SDA к A3, SCL к A2
Time t; // присвоение переменной для времени
int x = 0;
int y = 0; //добавка
void setup() {
myOLED.begin();
rtc.halt(false);
//rtc.setDOW(SUNDAY); // Настройка для недели настроить при первом
//rtc.setTime(14, 57, 0); // Настройка часов
//rtc.setDate(04, 03, 2018); // Настройка даты
}
void loop() {
sensor.read(A2); // Пин сенсора на Ардуино подключать только на цифровые выходы
if (x >= 10) { // 10 количество секунд, для переключения на температуру
temp();
delay(4000); //добавка
water_proc(); // добавка
delay(8000); //добавка
x=0;
}
else
{
watch();
}
x++;
}
void watch() {
myOLED.setFont(RusFont);
t = rtc.getTime();
switch (t.dow)
{
case 1: myOLED.print("GJYTLTKMYBR", CENTER, 0); break;
case 2: myOLED.print("DNJHYBR", CENTER, 0); break;
case 3: myOLED.print("CHTLF", CENTER, 0); break;
case 4: myOLED.print("XTNDTHU", CENTER, 0); break;
case 5: myOLED.print("GZNYBWF", CENTER, 0); break;
case 6: myOLED.print("CE<<JNF", CENTER, 0); break;
case 7: myOLED.print("DJCRHTCTYMT", CENTER, 0); break;
}
String stringOne = rtc.getTimeStr();
myOLED.setFont(MegaNumbers);
myOLED.print(stringOne.substring(0, 2), 4, 15);
myOLED.print("/", 51, 12);
myOLED.print(stringOne.substring(3, 5), 75, 15);
myOLED.setFont(RusFont);
switch (t.mon)
{
case 1:
myOLED.print(String(t.date), 30, 57);
myOLED.print("ZYDFHZ", CENTER, 57);
myOLED.print(String(t.year), 88, 57);
break;
case 2:
myOLED.print(String(t.date), 26, 57);
myOLED.print("ATDHFKZ", CENTER, 57);
myOLED.print(String(t.year), 92, 57);
break;
case 3:
myOLED.print(String(t.date), 30, 57);
myOLED.print("VFHNF", CENTER, 57);
myOLED.print(String(t.year), 88, 57);
break;
case 4:
myOLED.print(String(t.date), 30, 57);
myOLED.print("FGHTKZ", CENTER, 57);
myOLED.print(String(t.year), 88, 57);
break;
case 5:
myOLED.print(String(t.date), 36, 57);
myOLED.print("VFZ", CENTER, 57);
myOLED.print(String(t.year), 82, 57);
break;
case 6:
myOLED.print(String(t.date), 35, 57);
myOLED.print("B>YZ", CENTER, 57);
myOLED.print(String(t.year), 81, 57);
break;
case 7:
myOLED.print(String(t.date), 35, 57);
myOLED.print("B>KZ", CENTER, 57);
myOLED.print(String(t.year), 81, 57);
break;
case 8:
myOLED.print(String(t.date), 28, 57);
myOLED.print("FDUECNF", CENTER, 57);
myOLED.print(String(t.year), 90, 57);
break;
case 9:
myOLED.print(String(t.date), 24, 57);
myOLED.print("CTYNZ<HZ", CENTER, 57);
myOLED.print(String(t.year), 94, 57);
break;
case 10:
myOLED.print(String(t.date), 26, 57);
myOLED.print("JRNZ<HZ", CENTER, 57);
myOLED.print(String(t.year), 92, 57);
break;
case 11:
myOLED.print(String(t.date), 28, 57);
myOLED.print("YJZ<HZ", CENTER, 57);
myOLED.print(String(t.year), 90, 57);
break;
case 12:
myOLED.print(String(t.date), 26, 57);
myOLED.print("LTRF<HZ", CENTER, 57);
myOLED.print(String(t.year), 92, 57);
break;
}
myOLED.update();
delay(450);
myOLED.setFont(MegaNumbers);
myOLED.print("-", 51, 15);
myOLED.update();
delay(450);
}
void temp() {
for(int x = 0; x < 10; x++){
byte data[2];
ds.reset();
ds.write(0xCC);
ds.write(0x44);
delay(500);
ds.reset();
ds.write(0xCC);
ds.write(0xBE);
data[0] = ds.read();
data[1] = ds.read();
int Temp = (data[1] << 8) + data[0];
Temp = Temp >> 4;
String stringOne = rtc.getTimeStr();
myOLED.clrScr();
myOLED.setFont(SmallFont);
myOLED.print(stringOne.substring(0, 5), 98, 0);
myOLED.print(rtc.getDateStr(), 0, 0);
myOLED.setFont(RusFont);
myOLED.print("NTVGTHFNEHF", CENTER, 57); //Температура
myOLED.drawBitmap(4, 18, term, 19, 40);
myOLED.setFont(MegaNumbers);
myOLED.print(String(Temp), CENTER, 15);
myOLED.drawBitmap(92, 18, grad, 13, 12);
myOLED.update();
myOLED.clrScr();
// Serial.println(sensor.temperature,1);
}
}
void water_proc() {
for(int y = 0; y < 20; y++)
{
String stringOne = rtc.getTimeStr();
myOLED.clrScr();
myOLED.setFont(SmallFont);
myOLED.print(stringOne.substring(0, 5), 98, 0);
myOLED.print(rtc.getDateStr(), 0, 0);
myOLED.setFont(RusFont);
myOLED.print("DKF:YJCNM", CENTER, 57); // Влажность
myOLED.drawBitmap(4, 18, water, 20, 40);
myOLED.setFont(MegaNumbers);
myOLED.print(String(sensor.humidity), CENTER, 15);
myOLED.drawBitmap(90, 18, percentage, 35, 35);
myOLED.update();
myOLED.clrScr();
// Serial.println(sensor.humidity,1);
}
}
Радикальное решение проблемы - поставить рядом нагреватель, чтобы температура не опускалась ниже нуля.
Код, естественно, не смотрел.
И никто не будет смотреть неправильно вставленный код.
Судя по словесному описанию, в фонте отсутствует символ "-". Либо дополняйте, либо пользуйтесь библиотекой, где он есть.
В комментариях к коду бардак.
Вставьте код правильно (иначе его только мазохисты читать будут) и дайте фото - что показывается вместо - с большим шрифтом.
#include <dht11.h> dht11 sensor; #define DHT11PIN A2 #include <OLED_I2C.h> //SDA pin -> Arduino A4 или иной назначенный SDA pin //SCL pin -> Arduino A5 или иной назначенный SCL pin OLED myOLED(A4, A5, 8); //пины OLED: SDA на A4, SCK на A5 Arduino extern uint8_t MegaNumbers[];//Установка шрифтов Больших extern uint8_t RusFont[];// Установка русских шрифтов extern uint8_t SmallFont[];// Установка малых шрифтов extern uint8_t term[];//картинка термометра extern uint8_t grad[];//картинка градуса extern uint8_t water[];//картинка флажности extern uint8_t percentage[];//картинка процента #include <OneWire.h>//подключение библиотеки однопроводного интерфейса OneWire ds(A3); // пин сенсора датчика температуры (средняя ножка) DS18b20 к пину A1 Arduino. Не забываем этот пин сенсора подтянуть к 3,3V сопротивлением! #include <DS1307.h>//подключение библиотеки часового модуля DS1307 rtc(A0, A1);//часовой модуль подключен к пинам Arduino: Vcc к +5V, GND к 3емле, SDA к A3, SCL к A2 Time t; // присвоение переменной для времени int x = 0; int y = 0; //добавка void setup() { myOLED.begin(); rtc.halt(false); //rtc.setDOW(SUNDAY); // Настройка для недели настроить при первом //rtc.setTime(14, 57, 0); // Настройка часов //rtc.setDate(04, 03, 2018); // Настройка даты } void loop() { sensor.read(A2); // Пин сенсора на Ардуино подключать только на цифровые выходы if (x >= 10) { // 10 количество секунд, для переключения на температуру temp(); delay(4000); //добавка water_proc(); // добавка delay(8000); //добавка x=0; } else { watch(); } x++; } void watch() { myOLED.setFont(RusFont); t = rtc.getTime(); switch (t.dow) { case 1: myOLED.print("GJYTLTKMYBR", CENTER, 0); break; case 2: myOLED.print("DNJHYBR", CENTER, 0); break; case 3: myOLED.print("CHTLF", CENTER, 0); break; case 4: myOLED.print("XTNDTHU", CENTER, 0); break; case 5: myOLED.print("GZNYBWF", CENTER, 0); break; case 6: myOLED.print("CE<<JNF", CENTER, 0); break; case 7: myOLED.print("DJCRHTCTYMT", CENTER, 0); break; } String stringOne = rtc.getTimeStr(); myOLED.setFont(MegaNumbers); myOLED.print(stringOne.substring(0, 2), 4, 15); myOLED.print("/", 51, 12); myOLED.print(stringOne.substring(3, 5), 75, 15); myOLED.setFont(RusFont); switch (t.mon) { case 1: myOLED.print(String(t.date), 30, 57); myOLED.print("ZYDFHZ", CENTER, 57); myOLED.print(String(t.year), 88, 57); break; case 2: myOLED.print(String(t.date), 26, 57); myOLED.print("ATDHFKZ", CENTER, 57); myOLED.print(String(t.year), 92, 57); break; case 3: myOLED.print(String(t.date), 30, 57); myOLED.print("VFHNF", CENTER, 57); myOLED.print(String(t.year), 88, 57); break; case 4: myOLED.print(String(t.date), 30, 57); myOLED.print("FGHTKZ", CENTER, 57); myOLED.print(String(t.year), 88, 57); break; case 5: myOLED.print(String(t.date), 36, 57); myOLED.print("VFZ", CENTER, 57); myOLED.print(String(t.year), 82, 57); break; case 6: myOLED.print(String(t.date), 35, 57); myOLED.print("B>YZ", CENTER, 57); myOLED.print(String(t.year), 81, 57); break; case 7: myOLED.print(String(t.date), 35, 57); myOLED.print("B>KZ", CENTER, 57); myOLED.print(String(t.year), 81, 57); break; case 8: myOLED.print(String(t.date), 28, 57); myOLED.print("FDUECNF", CENTER, 57); myOLED.print(String(t.year), 90, 57); break; case 9: myOLED.print(String(t.date), 24, 57); myOLED.print("CTYNZ<HZ", CENTER, 57); myOLED.print(String(t.year), 94, 57); break; case 10: myOLED.print(String(t.date), 26, 57); myOLED.print("JRNZ<HZ", CENTER, 57); myOLED.print(String(t.year), 92, 57); break; case 11: myOLED.print(String(t.date), 28, 57); myOLED.print("YJZ<HZ", CENTER, 57); myOLED.print(String(t.year), 90, 57); break; case 12: myOLED.print(String(t.date), 26, 57); myOLED.print("LTRF<HZ", CENTER, 57); myOLED.print(String(t.year), 92, 57); break; } myOLED.update(); delay(450); myOLED.setFont(MegaNumbers); myOLED.print("-", 51, 15); myOLED.update(); delay(450); } void temp() { for(int x = 0; x < 10; x++){ byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); delay(500); ds.reset(); ds.write(0xCC); ds.write(0xBE); data[0] = ds.read(); data[1] = ds.read(); int Temp = (data[1] << 8) + data[0]; Temp = Temp >> 4; String stringOne = rtc.getTimeStr(); myOLED.clrScr(); myOLED.setFont(SmallFont); myOLED.print(stringOne.substring(0, 5), 98, 0); myOLED.print(rtc.getDateStr(), 0, 0); myOLED.setFont(RusFont); myOLED.print("NTVGTHFNEHF", CENTER, 57); //Температура myOLED.drawBitmap(4, 18, term, 19, 40); myOLED.setFont(MegaNumbers); myOLED.print(String(Temp), CENTER, 15); myOLED.drawBitmap(92, 18, grad, 13, 12); myOLED.update(); myOLED.clrScr(); // Serial.println(sensor.temperature,1); } } void water_proc() { for(int y = 0; y < 20; y++) { String stringOne = rtc.getTimeStr(); myOLED.clrScr(); myOLED.setFont(SmallFont); myOLED.print(stringOne.substring(0, 5), 98, 0); myOLED.print(rtc.getDateStr(), 0, 0); myOLED.setFont(RusFont); myOLED.print("DKF:YJCNM", CENTER, 57); // Влажность myOLED.drawBitmap(4, 18, water, 20, 40); myOLED.setFont(MegaNumbers); myOLED.print(String(sensor.humidity), CENTER, 15); myOLED.drawBitmap(90, 18, percentage, 35, 35); myOLED.update(); myOLED.clrScr(); // Serial.println(sensor.humidity,1); }С большим шрифтом ничего не показывает при минусовой температуре, только цифры сьезжают вправо, как буд то пробел стоит там
Фото выложить в лом?
Значит нет там в шрифте минуса, а на его месте пробел. Полезьте и добавьте минус.
Изменить нужно в файле DefaultFonts.c я вас правильно понял, не сильно еще разбираюсь. Открываю этот файл через блокнот и там где fontdatatype fontdatatyp MegaNumbers[] PROGMEM =
0x18,0x28,0x2D,0x0D,
есть строка где ничего не стоит, я ставлю -, по новой заливаю скетч не меняеться ничего, наверно не там меняю?
Похоже, у Вас левая библиотека (и почему новички никогда не дают ссылок - всё вытягивать клещами надо!)
Возьмите вот эту (там есть ссылка "Download ZIP") , в ней вроде уже есть.
Увы не помогло, в ней нет шрифта MegaNumbers цифры получаются мелкие. А можно самому добавить знак минус?
есть строка где ничего не стоит, я ставлю -, по новой заливаю скетч не меняеться ничего, наверно не там меняю?
меняете в правильном месте, только надо не "минус" добавлять в конце строки - а всю строку из шестнадцитиричных символов пересчитывать так, чтобы на экране рисовался символ минуса Сделать это можно вручную, если разобраться с системой кодирования символов
Увы не помогло, в ней нет шрифта MegaNumbers цифры получаются мелкие. А можно самому добавить знак минус?
Можно, конечно, только ... Вы моего намёка не поняли?
(и почему новички никогда не дают ссылок - всё вытягивать клещами надо!)
Вот как мне прикажете угадывать что, как и куда добавить?
Я вас понял))
http://data-ru.ru/forum/download/file.php?id=9
Скачивал библиотеку от сюда, в ней русские, украинские шрифты, думал она битая искал в интернете такие же, то же самое стоит пробел.
От библиотеки это не зависит, просто в этом шоифте нет символа минуса. Либо рисуйте сами, либо просите кого-то, чтоб нарисовал.
Вы не знаете где можно посмотреть как это сделать?
От библиотеки это не зависит
Ну, как, он же спросил в какое место его всунуть и как рислвать - а это как раз зависит от библиотеки. Вот, приду домой, посмотрю что там за библиотека, и, если разберусь чего там куда пихать, отпишусь.
Ну, как, он же спросил в какое место его всунуть и как рислвать - а это как раз зависит от библиотеки. Вот, приду домой, посмотрю что там за библиотека, и, если разберусь чего там куда пихать, отпишусь.
Мы может говорим об одном и том же, но, ИМХО, это зависит не от библиотеки, а а формата фонта. Этот фонт входит в состав нескольких библиотек.
http://arduino.ru/forum/proekty/binfontstool-redaktor-shriftov-adafruitg...
Пробовал менять, в строчке где пробел стоит в место нулей ставил буквы из примера который скинули, ничего на экране сразу абра кадабра получаеться)
Погодите, завтра я доберусь до ней. Сегодня не получилось.
Anton95
я вам ссылку дал на редактор в котором ваш вопрос решается за две минуты. откройте в нем ваш файл со шрифтами установив чтение "fontdatatype" как OLED_I2C. дорисуйте необходимые символы или загрузите их из другого шрифта и сохраните полученный шрифт как OLED_I2C. можно сохранить в исходный файл с заменой шрифта. поэкспериментируйте. нужен только эксель.
PS будет здорово если вы попробуете посоздавать шрифты для OLED_I2C разной высоты - больше 8 и не кратно 8. сам эту библиотеку не использовал, есть сомнения относительно шрифтов с такими размерами.
Антон, я разобрался в этом шрифте.
Он там сделан нестандартно (не как все), т.к. он огромный и его нестандартность позволяет сэкономить место в памяти.
Чтобы мне не расписывать все варианты, а их великое множество, ответьте на вопросы:
1. В Вашем шрифте сейчас есть 10 цифр, пробел, точка и двоеточие (двоеточие печатается если попытаться печатать символ '/'). Вам все эти символы нужны? Или можно минус вместо какого-то из них вставить?
2. Заинтересованы ли Вы в корректной работе функций printNumI и printNumF (сейчас они не печатают отрицательные числа, но это можно починить) или они Вам не нужны?
3. Согласны ли Вы, что шрифт увеличится в размере на 120 байтов (именно столько надо, чтобы добавить новый символ, сохранив имеющиеся).
вот, нарисовал тире) замените этим строку массива первого символа и все заработает. сомневаюсь в целесообразности символа пробела в таком шрифте, он не для печати фраз.
Не, пробел нужен хотя бы, чтобы старую цифру стереть.
ну как самый простой вариант. цена ток дорогая в данном случае) тут есть функция clrRect, можно ей закрашивать прямоугольник.
Ну, пусть ТС думает что ему нужно, а что - нет. Я бы лучше от двоеточия избавился, чем от пробела (а если пмять пожиала бы, то и от того, и от другого :)
1. Да, цифры используются все, двоеточие тоже в показаниях времени, пробел тоже нужен без него совсем все плохо получаеться сливается все. А вот точка не используется нигде.
2. Не совсем понял, хочеться, что бы при минусовой температуре с датчика на экран выводилась минусовая температура с знаком (-) щас выходит просто сдвинуто, может именно из за них (printNumI и printNumF) невозможный показ отрицательных чисел?
3. Сейчас скетч использует 41% памяти ардуинки, думаю влезит с изменениями, если я конечно правильно понял вас)
2. Не совсем понял, хочеться, что бы при минусовой температуре с датчика на экран выводилась минусовая температура с знаком (-) щас выходит просто сдвинуто, может именно из за них (printNumI и printNumF) невозможный показ отрицательных чисел?
Ну, отрицательные числа не выводятся потому, что нет минуса.
А вопрос был простой - Вы пользуете printNumI и printNumF или нет?
Вроде нигде не используется.
http://arduino-project.net/oled-chasy-na-arduino/ сам проект был взят от сюда, только добавлено еще показания влажности. А да точки используються в маленьком шрифте (при показании числа, мясяца и года), это играет роль?
сдвинуты потому-что вместо знака минус выводится пробел - в массиве шрифта MegaNumbers на месте знака минус стоят одни нули, это и есть пробел. замените строчку со всеми нулями на строчку которую я вам дал, в шрифте появится знак минус. даже с маленькими рюшечками, в стиле шрифта. замените строчку массива знака точка на строчку со всеми нулями и у вас будет пробел на месте символа точки которую вы не используете. т.е. когда надо напечатать пробел, будете печатать точку.
вот вам версия этого же шрифта с высотой символов 35 точек, отрезал незначащие. он съэкономит память, но у меня нет уверенности, что он правильно отобразится библиотекой. проверьте пожалуйста
// OLED_I2C font MegaNumbers35 size: 24x35 fontdatatype MegaNumbers35[] PROGMEM = { 0x18,0x23,0x2D,0x0D, // size 24x35, first 45, count 13 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x1C,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3F,0x3F, 0x3F,0x3F,0x3C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // symbol - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x70,0xF8,0xFC,0xFE,0xFE,0xFC,0xF8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // symbol . 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x1F,0x1F,0x1F,0x0F,0x07,0x03, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xC0,0xE0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x07,0x03,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xE0,0xF0,0xF8,0xFC,0xFC,0xF8,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // symbol / 0x00,0x00,0x00,0x00,0x01,0x03,0x0F,0x1F,0x3C,0x7E,0xFE,0xFF,0xFF,0x7F,0x7F,0x3F, 0x1F,0x0F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x1F,0x7F,0xFF,0xFF,0xE0,0x00, 0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8,0xFF,0xFF,0xFF,0xFF,0x7F,0x07,0x00,0x00, 0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x1F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xFF,0xFF,0xFF,0xFE,0xE0,0x00,0x00,0x00,0x00,0x80,0xE0,0xF8,0xFC,0xFE,0xFF, 0xFF,0xFF,0x7F,0x3F,0x3F,0x1F,0x0F,0x3E,0xFC,0xF8,0xE0,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x13, // digit 0 0x00,0x00,0x00,0x00,0x00,0x02,0x07,0x0F,0x1F,0x3F,0x7F,0x7F,0x3F,0x1F,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x0F,0x0E,0x0C,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, // digit 1 0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFE,0x7E,0x7C,0x3E,0x1F, 0x0F,0x0F,0x07,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xF0,0xE0, 0xC0,0x80,0x00,0x00,0x00,0x01,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x0F,0x1F,0x3F,0xFE,0xFC,0xFC,0xF8, 0xF0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0F,0x3F,0x7F,0xFF,0xFF, 0xDF,0xBF,0xBF,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x1F,0x1F,0x1F,0x1E,0x08,0x00,0x00, 0x03,0x69,0x20,0x00,0x00,0x00,0x00,0x00,0x00, // digit 2 0x00,0x00,0x00,0x06,0x0F,0x1F,0x3F,0x3F,0x7F,0xFE,0xFC,0xFC,0x78,0x78,0x3F,0x3F, 0x1F,0x1F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC3,0x83, 0x03,0x07,0x07,0x0F,0x1F,0x7F,0xFF,0xFF,0xFF,0xFC,0xF8,0xE0,0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x03,0x07,0x07,0x83,0x81,0x80,0x80,0x80,0x80,0xC0,0xE0,0xFC,0xFF, 0xFF,0xFF,0x7F,0x3F,0x1F,0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF, 0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x1F,0xFE,0xFE,0xFC,0xF8,0xF8,0xE0,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x92, // digit 3 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x0F,0x3E,0xFF,0xFF,0xFF,0x7F, 0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x1F,0x3E,0xF8, 0xE0,0xC0,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xFE,0xFE,0xFE,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0x3E,0xFF,0xFF,0xFF,0xFF, 0xFF,0x3E,0x3E,0x3E,0x3E,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x04,0x1E,0xFE,0xFF,0xFF,0xFF,0xFF,0x1F,0x0E,0x1C,0x1C,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // digit 4 0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC, 0xFC,0xFC,0xF0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x03, 0x07,0x0F,0x1F,0x1F,0x3F,0x7F,0x3F,0x3F,0x1F,0x0F,0x07,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x20,0xE1,0xE1,0xC1,0x80,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8, 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x30,0x78,0xFC,0xFC,0xFE,0xFF, 0x7F,0x7F,0x3F,0x1F,0x1F,0x0F,0x0F,0x3E,0xFC,0xFC,0xF0,0xE0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12, // digit 5 0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x0F,0x1F,0x3C,0x7C,0xFE,0xFE,0xFF,0x7F,0x7F, 0x3F,0x1F,0x1F,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x3F,0xFF,0xFF,0xFF,0xF0, 0x81,0x03,0x03,0x07,0x0F,0x0F,0x9F,0x9F,0xDF,0x8F,0x07,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xC1,0xC0,0x80,0x00,0x80,0xC0,0xE0,0xF0, 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF8,0xFC,0xFE,0xFF, 0xFF,0xFF,0x7F,0x3F,0x1F,0x1F,0x0E,0x3E,0xFC,0xF8,0xE0,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12, // digit 6 0x00,0x00,0x00,0x03,0x1F,0x7F,0xFE,0xFE,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFD, 0xFF,0xFF,0xFE,0xFC,0xF0,0xE0,0x00,0x00,0x00,0x00,0xC0,0xC0,0xC0,0x00,0x00,0x00, 0x00,0x01,0x03,0x0F,0x1F,0x7F,0xFF,0xF8,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0F,0x7F,0xFF,0xFF,0xFF,0xFE,0xE0,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x01,0x24,0x00,0x00,0x00,0x00,0x00,0x00, // digit 7 0x00,0x00,0x00,0x01,0x07,0x0F,0x3F,0x7C,0xFC,0xFC,0xFC,0xFC,0xFC,0xFE,0xFE,0xFF, 0x7F,0x3F,0x1F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0x3F,0x1F, 0x1F,0x0F,0x0F,0x0F,0x0F,0x0F,0x1F,0xFF,0xFF,0xF7,0xE3,0x80,0x00,0x00,0x00,0x00, 0x00,0x00,0x07,0x9F,0xFF,0xFF,0xF0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xF0,0xF0, 0xF8,0xFE,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xF8,0xFE,0xFF,0xFF,0xFF,0x7F, 0x3F,0x3F,0x1F,0x1F,0x1F,0x1F,0x1F,0x3E,0x3C,0xF8,0xF0,0xC0,0x00,0x00,0x00,0x00, 0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x93, // digit 8 0x00,0x00,0x00,0x03,0x07,0x0F,0x1F,0x3C,0x7C,0x7C,0xFE,0xFF,0xFF,0x7F,0x3F,0x3F, 0x1F,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x1E,0xFF,0xFF,0xFF,0xFF,0x0F,0x03, 0x01,0x00,0x00,0x00,0x80,0xC1,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00, 0x00,0x00,0xC0,0xF0,0xF8,0xFC,0xFD,0xFE,0xFC,0xF8,0x78,0x70,0xE0,0xE0,0xC1,0x9F, 0xFF,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x7C,0xFE,0xFE,0xFF, 0x7F,0x7F,0x3F,0x1F,0x1F,0x3E,0xFC,0xF8,0xF0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12 // digit 9 };Ну, собственно, Вам всё уже подсказали.
Заменил в фрнте, вместо знака точки поставил минус тот что дали, потому что если менять вместо пробела на минус на экране появляються черточки, прийду домой проверю на показания минусовой температуры в морозилке)) а так с такими изменениями никаких черточек пока нет
А можно вычитанием воспользоваться.
А можно вычитанием воспользоваться.
Заменил все как вы написали, теперь такая беда вышла вместе с мигащим двоиточьем появился знак минус, за то отрицательная температура теперь со знаком минус))) Горе с этими часами)
Можно по подробнее? вот если вставить этот код в скетч, то показывает знак и плюс и минус, но опять же пробел мешает и при двузначном значении отрицательной температуры цифры сливаються со знаком градуса
if (Temp > 0) { myOLED.print("+", 30, 30); } else { myOLED.print("-", 30, 30); }Заменил все как вы написали, теперь такая беда вышла вместе с мигащим двоиточьем появился знак минус, за то отрицательная температура теперь со знаком минус))) Горе с этими часами)
Так не выводите туда пробел, а просто отступите сменой координат
} String stringOne = rtc.getTimeStr(); myOLED.setFont(MegaNumbers); myOLED.print(stringOne.substring(0, 2), 4, 15); myOLED.print("/", 51, 12); myOLED.print(stringOne.substring(3, 5), 75, 15); myOLED.setFont(RusFont); switch (t.mon) {Здесь нужно поиграться с числами? Извините просто не силен в этом)
Здесь я не вижу в каком месте Вы туда пробел пихаете, видимо в другом.
Как Вы делаете мигание двоеточия? Наверняка там Вы выводите пробел (печатаете символ "минус". Найдите это место и замените печать минуса на стирание области (clr)
Поставл там где стоял знак "-" clr появилась вот такая штука мигающая) оставлял постыми лапки, такая ж фигня) Взял поставил в обеих :, только изменил координаты, теперь двоиточья мигают в верх, вниз)
Ничего не понял из Вашего объяснения, что мигает, в какой верх и какой низ - ничего непонятно. Если clr дала такой эффект, значит Вы её неправильно вставили. Код-то у Вас секретный, Бог Вас значет, что Вы там творите.
Короче, простой вопрос, программировать совсем не умеете? Так?
Тогда, забудьте про все наши советы по экономии места и добавляйте дполонительный символ в оригиналтьный шрифт.
Если исходить из приведенного вами полного кода с учетом того, что мы изменили в шрифте использовавшийся ранее как пробел символ минус на знак минус и символ точка заменили на пробел, то в строке 134 надо заменить печать символа "-" на символ "."
Все, спасибо большое теперь понял.