SSD130x & SH1106: SPI/I2C lines with wallpaper.

294 views
Skip to first unread message

Democrito

unread,
Feb 12, 2023, 1:50:08 PM2/12/23
to FPGAwars: explorando el lado libre
Hola,

He creado este nuevo hilo para hacer un poco de resumen de este otro, el cual es demasiado extenso.

Por otra parte, ya he terminado de crear los módulos SPI e I2C para crear una o múltiples líneas con un fondo de pantalla y se puede utilizar en ambos casos una pantalla SSD130x o la SH1106.

Para evitar confusiones con los modelos de pantalla (así evito crear un módulo para cada caso), en el propio módulo se puede elegir qué tipo de pantalla vas a usar. He hecho lo mismo que hace Adafruit con sus bibliotecas gráficas, que para mantener la compatibilidad siempre funciona por paginación.

Os dejo con un enlace a mi GitHub donde explico resumidamente cosas que se dijeron en ese otro hilo tan extenso. Necesitaba ordenar las carpetas de una manera más lógica, entonces decidí crear un proyecto nuevo:


De momento está lo principal, con el tiempo iré añadiendo los ejemplos "needle indicator" con estos nuevos módulos para pintar líneas que he creado y que permiten trabajar con cualquier pantalla OLED de 128x64 monocromo y con cualquier protocolo (SPI e I2C).

Saludos.

Devta Singh Khalsa

unread,
Feb 12, 2023, 2:05:54 PM2/12/23
to fpga-wars-explora...@googlegroups.com
Demócrito, me encanta la productividad que tienes, la generosidad con la que comentas y documentas y lo abierto que te muestras. Simplemente darte gracias.
Yo aprendo en cada uno de tus mensaje.
Gracias

Devta Singh Khalsa
http://devta.wordpress.com/ 
http://circulodesanacion.com
http://medicosdelcielo.org

Cantarranas,2
19413 Villaviciosa de Tajuña
Guadalajara / Spain


--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/975f9f85-4e76-4b86-874b-5b318915f195n%40googlegroups.com.

Jo mo

unread,
Feb 12, 2023, 6:25:26 PM2/12/23
to FPGAwars: explorando el lado libre
Ola Democrito,
It' is a very good idea to document your Oled block in your github repo.
In the forum the important info is mixed will all our discussions and not so visible at the end !

Have a good sleep ;-)

Democrito

unread,
Feb 12, 2023, 6:28:25 PM2/12/23
to FPGAwars: explorando el lado libre
Ey! Devta, gracias por tus palabras!

Acabo de crear un par de ejemplos para comenzar a familiarizarse con el módulo de crear líneas (SPI e I2C). Ejemplo con explicación y pasos a seguir:

Democrito

unread,
Feb 12, 2023, 6:30:35 PM2/12/23
to FPGAwars: explorando el lado libre
Joaquim, today I'm going to sleep like a baby! I wish you the same!

Democrito

unread,
Feb 14, 2023, 4:19:01 PM2/14/23
to FPGAwars: explorando el lado libre
Acabo de terminar la documentación de este proyecto, quien quiera verlo puede hacer clic aquí. Ya sólo me falta incluir los ejemplos de los indicadores de aguja utilizando este módulo para crear líneas (ya sea I2C ó SPI; y ya sea SH1106 ó SSD130x).

Jo mo

unread,
Feb 15, 2023, 2:43:34 AM2/15/23
to FPGAwars: explorando el lado libre
Ola Democrito,

The illustrations are great in your page !
Very informative!
Maybe, do not forget to explain shortly how to create a skin (with LCD assistant) (or just insert a link like or like )
and at the end of your pages you can add a short source's section where you can link to fpgawars google group thread where we discussed about the corresponding subject (in this case) !  There People may find bonus information and request for help (if needed)!

Muchas Gracias

Democrito

unread,
Feb 15, 2023, 4:18:07 PM2/15/23
to FPGAwars: explorando el lado libre
Hello Joaquim,

I'm a little clueless and you've done well to remind me of everything you say.

I have created the section to explain how to create a wallpaper:


And towards the end of the tutorial I have added several sections, I show them with an image:

add info.PNG

I have seen that things can be added and improved, I will add them when I have more free time.

A big hug and thanks for everything!

Jo mo

unread,
Feb 15, 2023, 5:26:47 PM2/15/23
to FPGAwars: explorando el lado libre
Hola Democrito,

Thank a lot for this addition!
It is probably the best tutorial present on the WWW for making a "wallpaper" in this small popular Oled display (an maybe the only one targeting the FPGA world)

Thanks also for you kind acknowledgement your github page ;-) !
A big hug to you too Master , and do not forget to have some rest ;-)

Obijuan

unread,
Feb 16, 2023, 2:56:08 AM2/16/23
to FPGAwars: explorando el lado libre
¡Muchísimas gracias Demócrito!

El trabajo que estás haciendo es impresionante. Muchísimas gracias por documentar tan extensamente tus circuitos y compartirlos con todos. Eres muy inspirador, y estoy aprendiendo mucho con tus circuitos. Gracias, de verdad

Saludos, Obijuan

charli va

unread,
Feb 16, 2023, 6:33:12 AM2/16/23
to fpga-wars-explora...@googlegroups.com
Brutal! Deseando poder ponerme a ver en detalle todo esto.

Enhorabuena y mil gracias por todo lo que nos aportas.

El El mar, 14 feb 2023 a las 22:19, Democrito <spo...@gmail.com> escribió:
Acabo de terminar la documentación de este proyecto, quien quiera verlo puede hacer clic aquí. Ya sólo me falta incluir los ejemplos de los indicadores de aguja utilizando este módulo para crear líneas (ya sea I2C ó SPI; y ya sea SH1106 ó SSD130x).

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

Democrito

unread,
Feb 16, 2023, 3:56:40 PM2/16/23
to FPGAwars: explorando el lado libre
Gracias por los comentarios Joaquim, Obijuan & Charli, un fuerte abrazo!

Democrito

unread,
Feb 18, 2023, 10:47:55 PM2/18/23
to FPGAwars: explorando el lado libre
Creo que ya he terminado con la documentación principal, al menos lo que me ha venido a la mente hasta el momento, he añadido lo siguiente:

* Sobre la alimentación de las pantallas OLEDs.
* Conversión de SPI de 4 hilos a 3 hilos.
* Mejora en una imagen para verse más clara la idea.

Por otra parte he añadido los ejemplos de "Needle Indicators" con el nuevo módulo, que como ya sabéis, vale tanto para I2C como para SPI, y soporta los dos tipos de pantalla OLED de 128x64 monocroma.

En el módulo principal también he añadido una mejora, y al hacer esto he vuelto a resubir todos los ejemplos para incluir esa mejora.

Si algún día usáis algo de esto, comprobad la fecha para saber si tenéis la última actualización!

Saludos.

Democrito

unread,
Feb 19, 2023, 8:37:35 AM2/19/23
to FPGAwars: explorando el lado libre
Sobre los "Needle indicator" he creado un ejemplo donde la aguja se mueve sola, en vez de tener que usar un ADC concreto. De esta manera se puede puede probar desde cualquier FPGA. El enlace que pongo a continuación contiene un vídeo de demostración.

Jo mo

unread,
Feb 19, 2023, 11:07:58 AM2/19/23
to FPGAwars: explorando el lado libre
Hola Democrito,

Gracias for this new block i will try it with my fpga!

Here i started preparing the FpgaRiders collection, before adding your blocks to the collection, maybe we can add somewhere in your blocks a link to your tutorial pages.
i see 3 possibilities:
1 - insert it in an "info" block in side of you design
2 - put it in the "description" section in "project information" form window
3- ( it require a modification of icestudio). Put in a new "detailed description" section in "project information" form window.

The idea, is that, in the future, we can use the actual description section as source for displaying  a ( short)  description of the block directly visible in the collection manager windows (see bellow).

and the new "detailed" description will be used for having more info.
this more detailed description info will be accessible by the user when he clicks on a help bouton available on the cm bottom section(see bellow)

bottom part of cm2.jpg
So the help bouton can open a link to a wiki page, or open a new icestudio form window, with more detailed info about the block!

@ Carlos, could you please tell me in which .js file is located the collection manager code ?

Sorry for the off topic ;-p

Democrito

unread,
Feb 19, 2023, 12:31:19 PM2/19/23
to FPGAwars: explorando el lado libre
Yes, you could put another box, like the project information box, where we would add, for example, a website that would link to the project information (if it exists).

Jo mo

unread,
Feb 19, 2023, 9:12:26 PM2/19/23
to FPGAwars: explorando el lado libre
Hola Democrito,
Thanks, I could successfully test your "no ADC needle indicator" !
I also quickly played a bit, replacing the " input counter" by a "serial rx" block to " control the needle with the serial Monitor.
it makes " a kind "of ascii to needle indicator :-)

Have a good night!

charli va

unread,
Feb 19, 2023, 11:50:41 PM2/19/23
to fpga-wars-explora...@googlegroups.com
Hi Joaquim!

The collection manager is locate at app/resources/plugins/CollectionManager2 but use other files and plugins.  Try to do concrete questions and i'll try to guide around "the travel" ok?
 
I like the ideas that you expose here, for me go ahead with it.

Maybe we need to change the behaviour to do a double click to show the information of the block or somthing similar, because now , one click is for put the block inside the design (for me is faster than drag or something similar), how do you imagine work with it team?

Thanks a lot!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

Jo mo

unread,
Feb 20, 2023, 11:15:32 AM2/20/23
to FPGAwars: explorando el lado libre
Hola Charli,

I am thinking of adding up to two graphic marks next to each block on the collection manager.
they will be placed similarly as the green dots on the right
marks.JPG

those mark will show to the user if that block is compatible with its Fpga board
marks 2.jpg
- a Red T ( different Type of FPGA):  means the block contains Fpga primitives not compatible with the selected board FPGA (so the user need to rework carefully the block to try make it work for his fpga)
- a yellow ( different Frequency of system clk): means the block was designed and saved to work properly at a precise sys clock  which is different than the one of the actually selected fpga board sys clock. (this problem can be easily solved by the user if he adds a PLL to convert the frequency ( eg: 25Mhz to 12Mhz to make most ice40 boards design work in most ecp5 boards )

the T mark will be visible:
-  automatically by a function which scans the .ice file searching for FPGA primitives
-  Or by comparing the selected board to a variable "Type"defined by the initial block designer in the block "project information" form

the F mark  will be visible:
-By comparing the selected board frequency to a variable "Freq" defined by the initial block designer in the block "project information" form

And no marks at all when "full" compatibility!

Remark: it will be nice to also show this to type of marks on the block graphics in the playground area!  When we load/open a design
Similar to the error mark when we compile a faulty block.
error mark.JPG

So to summarize, i need first to localise in the code the graphics part of the CM,Treeview,...
Have a nice evening!

Obijuan

unread,
Jan 28, 2024, 11:38:48 AMJan 28
to FPGAwars: explorando el lado libre
Hola!

Me he comprado la pantalla OLED monocromo, de 128x64 pixeles en BricoGeek. Usa el controlador ssh1106. Quiero ponerla en marcha con los ejemplos de Demócrito

Este es el enlace con los detalles de la pantalla
https://tienda.bricogeek.com/pantallas

oled-01.jpg

Para conetar la OLED Facilmente a la Alhambra-II he hecho esta plaquita prototipo. Está pensada para conectarse a los pines D8-D12, dejando los pines D0-D7 libres para conectar la placa AP-LED8 para hacer pruebas

oled-02.jpg
oled-03.jpg

Así es como queda cuando se conecta a la Alhambra-II. Además he conectado la AP-LED8-THT para hacer pruebas. Queda todo muy bien integrado, y sin cables de por medio. ¡Perfecto para frikear y aprender sobre las OLEDs! 

oled-04.jpg

Os seguiré informando sobre las pruebas

Saludos, Obijuan

Obijuan

unread,
Jan 28, 2024, 11:42:27 AMJan 28
to FPGAwars: explorando el lado libre

Obijuan

unread,
Jan 28, 2024, 11:50:26 AMJan 28
to FPGAwars: explorando el lado libre


Para ponerlo en marcha estoy utilizando uno de los ejemplos simples que tiene  Demócrito en su repositorio (Fichero Manual_Line_SPI.ice)


pero recableándolo para mi placa :

oled-04-bis.png

El resultado de las pruebas es exactamente el mismo que tiene documentado Demócrito. Primero aparece la pantalla "con ruido". Al apretar el pulsador 2 aparecen los 4 píxeles en las 4 esquinas.
Al apretar el pulsador 1 se dibuja la línea en la ram interna, y al apretar de nuevo el pulsador 1 se dibuja la ram en la OLED y aparece la línea:

oled-05.jpg

 ¡Funciona Perfecto! 😀 Muchas gracias Demócrito por todo tu trabajo. Lo voy a utilizar para aprender más sobre las OLEDs, y para escribir un cuaderno técnico sobre ello explicando todos los detalles internos. 

Saludos, Obijuan

charli va

unread,
Jan 28, 2024, 12:03:11 PMJan 28
to fpga-wars-explora...@googlegroups.com
Se vienen las oled!! gran trabajo!! vamos a darle a las pantallas! te seguimos y lo que necesites que te echemos una mano a probar no dudes en decirlo!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

Democrito

unread,
Jan 28, 2024, 3:07:08 PMJan 28
to FPGAwars: explorando el lado libre
Es una sensación muy satisfactoria cuando te das cuenta que tu trabajo puede servir para otras personas.

En este proyecto estuvo muy activamente @Joaquim y me ayudó en los cálculos matemáticos y skins o wallpapers.

Compartamos conocimiento y dudas! Creo que este lugar es perfecto para ello y llevamos más de 7 años demostrándolo.

charli va

unread,
Jan 28, 2024, 3:24:04 PMJan 28
to fpga-wars-explora...@googlegroups.com
Es un gran trabajo Demócrito! yo hice bastantes pruebas con tus ejemplos y aprendí mucho de como lo habías montado.

¡Que todo siga con este espíritu!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

Jo mo

unread,
Jan 28, 2024, 4:41:34 PMJan 28
to FPGAwars: explorando el lado libre
Yeah nice to see Juan bringing up these fun subject again !
Democritos did a crasy job one year ago !
If you want some help, specially for displaying new things on these oled screens let us know, maybe we can help !

have a nice week !

Obijuan

unread,
Feb 1, 2024, 3:55:21 AMFeb 1
to FPGAwars: explorando el lado libre
Sigo explorando con la OLED. Ya tengo unos primeros bloques prototipos para hacer cosas sencillas

Esta es una prueba de dibujo de un sprite de 8x8. Estoy usando la llave del famoso juego retro Manic Miner

2024-02-01-Ex30-data-3.png

Aquí se ven más detalles:

2024-02-01-Ex30-data-5.png

El circuito en icestudio es este (de momento es un cutre-prototipo):

2024-02-01-Ex30-data-2.png

La idea principal es la siguiente: Hay una serie de bloques conectados en un bus. Cada bloque hace una operación concreta: borrar la pantalla, establecer la posición actual (locate), dibujar un sprite... El bloque del extremo derecho es el controlador SPI de la OLED

Aunque todavía no he hecho dibujo para los bloques, esta arquitectura es muy modular y hace que se muy fácil y rápido crear prototipos de circuitos para usar la OLED.
Seguiré investigando y os iré poniendo los avances

Todos los experimentos que hago siempre los documento en log personales en abierto. No es documentación para el usuario final, sino para mí, para ir documentando los experimetnos y los avances


Más adelante, cuando lo tengo todo más estable y mejor pensado, es cuando suelo escribir los cuadernos técnicos

Saludos, Obijuan

charli va

unread,
Feb 1, 2024, 4:01:14 AMFeb 1
to fpga-wars-explora...@googlegroups.com
Muchísimas Gracias maestro! Como siempre esta espectacular .

Yo tengo bastantes cosas hechas con oleds con otras aproximaciones pero igual te pueden aportar.

Ya iremos viendo cómo encajar todas las piezas! Empezaré a montar en breve un prototipo para seguir tus ejemplos y aportar lo que pueda.

Un gran abrazo!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

Obijuan

unread,
Feb 1, 2024, 6:59:39 AMFeb 1
to FPGAwars: explorando el lado libre
Y llegó el momento de hacer animaciones!

Los conocimientos sobre animaciones los aprendí gracias a @FranGallegoBR y su magnífico curso #DEZ80. 
Que luego rehice para el Spectrum Z80 

2024-02-01-Ex31-data-2.png





Obijuan

unread,
Feb 1, 2024, 7:00:28 AMFeb 1
to FPGAwars: explorando el lado libre

Este es el resultado de la animación:

2024-02-01-Ex31-data-4.gif


Obijuan

unread,
Feb 1, 2024, 7:02:11 AMFeb 1
to FPGAwars: explorando el lado libre

Y esta es la animación original que hice por Software, en el Z80 de ZX spectrum, gracias a los conocimientos aprendidos por el libro de "Ensamblador para ZX Spectrum" de @JuanAntonio1072

35-reto-2-4-sprite-8x8.gif

La primera está hecho en hardware puro. La segunda por software, en lenguaje ensamblador del Z80


charli va

unread,
Feb 1, 2024, 7:40:52 AMFeb 1
to fpga-wars-explora...@googlegroups.com
👏👏👏👏 muy buena pinta!! 

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

Obijuan

unread,
Feb 2, 2024, 7:55:47 AMFeb 2
to FPGAwars: explorando el lado libre
Lo interesante llega cuando se combina la memoria flash, porque ahí podemos almacenar muchísimas información para mostrar imágenes, dibujos, etc...

En este ejemplo se están dibujando unos sprites muy básicos que he grabado previamente en la memoria flash:

2024-02-02-Ex32-data-3.png

El acceso a la flash se hace usando los bloques de la colección iceflash [1], que están documentados en el cuaderno técnico 15:


Esta es la pinta que tiene el circuito protitpo:

2024-02-02-Ex32-data-2.png

Los sprites se leen de la memoria flash, y dibujan en la pantalla oled de uno en uno, con cada pulsación del botón SW1 (para depurarlo)





Obijuan

unread,
Feb 2, 2024, 7:58:03 AMFeb 2
to FPGAwars: explorando el lado libre
Este es otro ejemplo de una animación de 8 sprites, que se leen también desde la memoria flash. La animación es muy sencilla: una espcie de mini-spinner:

2024-02-02-Ex33-data-4.gif

Este es el circuito que genera la animación:

2024-02-02-Ex33-data-2.png

He puesto un retardo de 80ms por fotograma

Democrito

unread,
Feb 2, 2024, 9:31:17 AMFeb 2
to FPGAwars: explorando el lado libre
El uso de la memoria spi va a dar muchísimo juego. Felicidades por este trabajo!

charli va

unread,
Feb 2, 2024, 10:19:45 AMFeb 2
to fpga-wars-explora...@googlegroups.com
Que gran trabajo Obijuan! enhorabuena, me está encantando el viaje!

El vie, 2 feb 2024 a las 15:31, Democrito (<spo...@gmail.com>) escribió:
El uso de la memoria spi va a dar muchísimo juego. Felicidades por este trabajo!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

Obijuan

unread,
Feb 2, 2024, 2:39:10 PMFeb 2
to FPGAwars: explorando el lado libre

En este ejemplo he creado dos "LEDs virtuales" en la pantalla OLED. Se controlan con los pulsadores de la Alhambra-II

El vídeo lo he subido a youtube:


Este es el circuito. Los dos bloques centrales son los "LEDs virtuales", conectados a los pulsadores SW1 y SW2

2024-02-02-Ex34-data-1.png

Por defecto se muestran dos círculos como LEDs, pero se pueden poner otros sprites para representar los dos estados. Simplemente se conectan como parámetros

De momento esto lo voy a dejar en barbecho, hasta que escriba un cuaderno técnico contando todos los detalles. Antes tengo que terminar el cuaderno que estoy escribiendo sobre la placa AP-LED8 y otras placas sencillas para encender leds

Saludos, Obijuan

charli va

unread,
Feb 2, 2024, 3:17:38 PMFeb 2
to fpga-wars-explora...@googlegroups.com
A tu ritmo! la idea de los bloques en bus está muy chula, y la veo muy interesante para otras cosas.

Un gran abrazo y gracias por estos bonitos ejemplos llenos de inspiración!

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.

Jo mo

unread,
Feb 5, 2024, 1:42:38 PMFeb 5
to FPGAwars: explorando el lado libre
We never have enough leds Juans ;-)
Than a lot for all these designs for oled screen!
They look beautiful and they will inspire me when i will try (one day) to play with higher resolution screens ( VGA, SXGA, ..)

Big hug! 
Reply all
Reply to author
Forward
0 new messages