Например TDA7294

Форум РадиоКот • Просмотр темы - Дисплей OLED 128х64 SSD1306 I2C
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 17:14:46

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 40 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 02, 2017 07:40:40 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт авг 11, 2016 18:13:16
Сообщений: 82
Откуда: Украина
Рейтинг сообщения: 0
Прикупил себе дисплейчик на Али.
Изображение
Подключал к Ардуино - всё пучком))))Вот хочу найти библиотеку для AVR, ну или кто может переделать ардуиновскую библиотеку. На Радиокоте была статья как подключить к ATtiny2313, но как таковой библиотеки нет. А меня интересует вывод текста, картинки, рисование фигур. Может у кого есть готовая рабочая библиотека - буду благодарен. :beer:


Вложения:
OLED_I2C.zip [399.97 KiB]
Скачиваний: 689
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 02, 2017 11:43:44 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
AVR_hobby писал(а):
хочу найти библиотеку для AVR
А та, что в архиве, не для AVR ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 02, 2017 12:15:17 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт авг 11, 2016 18:13:16
Сообщений: 82
Откуда: Украина
Рейтинг сообщения: 0
Для Ардуино. Расширения файлов СРР


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 02, 2017 12:26:38 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
AVR_hobby писал(а):
Для Ардуино
А чем то отличается AVR, стоящая в ардуино, от AVR, не стоящей в ардуино ? :)

AVR_hobby писал(а):
Расширения файлов СРР
Это исполнительные файлы С++
G++ (GCC С++) компилятор Вам в помощь. Устанавливаете и наслаждаетесь.

Хотя, всё, что необходимо для запуска дисплея, есть в архиве. Все команды, последовательность инициализации, вывод массива на дисплей, ... Всё есть... Прикрутить на любой компилятор - посидеть вечерок за кружкой пива молока :)


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 02, 2017 12:37:10 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт авг 11, 2016 18:13:16
Сообщений: 82
Откуда: Украина
Рейтинг сообщения: 0
Т.е. AVR Studio 4 схавает эту библиотеку?


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 02, 2017 12:43:26 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Если она поддерживает G++, то почему бы не схавать ?
Вопрос в другом - поддерживает ли она его. На этот вопрос я ответить не смогу, нужно ждать заядлых AVR'щиков :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 02, 2017 12:57:07 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт авг 11, 2016 18:13:16
Сообщений: 82
Откуда: Украина
Рейтинг сообщения: 0
Ну вообще-то стоит GCC (Toolchein)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Ср апр 05, 2017 07:28:17 
Встал на лапы

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср окт 12, 2016 21:14:37
Сообщений: 103
Рейтинг сообщения: 0
https://bintray.com/olikraus/u8glib/AVR


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Ср апр 05, 2017 08:01:47 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт авг 11, 2016 18:13:16
Сообщений: 82
Откуда: Украина
Рейтинг сообщения: 0
Я что-то не совсем понял, что это за ссылка?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Ср апр 05, 2017 10:03:56 
Встал на лапы

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср окт 12, 2016 21:14:37
Сообщений: 103
Рейтинг сообщения: 0
Там же написано "U8glib Microcontroller Graphics Library for LCDs and OLEDs. "
Ссылка для AVR "U8glib for plain AVR (ATMega, ATTiny) controller. "
Качаем .
Распаковываем и цепляем ту, которая Вам нужна, а именно , как я понял " u8g_dev_ssd1306_128x64". Ну и те, которые для
Цитата:
"А меня интересует вывод текста, картинки, рисование фигур"

u8g_bitmap
u8g_circle
... итд


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Ср апр 05, 2017 10:09:32 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт авг 11, 2016 18:13:16
Сообщений: 82
Откуда: Украина
Рейтинг сообщения: 0
Ага, понятно. Огромное спасибо - буду тестить вечером :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Чт апр 06, 2017 07:16:05 
Встал на лапы

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср окт 12, 2016 21:14:37
Сообщений: 103
Рейтинг сообщения: 0
Кстати, на тиньках вряд ли получится возможность использовать библиотеки в полной их мере из за нехватки ресурсов .
Ну и буфер (128*64) = 1К нужен( как минимум ), а если по уму - то 2К ( с backbuffer-ом), если нет опыта работы с фракталами как в
Exceed - Heaven 7
Про OLED_I2C
Я смотрел, что в итоге получается из простенького .срр примерчика ... Много лишнего ( как обычно, впрочем, для ЯВУ).
А такое решение в виде
Код:
while ((TWCR & _BV(TWINT)) == 0) {}
без дальнейшего разбора причины прерывания twi
предполагает, что нам пофиг всё , что творится на шине i2c , лишь бы прерывание возникло.
Т.е. больше 1 исправного и2ц девайса в виде oled-дисплея нам не подключить по twi с этой либой.
Для тех, кого это устраивает, ниже дарю рабочий asm вариант инициализации для меги в стиле OLED_I2C, который ещё можно оптимизировать немного.
Если ничего не напутать, то на выходе после call InitDisplay получаем включившийся дисплейчик. Этакий аналог 8192 светодиодов - самое то для проверки :)
Передние фронты на шине без внешней подтяжки на +5 завалены из за ёмкости входа. так что не жалейте пары резисторов.
Спойлер
Код:
.def w=R16
.def TMP1=R18
.equ   SSD_BUFFER   =0x400   ;up to 0x7ff
;....


ssd1306_initseq_tbl:
.db   0xae,0xd5,0x80,0xa8,0x3f,0xd3,0x00,0x40,0x8d,0x14,0x20,0x00,0xa1,0xc8,0xda,0x12,0x81,0x9f,0xd9,0xf1,0xdb,0x40,0xa4,0xa6,0xaf,0xff

InitDisplay:
;init TWI
   ldi   w,0xf8
   sts   TWSR,w
   ldi   w,0b00001100
   sts   TWBR,w
   ldi   w,0b00000101
   sts   TWCR,w
   ldi   ZH,high(ssd1306_initseq_tbl*2)
   ldi   ZL,low(ssd1306_initseq_tbl*2)
lp_initdisplay:
   lpm   w,Z+
   cpi   w,0xff
   breq   end_initdisplay
   mov   TMP1,w
   call   send_ssd_command
   rjmp   lp_initdisplay
end_initdisplay:
   call   set_ssd_buff
   jmp   ssd_update
;----------
;----------
.equ SSD1306_COMMAND=0x00
.equ SSD1306_DATA=0xC0
.equ SSD1306_DATA_CONTINUE=0x40
.equ SSD1306_SET_COLUMN_ADDR=0x21
.equ SSD1306_SET_PAGE_ADDR=0x22

send_ssd_command:
      ldi   w,1<<TWEN|1<<TWEA|1<<TWINT|1<<TWSTA
      sts   TWCR,w
      call   wait_twint
      ldi   w,0x3c<<1                           ;ssd1306 addr=0x3c
      sts   TWDR,w
      ldi   w,1<<TWEN|1<<TWINT|1<<TWEA
      sts   TWCR,w
      call   wait_twint
      ldi   w,   SSD1306_COMMAND;
      sts   TWDR,w
      ldi   w,1<<TWEN|1<<TWINT|1<<TWEA
      sts   TWCR,w
      call   wait_twint
      sts   TWDR,TMP1
      ldi   w,1<<TWEN|1<<TWINT|1<<TWEA
      sts   TWCR,w
      call   wait_twint
send_ssd_stop:
      ldi   w,1<<TWEN|1<<TWINT|1<<TWSTO
      sts   TWCR,w
      ret
wait_twint:
      lds   w,TWCR
      sbrs   w,TWINT
      rjmp   wait_twint
      ret
;----------
set_ssd_buff:
   ldi   w,0xff
   rjmp   fill_ssd_buff
clr_ssd_buff:
   ldi   w,0
fill_ssd_buff:
   ldi   ZH,high(SSD_BUFFER)
   ldi   ZL,low(SSD_BUFFER)
lp_clr_ssd_buff:
   st   Z+,w
   sbrs   ZH,3
   rjmp   lp_clr_ssd_buff
   ret

;----------
ssd_update:
   ldi   TMP1,SSD1306_SET_COLUMN_ADDR
   call   send_ssd_command
   ldi   TMP1,0
   call   send_ssd_command
   ldi   TMP1,127
   call   send_ssd_command

   ldi   TMP1,SSD1306_SET_PAGE_ADDR;
   call   send_ssd_command
   ldi   TMP1,0
   call   send_ssd_command
   ldi   TMP1,7
   call   send_ssd_command

   ldi   w,1<<TWEN|1<<TWEA|1<<TWINT|1<<TWSTA
   sts   TWCR,w
   call   wait_twint
   ldi   w,0x3c<<1   ;ssd1306 addr
   sts   TWDR,w
   ldi   w,1<<TWEN|1<<TWINT|1<<TWEA
   sts   TWCR,w
   call   wait_twint
   ldi   w,SSD1306_DATA_CONTINUE
   sts   TWDR,w
   ldi   w,1<<TWEN|1<<TWINT|1<<TWEA
   sts   TWCR,w
   call   wait_twint
   ldi   ZH,high(SSD_BUFFER)
   ldi   ZL,low(SSD_BUFFER)
lp_send_ssdbuff:
   ld   w,Z+
   sts   TWDR,w
   ldi   w,1<<TWEN|1<<TWINT|1<<TWEA
   sts   TWCR,w
   call   wait_twint
   sbrs   ZH,3
   rjmp   lp_send_ssdbuff
   call   send_ssd_stop
   ret



Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Чт апр 27, 2017 18:42:14 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 243
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2471
Откуда: KMV
Рейтинг сообщения: 0
Прошу помощи!
Я уже голову сломал. Не могу понять почему при инверсном варианте включения дисплея, когда изображение выводится погашенными пикселами, при работе куска кода, выполняющего функцию очистки дисплея, на дисплее образуются полосы.
Вот код "стерки"
Спойлер
Код:
void SSD1306_FillScreen(unsigned char FillColor)
{
   unsigned char m,n;
   for( m=0; m<8; m++ )
   {
      SSD1306_Cmd( SSD1306_PAGESTARTADDR + m );   //0xB0 page0, page1....
      SSD1306_Cmd( SSD1306_SETLOWCOLUMN );      //0x00 low column start address
      SSD1306_Cmd( SSD1306_SETHIGHCOLUMN );      //0x10 high column start address
      SSD1306_Cmd( SSD1306_SETSTARTLINE );
        SSD1306_DataStart();     
      for(n=0; n<128; n++)
      {
            twi_SendByte( FillColor );    
      }             
        twi_Stop();          // Stop I2C 
   }
}

Он просто заполняет выбранным цветом все пикселы. Но почему-то образуется пропуски.
Подскажите, где неправильно код реализован?

Вот пример из протеуса. На реальном дисплее точно также
Изображение

Добавлено after 7 hours 5 minutes 35 seconds:
Уточню, я задавал FillColor=0 для нормального экрана, и FillColor=1 для инверсного. В одном из примеров в сети я увидел, что для белого цвета используют значение 0хFF. Так какой вариант верный? Я попробовал заливку экрана со значением 0xFF, заливает без пропусков но явно с какой-то задержкой

_________________
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Сб апр 29, 2017 17:02:22 
Встал на лапы

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср окт 12, 2016 21:14:37
Сообщений: 103
Рейтинг сообщения: 2
Ну у Вас единички из FillColor и есть полоски :) Естественно надо заливать всё либо 0 либо 255 Каждый байт это вертикальная полоска высотой 8 пикселей.

1 lsb
0
0
0
0
0
0
0 msb


ps. Кстати, подскажите, где такую модельку для протеуса нарыть, был бы признателен за ссылку.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Сб апр 29, 2017 22:29:58 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 243
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2471
Откуда: KMV
Рейтинг сообщения: 1
Вова, спасибо! Я уж голову сломал, но потом тоже доперло, что заливается столбец в 1 байт. До этого дела с графическими дисплеями не имел и все в новинку.
По поводу модели, так она есть в 8 версии протеуса точно. Только обзывается UG-2864HSWEG01 и требует подключения в зависимости от интерфейса I2C или SPI. Смотрите в примерах к программе в файлах для AVR.Я прикреплю оттуда файл с подключением по шине I2C.


Вложения:
Arduino SSD1306 Breakboard Display 128x64 I2C.7z [100.47 KiB]
Скачиваний: 617

_________________
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Сб апр 29, 2017 22:41:13 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Как показала практика, эти OLED-ы не имеет смысла применять в изделиях, где информация должна отображаться постоянно.
За почти два года "сдохли" два OLED-а ("выгорание пикселей").
Работали в изделиях контроля приёма/передачи данных.
Если надо - выложу фото.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Сб апр 29, 2017 23:18:20 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 243
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2471
Откуда: KMV
Рейтинг сообщения: 0
Albert_V писал(а):
Если надо - выложу фото.

Выкладывайте, очень любопытно.
О выгорании пикселей я читал, но в живую видеть не приходилось.

_________________
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 30, 2017 00:00:28 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 6
Медали: 5
Получил миской по аватаре (5)
serg_svd писал(а):
Выкладывайте, очень любопытно.
Не вопрос.
Всё "поле залито" 0FFh.
Максимальная температура платы (по логам; датчик стоит на обратной стороне платы почти по центру индикатора) была +39ºС (летом прошлого года), все параметры OLED-а не выходили за рамки pdf-а (не предельные!!!), почти два года работы без выключения.
Индикаторы были куплены как отдельное изделие (не ардуиновские модули!!!).
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 30, 2017 00:12:14 
Это не хвост, это антенна
Аватар пользователя

Карма: 39
Рейтинг сообщений: 257
Зарегистрирован: Вс дек 11, 2011 05:43:30
Сообщений: 1327
Откуда: Екатеринодар
Рейтинг сообщения: 0
Спасибо


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Дисплей OLED 128х64 SSD1306 I2C
СообщениеДобавлено: Вс апр 30, 2017 07:03:02 
Встал на лапы

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср окт 12, 2016 21:14:37
Сообщений: 103
Рейтинг сообщения: 0
Albert_V , спасибо за инфу, а каков процент оледов с выгоревшими пикселями от общего числа работающих в подобых девайсах ? если 2 из тыщи, то не так печально, а если 2 из 10, то ... :(


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 40 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y