У меня мониторчик http://ru.aliexpress.com/item/Brand...-Module-For/32324491926.html?isOrigTitle=true, DTH22 и Ардуино про мини, мне не хватает памяти под проект. В связи с этим хочу оптимизировать код библиотек <SPI.h>, <Wire.h>, <Adafruit_GFX.h>, <Adafruit_SSD1306.h> под конкретно мой пример. Подскажите плиз, ведь эти библиотеки и под I2C, если почистить, то код в целом станет меньше??? Мне всего-то нужно вывести на экран 2 строчки: температуру и время. Или как это сделать без этим МОНСТРОИДАЛЬНЫХ библиотек. Пожалуйста помогите новичку
Вариант 1. Покажите код (если там нет ни ничего секретного), может там есть возможности оптимизации. К примеру может, что-то повторяющееся можно вынести в отдельные функции и т.д. Вариант 2. Взять к примеру Mega 2560R3. Вариант 3. Перейти на уровень ниже AVR и Си. Путь далеко не самый простой и легкий, но в сети все есть. Минус такие решения будут работать, только с теми платами, для которых напишите код. Лучше конечно, если Вы выберите вариант 1 или 2, для новичка это будет значительно проще. Если Вы все таки остановитесь на 3. Требуется знание СИ. Вот почти готовые решения (но их нужно понять, а это потребует не мало времени, далеко не неделю). 1. I2C (TWI) - http://chipenable.ru/index.php/prog...ispolzovaniya-twi-modulya-osnovy-i2c-ch1.html. (5 статей). 2. SPI - http://chipenable.ru/index.php/programming-avr/item/137-avr-spi-module.html (3 статьи). и т.д. 3. Библиотеку придется переписать саму (задача далеко не простая, лучше поискать в интернете может найдете в сети, что-то более оптимальное). Ближе к вечеру, попробую подключить библиотеки и посмотреть, сколько им нужно.
Спасибо за отклик ) Вот нашел один вариант: https://github.com/stanleyseow/Ardu...aster/libraries/SSD1306_text/SSD1306_text.cpp, но у меня кучу ошибок компиляции выскакивает. А так как я понял на Ардуино Про мини есть HW SPI, и по словам автора памяти в два раза меньше требуется чем для Adafruit. Помогите мне этот пример дожать. Пока отлаживаюсь на Ардуино УНО. Arduino: 1.6.5 (Windows 7), Плата"Arduino Uno" In file included from SSD1306_text.cpp:14:0: SSD1306_text.cpp: In member function 'virtual size_t SSD1306_text::write(uint8_t)': C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.h:17:27: warning: comparison is always false due to limited range of data type [-Wtype-limits] #define SSD1306_LCDWIDTH 128 ^ SSD1306_text.cpp:120:17: note: in expansion of macro 'SSD1306_LCDWIDTH' if (col_ >= SSD1306_LCDWIDTH) return 0; ^ C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.h:17:27: warning: comparison is always false due to limited range of data type [-Wtype-limits] #define SSD1306_LCDWIDTH 128 ^ SSD1306_text.cpp:130:19: note: in expansion of macro 'SSD1306_LCDWIDTH' if (col_ >= SSD1306_LCDWIDTH) break; ^ In file included from C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example\SSD1306_text.cpp:14:0: C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example\SSD1306_text.cpp: In member function 'virtual size_t SSD1306_text::write(uint8_t)': C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.h:17:27: warning: comparison is always false due to limited range of data type [-Wtype-limits] #define SSD1306_LCDWIDTH 128 ^ C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example\SSD1306_text.cpp:120:17: note: in expansion of macro 'SSD1306_LCDWIDTH' if (col_ >= SSD1306_LCDWIDTH) return 0; ^ C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.h:17:27: warning: comparison is always false due to limited range of data type [-Wtype-limits] #define SSD1306_LCDWIDTH 128 ^ C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example\SSD1306_text.cpp:130:19: note: in expansion of macro 'SSD1306_LCDWIDTH' if (col_ >= SSD1306_LCDWIDTH) break; ^ OLED_text_HW_SPI_example\SSD1306_text.cpp.o: In function `SSD1306_text::write(char const*)': C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.cpp:179: multiple definition of `SSD1306_text::write(char const*)' SSD1306_text.cpp.o:C:\Users\SergeyLP\AppData\Local\Temp\build3486508190815244967.tmp/SSD1306_text.cpp:179: first defined here OLED_text_HW_SPI_example\SSD1306_text.cpp.o: In function `SSD1306_text::write(char const*)': C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.cpp:179: multiple definition of `SSD1306_text::sendCommand(unsigned char)' SSD1306_text.cpp.o:C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:209: first defined here OLED_text_HW_SPI_example\SSD1306_text.cpp.o: In function `SSD1306_text::write(char const*)': C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.cpp:179: multiple definition of `SSD1306_text::init()' SSD1306_text.cpp.o:C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:209: first defined here OLED_text_HW_SPI_example\SSD1306_text.cpp.o: In function `SSD1306_text::write(char const*)': C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.cpp:179: multiple definition of `SSD1306_text::clear()' SSD1306_text.cpp.o:C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:209: first defined here OLED_text_HW_SPI_example\SSD1306_text.cpp.o: In function `SSD1306_text::write(char const*)': C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.cpp:179: multiple definition of `SSD1306_text::setCursor(unsigned char, unsigned char)' SSD1306_text.cpp.o:C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:209: first defined here OLED_text_HW_SPI_example\SSD1306_text.cpp.o: In function `SSD1306_text::write(char const*)': C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.cpp:179: multiple definition of `SSD1306_text::sendData(unsigned char)' SSD1306_text.cpp.o:C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:209: first defined here OLED_text_HW_SPI_example\SSD1306_text.cpp.o: In function `SSD1306_text::write(char const*)': C:\Program Files (x86)\Arduino\libraries\OLED_text_HW_SPI_example/SSD1306_text.cpp:179: multiple definition of `SSD1306_text::write(unsigned char)' SSD1306_text.cpp.o:C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI/SPI.h:209: first defined here collect2.exe: error: ld returned 1 exit status Ошибка компиляции. Это сообщение будет содержать больше информации чем "Отображать вывод во время компиляции" включено в Файл > Настройки
Не секрет, это свободный код, на его основе я хотел писать на экранчике текст и вставлять значения. https://github.com/adafruit/Adafruit_SSD1306/tree/master/examples/ssd1306_128x64_spi
Если не сложно проверте у себя пример выше с длинным списком ошибок очень интересно в чем ошибка, а то так и помру тупым
Вот новая библиотека конкретно для этого дисплея, причем с поддержкой русских букв. Для уменьшения размеров выкинута графика и совместимость с другими дисплеями.
У меня нет IDE 1.65 (на турбазе, не смогу скачать плохой инет), но есть 1.61. У меня не появилось ошибок. Возможно у Вас проблема, в подключенной библиотеки, ругается на многое, все описывать не буду посмотрите тут - http://forum.amperka.ru/threads/Работа-с-библиотеками.4253/. Залил у себя, вот результат Он говорит, о том, что могут быть проблемы. Речь идет о оперативной памяти. Да HW SPI, есть, как и у Uno и т.д. В примере SSD1306_text используется я библиотека SPI или софт SPI. Просто выводит текст.А в примере ssd1306_128x64_spi только библиотека SPI и I2C, для разных интерфейсов. Тут уже есть возможность рисовать на дисплее.