Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Сб дек 31, 2016 10:59:32
дисплей общается по SPI, разрешение 128 на 64
Подключен к arduino, использую adafruit библиотеки
при использовании примера и при написании своего кода, дисплей выводит через каждую 2 линию, растягивая изображение, как это исправить?
или хотя бы ткните носом где можно про это почитать
Сб дек 31, 2016 15:45:30
daaar писал(а):... хотя бы ткните носом где можно про это почитать.
Ткнуть носом - это мы всегда...
Здесь я выкладывал документацию на SSD1306.
Начните с проверки INIT-а SSD1306.
------
С Наступающим!
Сб дек 31, 2016 17:31:39
я не нашел инициализации, точнее, как я понял, он хранит настройки в энергонезависимой памяти
но из за чего может быть не правильная отрисовка я не понял, но возможно чип настроен на матрицу 32 на 128
Сб дек 31, 2016 18:24:55
При старте программы, должна быть инициализация SSD1306.
Один из вариантов INIT-а можете посмотреть на стр. 17-18 файла ER-OLED0.96-3_Manual.pdf (файл есть по ссылке в моём предыдущем посте).
Сб дек 31, 2016 23:27:29
проблема была с инициализацией, спасибо за помощь
Вс янв 01, 2017 01:31:47
daaar писал(а):...спасибо за помощь
Незачто.
С Новым Годом!
Сб фев 18, 2017 22:51:09
прошу тоже помощи, не могу разобраться с инициализацией (наверно)
не пойму что делать надо, я только начинающий) изображение растянуто через строчку
Вс фев 19, 2017 02:52:28
Слишком мало информации.
Выложите ваш вариант Init-а (последовательность данных) и, желательно, схему подключения дисплея.
Укажите по какому интерфейсу работаете.
Вс фев 19, 2017 21:15:18
подключаю к ардуино уно, по пинам думаю всё верно подключено, иначе бы не было изображения, проверял несколько раз. gnd-0 vdd-3.3v sck-10 sda-9 res-13 dc-11 cs-12
дисплей 0.96"White OLED 128X64 Ver.2 SPI
возможно нужно что то перепаять на нём, но не могу разобраться в написанной схеме. фото выложу дисплея.
Скетч заливаю стандартный <Adafruit_SSD1306.h>. Другие примеры тоже загружаются но пиксели так же через строчку.
Вот хочу признаться про Init мало знаю что это такое, как ни странно вчера потратил 2 часа на в интернете нет никакой информации, как его тестить или вводить коды. Коды нашёл а куда их писать? толи в монитор порта, толи как скетч заливать? непонятно... пробовал так и этак, монитор порта высвечивает данные х и у и ещё что то, как скетч не получается залить.
- Код:
/*********************************************************************
This is an example for our Monochrome OLEDs based on SSD1306 drivers
Pick one up today in the adafruit shop!
------> http://www.adafruit.com/category/63_98
This example is for a 128x64 size display using SPI to communicate
4 or 5 pins are required to interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, check license.txt for more information
All text above, and the splash screen must be included in any redistribution
*********************************************************************/
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// If using software SPI (the default case):
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
/* Uncomment this block to use hardware SPI
#define OLED_DC 6
#define OLED_CS 7
#define OLED_RESET 8
Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS);
*/
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH 16
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
B00000001, B11000000,
B00000001, B11000000,
B00000011, B11100000,
B11110011, B11100000,
B11111110, B11111000,
B01111110, B11111111,
B00110011, B10011111,
B00011111, B11111100,
B00001101, B01110000,
B00011011, B10100000,
B00111111, B11100000,
B00111111, B11110000,
B01111100, B11110000,
B01110000, B01110000,
B00000000, B00110000 };
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
void setup() {
Serial.begin(9600);
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC);
// init done
// Show image buffer on the display hardware.
// Since the buffer is intialized with an Adafruit splashscreen
// internally, this will display the splashscreen.
display.display();
delay(2000);
// Clear the buffer.
display.clearDisplay();
// draw a single pixel
display.drawPixel(10, 10, WHITE);
// Show the display buffer on the hardware.
// NOTE: You _must_ call display after making any drawing commands
// to make them visible on the display hardware!
display.display();
delay(2000);
display.clearDisplay();
}
весь не буду заливать чтоб место не засорять...
[img]
[img]http://img.radiokot.ru/files/122047/thumbnail/17a1jqsidx.jpg[/img][/img]
Пн фев 20, 2017 03:56:01
В тексте вашей программы я не увидел последовательность данных для Init-а SSD1306.
По неким скетчам я не могу ничего сказать, т.ч. проверьте, в первую очередь, в пошаговом режиме, какие данные вы шлёте в SSD1306 при Init-е и как работаете с линиями D/C и CS.
Так же, проверьте настройки вашего порта SPI.
Свериться можете с документацией от производителя (ссылки на pdf во втором посте).
Если с настройкой порта и в Init-е всё правильно - ищите ошибку в подпрограмме вывода картинки.
---
* Предположу, что нет ожидания (по факту) окончания передачи байта в SPI.
Пн фев 20, 2017 16:40:35
Проблема в Adafruit_SSD1306.h, там нужно найти правильный define(или не define), по дефолту стоит ssd1306 128 на 32
Нужно просто исправить это в самом header'е
Вт фев 21, 2017 01:52:46
daaar писал(а):Проблема в Adafruit_SSD1306.h, там нужно найти правильный define(или не define), по дефолту стоит ssd1306 128 на 32
Нужно просто исправить это в самом header'е
захожу в библиотеку, выбираю Adafruit_SSD1306.h, изменить, пытаюсь поменять на #define SSD1306_128_64 // #define SSD1306_128_32 но не могу сохранить. нет доступа.. как?
Добавлено after 4 minutes 17 seconds:Albert_V писал(а):В тексте вашей программы я не увидел последовательность данных для Init-а SSD1306.
По неким скетчам я не могу ничего сказать, т.ч. проверьте, в первую очередь, в пошаговом режиме, какие данные вы шлёте в SSD1306 при Init-е и как работаете с линиями D/C и CS.
Так же, проверьте настройки вашего порта SPI.
Свериться можете с документацией от производителя (ссылки на pdf во втором посте).
Если с настройкой порта и в Init-е всё правильно - ищите ошибку в подпрограмме вывода картинки.
---
* Предположу, что нет ожидания (по факту) окончания передачи байта в SPI.
подскажите где я могу научиться проверять настройки порта в init-e? немогу найти уроки или примеры. То что нахожу, там только список кодов, а куда и как вводить ничего не пишут.. как буд то это все и так знают )
п.с. может мне перепоять резисторы на i2c? может так заработает?
Вт фев 21, 2017 03:30:44
vadimg, daaar, похоже, правильно указал на проблему и способ её решения.
Что касается "проверять настройки порта в init-e" - документация на контроллеры не секретна.
Да, читать pdf-ы долго, но надо.
У вас есть три варианта:
1. Втупую скачиваете нечто из сети и прошиваете.
2. Самостоятельно пишите программу читая pdf-ы на всё, что закладываете на плату (или уже запаяно).
3. Скачав нечто из сети, пытаетесь понять что и почему именно так сделал автор программы/изделия.
На мой взгляд, третий вариант наиболее трудоёмкий.
Что касается "может мне перепоять резисторы на i2c?" - есть же документация на дисплей.
Подключение должно быть по рекомендованной производителем схеме.
Вс окт 18, 2020 09:57:14
Уважаемые! Экран сдвинут на один пиксель вверх и вправо. Как это исправляется через терминал выбором дисплея? Заранее спасибо!
Чт фев 25, 2021 02:39:38
Покупал как 128х64. В примерах от Адского Фрукта написано - адрес 64-строчного - 0х3D, 32-строчного - 0х3С. Отзывается только на 0х3С. Прописал в скетче число строк (32). Все заработало, в том числе русификатор. Изображение полосило (то есть выводилось через строчку), считал это нормально, Продавец однако убедил, что это именно 64-строчный. Задал в скетче 64 строки, при том же адресе 0х3С и, о чудо, - получил 64-строчный экран. Полосить перестало, НО - исчез русскоязычный текст. Сейчас в программе идет вывод только на три строки текста в верху экрана. В нижней части экрана мигают кракозябры, хотя скетч туда ничего не посылает. Прошу подсказать куда копать. С уважением.
Не исполняется команда
display.print(utf8rus("** ДАТА *-* ВРЕМЯ **"));
или
display.print(utf8rus("** DATE *--* TIME **"));
как будто их совсем нет в программе.
Команда
display.print("** DATE *-* TIME **");
работает нормально.
Команда
display.print("** ДАТА *-* ВРЕМЯ **");
тоже работает, но выводит естественно кракозябры
ПС. В 32-строчном режиме - все команды работают зашибись.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.