Минимум памяти
- Войдите на сайт для отправки комментариев
Пт, 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. Как угодно. Удачи.