Например TDA7294

Форум РадиоКот • Просмотр темы - ATmega8 + OLED SSD1306
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср фев 18, 2026 11:15:14

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


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



Начать новую тему Ответить на тему  [ Сообщений: 82 ]    , , , , 5
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: ATmega8 + OLED SSD1306
СообщениеДобавлено: Ср янв 22, 2025 12:54:51 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 1
Для "растворения"/"проявления" в идеале подошёл бы генератор случайных чисел, но это затратно для меги :dont_know:

Да не особо. Вот, например демо-код для ПК и "экранчиком" 64х8 (в консоли, разумеется):
Код:
#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
#include <stdlib.h>

char disp[64][8]; //512

void disp_show(){
  printf("\033[1H\n");
  for(int j=0; j<8; j++){
    for(int i=0; i<64; i++)printf("%c", disp[i][j]);
    printf("\n");
  }
}

void disp_init(){
  for(int i=0; i<64; i++)
    for(int j=0; j<8; j++)disp[i][j] = '#';
}

void disp_anim(){
  static uint64_t cur = 0;
  cur = (cur * 34781 + 33937) % 512;
  ((char*)disp)[cur % 512] = ' ';
}

int main(){
  disp_init();
  disp_show();
  for(int i=0; i<512; i++){
    usleep(1000);
    disp_anim();
    disp_show();
  }
}

Получился эффект рандомного закрашивания (взято отсюда: https://habr.com/ru/articles/549554/#comment_22862364)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ATmega8 + OLED SSD1306
СообщениеДобавлено: Ср янв 22, 2025 14:44:32 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 532
Рейтинг сообщения: 0
shonty писал(а):
Так и не смог понять, зачем вам считывать пиксели с матрицы, так как пиксели там те, которые вы сами нарисовали..
Я, наверное, как то непонятно обьясняю.
Что бы изменить один пиксель в блоке из восьми - нужно знать состояние остальных семи.
Тут есть два варианта - если алгоритм позволяет - то заново формировать по исходным данным все 8 пикселей, потом один менять, потом отправлять этот байт в дисплей.
И второй вариант - держать отдельно в памяти значение этих 8 пикселей. что б потом один поменять и вывести заново на дисплей.
Простой пример.
У вас есть нарисованный отрезок (черный на изображении).
И вам нужно нарисовать второй отрезок (на изображении показан красным).
Изображение
И в определенной области (подкрашена цветом) вам нужно скомбинировать две линии.
И вот для того, что бы скомбинировать две линии, нужно либо читать из дисплея значение 8 пикселей, либо где то помнить состояние этих пикселей.
Либо при рисовании второй линии путем математики вычислять, а нет ли тут еще и первой линии - и если есть, то комбинировать их.

Опять же, если у вас простой вывод на дисплей, привязанный к 8-пиксельным областям, да нет задачи вывода производьной графики, то можно оптимизировать. А если стоит задача произвольной графики - то тут уже без хоть какого то буфера сложно будет.

shonty писал(а):
Попиксельно это вроде caset/raset/ramwrite + цвет пикселя.
raset - байт, начальная координата - 2 байта, конечную можно не отправлять, сaset - байт, начальная координата - 2 байта, конечную можно не отправлять, ramwrite - байт, цвет пикселя - 2 байта. Итого 1+2+1+2+1+2 = 9 байт. 72 бита. Если вы сможете 1 пиксель зажечь быстрее - покажите.
Для ILI9341-подобных дисплеев raset/caset позволяют не задавать вторую координату. Но некоторые контроллеры требуют обе. Тогда еще +32 бита.

shonty писал(а):
Теперь мне понятно, почему вам с этими дисплеями работать грустно, а мне весело
Мне не грустно с ними работать. Все точно так же - раз подкинуть драйвер и далее рисовать все что нужно, не задумываясь о том, какой дисплей подключен.
Если дисплей поддерживает оконный вывод, библиотека об этом знает, драйвер предоставляет процедуры работы с окном.
И, соответственно, все, что возможно - рисуется с применением оконного режима. А что невозможно - увы, попиксельно.
А если дисплей не поддерживает оконный режим - то все попиксельно.
Если это дисплей монохромный, 8 бит на пиксель, то драйвер держит в памяти видеобуфер. И по команде сливает измененные области в дисплей. А библиотека рисует все в этом буфере средствами драйвера.
Для универсальных применений, когда графика может быть произвольной, без привязки к структуре дисплея - это удобно.


Вложения:
lines.jpg [55.77 KiB]
Скачиваний: 108

_________________
Белая и Пушистая
Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 82 ]    , , , , 5

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


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

Сейчас этот форум просматривают: easa129 и гости: 30


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

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


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