@@switcher3545 In 2 files fonts.h and main.h find the string #include "stm32f1xx_hal.h" and replace it on #include "stm32f4xx_hal.h". Don't copy HAL files from downloaded project, copy only lib files.
@@switcher3545 I can give fragment of code to check connection on I2C channel /* USER CODE BEGIN 2 */ place the code after this point if(HAL_I2C_IsDeviceReady(&hi2c1, OLED1.getCAddress(), 1, 10) == HAL_OK) //if ok led just ON { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); } else //if No correct addr led BLINK { while (1){ HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); //my external led on this pin (replace it for y connection) HAL_Delay(500);} }
Would be awesome to see you explore a camera periph... QV7670 is very popular among DIY - thank you for this video though it's great and got me on the right track!
@@ControllersTech Also, is there an alternative to pins b7, b6 when hooking up this interface I need them for a SDA and SCL? I need those pins for another sensor and am trying to work around this.
Yes there is. After selecting the I2C in the CubeMx, Keep pressing ctrl key and select that pin. CubeMx will show you the alternative for that. Just drag and drop the selection to the new pin.
Excelente Trabajo, aunque mi ssd1306, no muestra la imagen como se aprecia en el tuyo, a no ser que el mío se deba ajustar, pero es el TZT-SSD1306. Sabrías por qué?... lo hice con un stm32f4
if i can only set my HCLK to max of 48MHz. can that affect the scrolling? Only top part scrolls and the rest doesnt. not sure if its the code or hardware.
You can use the same code for it. Just make sure in the ssd1306.c, change the i2c operations to spi. That's all. You can watch my video about using spi generally.
@@ControllersTech Thanks for the reply. I did the next thing, which could be ok: Gain every digit from a float value and add the next character to the digit '0' and update the screen with Putc function.
Hi, Im using Monochrome 0.96" 128x64 OLED from Adafruit, run the same code but it just doesn't work. Any suggestions? I'm using NUCLEO f411re development board
all SSD1306 have the same I2C address. So if u do connect them to the same I2C, they will show the same data. If you can somehow modify the address, then u can control them individually
Hi, I had this working on an BluePill, but after swapping to an STM32 Nucleo board im not getting anything to work. I changed the #include "stm32f1xx_hal.h" to #include "stm32f3xx_hal.h" n the 1306.h file to get it to compile. Is there any reason why t isnt working? Thank you :)
@@ControllersTech The fonts i could found are not using the same "mapping". So using them result in ""hieroglyphe" writing :) . The smallest i found and compatible is a 6x8. I'm looking for a smaller one. If someone found it ... Thanks.
yes, but follow this: -open "ssd1306.c" -in line 194 change "SSD1306_WRITECOMMAND(0x3F);" to "SSD1306_WRITECOMMAND(0x1F);" -in line 203 change "SSD1306_WRITECOMMAND(0x12);" to "SSD1306_WRITECOMMAND(0x02);" if you do that, you are sending , with I2C protocol the especific command to OLED 0.91(128x32) to change 128x64 to 128x32. Otherwise it will never work.
@monjiro make sure you select the right pins for the i2c. Check the schematics of the board to see which pins you need to connect to. I am guessing that you have connected to the pins on the top right (scl and sda). When you enable i2c1 in cubemx, by default it will not configure these pins. You have to change the pin manually.
Hello, I'm using STM32F407G-Disc1 board interfacing with SSD1306 128x64 OLED. When I'm trying with Arduino, the OLED is working perfectly. But, it is not working with STM controller. Code is compiling without any errors. Still OLED is not giving any output. Do you know any possible solution ?
OK...SOLVED now .... no change in address with 0x78 only it working.but i dont know why its like that.previous mu oled is gone bad taken new oled and now its working
@@ControllersTech I adjusted from ssd1306.h as (128x160) but it didn't work.I used 4.7k pull up resistor and I tried both address.Do you have any ideas?
thanks you for making the wonderful tutorial about OLED display. I have try it and i am fail on display "hello world". i have double check the I2C (&hi2c1) and i am using stm32F103c8 which the pin for i2c (PA6 and PA7), BUT one this diff is i am using "STM32CubeIDE 1.0.0" to do it. CAN anyone help me by suggesting me about the possible problem, i suspect i must made a silly mistake. Thank you.
What error are u getting? Is the code compiling successfully? Make sure u update the display after writing anything. Or else you won't be able to see it. The code should work on all IDEs so stm32cube ide is not the problem
@@ControllersTech Thank you for the reply Controllers Tech, i getting not error, the code was successfully compiled, i have put the update of display which is "SSD1306_UpdateScreen()" after every writing, i even put the breakpoints to check the code is running and the result is: code is runing but OLED display nothing. i have check the OLED with my Arduino program and it is function well. I have run out of IDEA to test it, but i will keep trying to figure it out. Thanks for the help.
I am so blind, i can't believe i made this lower mistake. i am using the STM32F103 smart v2 MCU board and i confuse myself by the pin number .I even said that i use "PA6 and PA7" as hi2c1, but actually it is "PB6 and PB7", right now i am able to display "Hello world" on OLED. Thanks you for the help anyway and great video as always. I am appreciate, Thanks a lot .
@@ControllersTech is pull up resistor needed externally by circuit.directly i coneected ssd1306 with addres 0x3c and changed adress in program.but not working
Awasome tutorial!
Thanks! Learning a lot!
Thanks!
With minor changes it runs fine on Nucleo-L432KC.
what minor changes?
Why won't you tell us what changes you made?
Big thanks! All works. It's works on STMF4 series, just need modify 2 defines for HALF4 lib. I will use this lib in my projects with OLED displays.
I have stn32f429i also, can I ask which particular defines you changed for it to work?
@@switcher3545 In 2 files fonts.h and main.h find the string #include "stm32f1xx_hal.h" and replace it on #include "stm32f4xx_hal.h". Don't copy HAL files from downloaded project, copy only lib files.
@@tupoy_ytub_uberi_psevdonim do you know the i2c address of your oled? maybe the problem with mine is the address :(
@@switcher3545 my oled addr is 0x78 (also can be 0x79, 0x3C)
@@switcher3545 I can give fragment of code to check connection on I2C channel
/* USER CODE BEGIN 2 */ place the code after this point
if(HAL_I2C_IsDeviceReady(&hi2c1, OLED1.getCAddress(), 1, 10) == HAL_OK) //if ok led just ON
{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
}
else //if No correct addr led BLINK
{
while (1){
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); //my external led on this pin (replace it for y connection)
HAL_Delay(500);}
}
Would be awesome to see you explore a camera periph... QV7670 is very popular among DIY - thank you for this video though it's great and got me on the right track!
Yeah sounds great. I'll order one and see what can be done with it.
@@ControllersTech Awesome, thank you. Looking forward to it!
@@ControllersTech Also, is there an alternative to pins b7, b6 when hooking up this interface I need them for a SDA and SCL? I need those pins for another sensor and am trying to work around this.
Yes there is. After selecting the I2C in the CubeMx, Keep pressing ctrl key and select that pin. CubeMx will show you the alternative for that. Just drag and drop the selection to the new pin.
THANKS A LOT, you are the best
Thank you! it is amazing! working
It helps a lot. thanks very much.
thank u very much great tutorial very nice working perfectly thanks a lot!!!!!!!!!!!!!!
Great tutorial!!
Please make a video on how to interface SSD1963 (480x864) with STM32F207 or STM32F407.
Thanks Again!!!
Thank you for the video
That's great. Thanks.
Thank you very much!!
thanks a lot and one more how to sd card interfacing using SDIO mode and SPI mode using stm32f4
thank you. that was so useful
Thank you very much
what about parallel data input GLCDs ?
Will this library work with 128x32 SSD1306 OLED?
Работает
Excelente Trabajo, aunque mi ssd1306, no muestra la imagen como se aprecia en el tuyo, a no ser que el mío se deba ajustar, pero es el TZT-SSD1306. Sabrías por qué?... lo hice con un stm32f4
you are just awsome..........!!!!!!!!!!!!!!!!
What we will need to do in order to run it on a larger display using some sort of VGA connection
Please, do you know how to add font? I need very big font. I have found font generators only for arduino libraries. they don't work with this library
if i can only set my HCLK to max of 48MHz. can that affect the scrolling? Only top part scrolls and the rest doesnt. not sure if its the code or hardware.
No, HCLK don't have any effect on scrolling. Might be the code. Try the diagonal scrolling..
@@ControllersTech diagonal does the same thing where it only moves the top portion
That video is nice but could you learn us how to use OLED working with SPI? It would be interesting thanks 👍
You can use the same code for it. Just make sure in the ssd1306.c, change the i2c operations to spi. That's all. You can watch my video about using spi generally.
meto , i have try many times to use the hardware SPI in stm32 to drive oled, but i failed every times
Great video :)
It is possible to display float/double on oled?
Yes but you need to convert them to characters using sprintf.
Displays only accepts ascii
@@ControllersTech Thanks for the reply.
I did the next thing, which could be ok:
Gain every digit from a float value and add the next character to the digit '0' and update the screen with Putc function.
Hi, Im using Monochrome 0.96" 128x64 OLED from Adafruit, run the same code but it just doesn't work. Any suggestions? I'm using NUCLEO f411re development board
You can make the fonts, test and ssd1306 point C and H. files not found for download.
What u mean not found ? Have u checked inside the src and inc folders ?
Great tutorial! I have tried to access the link in the description, but it isn't accessible.
Try without https. There is some issue going on right now.
I couldn't find the previous video you talk about i.e. interfacing with ssd1306
could you link it?
There is no previous video. It was deleted. This video covers ssd1306.
Hello! amazing job. One question.. Can you add multiple OLED screens? is there an example for this? thanks in advance!
i am trying to make it happen in a STM32 nucleo
all SSD1306 have the same I2C address. So if u do connect them to the same I2C, they will show the same data. If you can somehow modify the address, then u can control them individually
Hi, I had this working on an BluePill, but after swapping to an STM32 Nucleo board im not getting anything to work. I changed the #include "stm32f1xx_hal.h" to #include "stm32f3xx_hal.h" n the 1306.h file to get it to compile. Is there any reason why t isnt working? Thank you :)
Hi, Great video. Integration done with a 2.52 inch OLED I2C screen. Is it possible to get smallest font ? Currently the smallest one i've is a 7x10.
check some arduino libraries. Maybe those fonts can be implemented
@@ControllersTech The fonts i could found are not using the same "mapping". So using them result in ""hieroglyphe" writing :) . The smallest i found and compatible is a 6x8. I'm looking for a smaller one. If someone found it ... Thanks.
Can I use this library for SSD1309 for SPI communication mode???
No
thank u, can i use it for a i2c 128x32?
yes, but follow this:
-open "ssd1306.c"
-in line 194 change "SSD1306_WRITECOMMAND(0x3F);" to "SSD1306_WRITECOMMAND(0x1F);"
-in line 203 change "SSD1306_WRITECOMMAND(0x12);" to "SSD1306_WRITECOMMAND(0x02);"
if you do that, you are sending , with I2C protocol the especific command to OLED 0.91(128x32) to change 128x64 to 128x32.
Otherwise it will never work.
@@Pablo-ww5cn and SSD1306HEIGHT in ssd1306.h?
im having a stm32 Nucleo G491RE can u help me with it, im unable to get it running even after changing the name in header files, what else i can d0 ?
@monjiro make sure you select the right pins for the i2c. Check the schematics of the board to see which pins you need to connect to.
I am guessing that you have connected to the pins on the top right (scl and sda). When you enable i2c1 in cubemx, by default it will not configure these pins. You have to change the pin manually.
hello. can you do it for lpc1768 too? i need it so much, and i can not change code for lpc1768. thank you
i tried oled with addres 0x3c and updated .h file.still oled not working.is mandatory pull up needed.pls help me
What's 0x3C for ? Where you get that address from ?
Could not find the sample code
Could you help on that
Hello, I'm using STM32F407G-Disc1 board interfacing with SSD1306 128x64 OLED. When I'm trying with Arduino, the OLED is working perfectly. But, it is not working with STM controller. Code is compiling without any errors. Still OLED is not giving any output. Do you know any possible solution ?
Hi! I'm working on a STM32f411ve-Discovery and i have the same problem. I checked the address but it doesn't work. Did you find any solution??? Thaks
i am using F3 version stm32 do i have to change I2c pins in library ?? where should i change the pins?
That depends on you. Just choose some I2C and cubeMX will configure the pins automatically.
Hello, when I download the link, a file named I2c does not appear. Why could it be?
Look inside the src and inc folders
I copy those those files to each directory and change address 0x3C oled and run but it does not show anything. Can you tell me somthing?
YES same problem for me also.oled is not showing anything ....i changed oled adreess and tried but not working.pls let me know if u got the solution
OK...SOLVED now ....
no change in address with 0x78 only it working.but i dont know why its like that.previous mu oled is gone bad taken new oled and now its working
Hi ,I use 128x160 oled lcd ,How can I change ssd1306.c 193. and 204. lines ? or What Can I do to use it ? Could you help me please?
There is size defined somewhere.. just change it and test. I don't know whether it will work or not.
@@ControllersTech I adjusted from ssd1306.h as (128x160) but it didn't work.I used 4.7k pull up resistor and I tried both address.Do you have any ideas?
Can u send link to what oled you have ?
I couldn't find any oled of 128x160, which uses ssd1306.
I think you have some other display amd you are using wrong library
thanks you for making the wonderful tutorial about OLED display. I have try it and i am fail on display "hello world". i have double check the I2C (&hi2c1) and i am using stm32F103c8 which the pin for i2c (PA6 and PA7), BUT one this diff is i am using "STM32CubeIDE 1.0.0" to do it. CAN anyone help me by suggesting me about the possible problem, i suspect i must made a silly mistake. Thank you.
What error are u getting?
Is the code compiling successfully?
Make sure u update the display after writing anything. Or else you won't be able to see it.
The code should work on all IDEs so stm32cube ide is not the problem
@@ControllersTech Thank you for the reply Controllers Tech, i getting not error, the code was successfully compiled, i have put the update of display which is "SSD1306_UpdateScreen()" after every writing, i even put the breakpoints to check the code is running and the result is: code is runing but OLED display nothing. i have check the OLED with my Arduino program and it is function well. I have run out of IDEA to test it, but i will keep trying to figure it out. Thanks for the help.
I am so blind, i can't believe i made this lower mistake. i am using the STM32F103 smart v2 MCU board and i confuse myself by the pin number .I even said that i use "PA6 and PA7" as hi2c1, but actually it is "PB6 and PB7", right now i am able to display "Hello world" on OLED. Thanks you for the help anyway and great video as always. I am appreciate, Thanks a lot .
Hello my screen has the sh1106 can I use this library?
Hi! I´'m testing on OLED 1.3'' I2C with SH1106, can you find some library for them?
Help me pls, how can i clean a specific area of screen
Just write empty character there.. ' '
@@ControllersTech ohh thank you sir
Sorry noobs question.
Why use HSE but no external clock on the breadboard?
HSE is external crystal. It is on the controller..
@@ControllersTech Oh i see, thanks.
'RCC_OscInitTypeDef' could not be resolved, what can I do?
What controller? Are u using external clock ?
@@ControllersTech It worked, I was not following the instructions properly. Thanks a lot for the tutorial.
@@ControllersTech I am trying to simulate this in proteus, and the OLED has a reset pin, what can I do with it? Please help!
Don't connect the reset pin than... Or connect it to the ground
spi ?
well i don't have the one with SPI... But mostly it should be the same except you have to switch I2C transfer with SPI transfer
@@ControllersTech thanks a lot.
Whare can i find those header file?
In the description
Is it possible to use this code with a STM32L432KC? With STM32CubeIDE?
If it have i2c, than yes
@@ControllersTech Mhm I must be doing something wrong, it has 3 times I2C. No pin on the board was sending out a thing.
Hi I am not getting any link to download the header files.
Please help
Download the code. You can find the files inside the respective folders
@@ControllersTech Hi .Thanks
this library can use for SSD1306 OLED 128x32 ??? thanks
Yeah but you need some adjustments.. read the comments. Someone did it
@@ControllersTech i fixed height parameter in ssd1306.h but hadnt run yet
Are u sure connection is right ?
Try connecting pull up resistors to SDA and SCL pins.
Also make sure the i2c speed is 400 KHz
@@ControllersTech I2C address is 0x78 or 0x7A ?
@@ControllersTech is pull up resistor needed externally by circuit.directly i coneected ssd1306 with addres 0x3c and changed adress in program.but not working
hi
your website link is incorrect
It's fine. Working alright here
What's os?
mdk have linux package?
It is sw4stm, not keil.
share link for libraries download....
Thanks in advance
Goto the link in the description
Thank you very much!!
👍
Thanks a lot