Минимум памяти
- Войдите на сайт для отправки комментариев
Пт, 21/08/2015 - 21:49
при удачной загруски скетча пишет вот такую строчку: Минимум памяти, стабильность могут возникнуть проблемы.
исходник
#include <dht11.h>
#include <DHT.h>
#define DHTPIN 7
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#include <OLED_I2C.h>
OLED myOLED(SDA, SCL, 8);
extern uint8_t MegaNumbers[];
extern uint8_t RusFont[];
extern uint8_t SmallFont[];
extern uint8_t term[];
extern uint8_t grad[];
extern uint8_t hum[];
extern uint8_t proc[];
#include <DS1302.h>
DS1302 rtc(2,3,4);
Time t;
int x = 0;
void setup() {
myOLED.begin();
rtc.halt(false);
//rtc.setDOW(FRIDAY);
//rtc.setTime(18, 36, 0);
//rtc.setDate(20, 8, 2015);
}
void loop() {
if (x >= 10) {
temp();
dht11();
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, 12);
myOLED.print("/", 51, 12);
myOLED.print(stringOne.substring(3, 5), 75, 12);
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, 12);
myOLED.update();
delay(450);
}
void temp() {
int temp = dht.readTemperature();
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, 12, term, 19, 40);
myOLED.setFont(MegaNumbers);
myOLED.print(String(temp), CENTER, 12);
myOLED.drawBitmap(92, 12, grad, 13, 12);
myOLED.update();
delay(3000);
myOLED.clrScr();
}
void dht11(){
int h = dht.readHumidity();
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(0, 12, hum, 28, 40);
myOLED.setFont(MegaNumbers);
myOLED.print(String(h), CENTER, 12);
myOLED.drawBitmap(96, 12, proc, 28, 40);
myOLED.update();
delay(3000);
myOLED.clrScr();
}
Предупреждает Вас компилятор, что памяти много используете.
Если заметите не адекватную работу, или просто зависнит - значит на эти грабли и наступили.
Или железку менять или прогу переписывать (оптимизировать, строковые константы в флэш писать....)
Предупреждает Вас компилятор, что памяти много используете.
Если заметите не адекватную работу, или просто зависнит - значит на эти грабли и наступили.
Или железку менять или прогу переписывать (оптимизировать, строковые константы в флэш писать....)
Спасибо всю ночь роботали часики но сразу заметил что с пятницы на субботу не перешло часы тоже самое 00.55 и встали короче просто стал экран мигать.
Так что тогда за основу брать для этого проекта?. Уж раз взялся за чужой проект хотелось бы его повтарить .
Избавляться от String, сообщения держать во флеше.
к примеру таких?
к примеру таких?
Если слово String непонятно, то его можно поискать в скетче, затем в интернете
я понял что нужно от String мне ибавится, но не как недойдет даже здесь читал раз 10
может как новичку по скетчу набрасайте пример пожалуйста
http://arduino.ru/Reference/String
Это вам в "Ищу исполнителя". Могу сказать только одно, не используйте String, если памяти мало. А у Вас он на каждом шагу.
Это вам в "Ищу исполнителя". Могу сказать только одно, не используйте String, если памяти мало. А у Вас он на каждом шагу.
Я и не использую просто нашел проект и хотел сделать по его меркам себе подобное, очень хорошо смотрелось бы у меня настоле письменном.А за назойливоть извените если что.
Спасибо за помощь)))
Демагогия. В исходнике сплошные String. Как угодно. Удачи.