I always love that you provide full instructions for these projects. While I'm no novice with graphics, I'm still learning Arduino, so I can jump ahead, but for users who have no clue, omitting the graphic portion assuming they know how would leave them guessing and frustrated.
Thank you for your nice comment, I really appreciate your nice words. I was actually thinking that most of the viewers would be more familiar with Arduino and not the graphics, but I guess it should work the other way around as well :) Good luck with your projects and please don´t hesitate to share your creations, I would love to see your graphics!
Thank you, but I still don´t fully understand why this video is so much popular compared to my other videos that are very similar in style, but cover different topics. Perhaps the topic of the menu is useful for more projects?
@@upir_upirI found it looking for a way to get neat icons and all on the oled. The way you explained this with the websites like image2cpp and the wokwi example to experiment helped me a lot further then what I could find so far.
judging by how fast he talks, his processor is probably an overclocked i7 with a 2hp water cooling system. this comes with a twin cooling towers with forced air drafts. learned a lot from this tutorial. thanks
Really like your projects, when i see them, there is always some inspiration for me. When i was younger i often thought outside the box - and maybe cuz i am getting older, its getting harder and harder for my mind. But then i see some of your stuff and can create something with it, so thanks for that! :D Keep up the good work 👍
Thank you so much for this amazing tutorial!! I will have to buy you a whole week worth of coffee for this valuable information. My project is looking so nice now!
@@upir_upir I'm Currently working on a Remote for my 3D printed railway. I'm creating a simple UI with Dashboard and a Menu. I think I will also try the u8g2 since its identical to u8glib.
@upir_upir I shared the code, looks like youtube removed my previous comment because of the link. Just the basic dashboard is complete and runs with ESP32 dual core. I have to add a few more functions and a simple menu system.
Consider part two, with the following addition. 1) using 5 buttons (up/down, left - / right +, select (center button) or one rotary encoder with button to handle both, select, change (-/+) 2) functionality to select the current menu and change it's settings, like values,etc. BTW, I always rewatch your videos a lot, keep up the good work
Thank you for your comment, Raymond. It´s not a big surprise, but I will record a second part with 5-way button.. at least I will try to :) Good luck with your projects!
i cobbled together some stuff like your suggestion to fit with my projects parameters!, i added an up, down, left, right and select button as well as an "ok" and "back" button! (ik im late but it was a fun project to try)
@@himikotiro8487 way to go buddy; didn’t play with this project because I’m currently working on a website design. But will definitely return to this. And again thanks @upir_upir for inspiring the rest of us :)
Yeah, that's about it... We obviously have had slightly different approaches around the images and text itself due to the nature of our workflow, but you handle the code "more conciously", whatever that means. Anyway, it's a great learning material as always. I'll definitely come back to it in some time, and try to adapt it to my own needs. Thanks !
Thank you for your comment Kshysztof. I always feel that my code could be improved, but hopefully it will get better with time and more projects. Good luck with your project and I look forward seeing your updated menu!
Very nice video and project, this is one of the best I've seen in recent months, I take great insperation from what you do here, you inspire me to push on with my hobbie.
@@upir_upir Hi my Best, I watched your first CNC Project at least and go on to the Next I am interesting in, on your Channel. I am very exciting in your Content and you have a new Member for sure! I am at the beginning to make own Projects with Microcontrollers and I am very happy when I find any Content like Yours with clean and compact Knowledge and a good round about view of that. Best Greetings from Germany
In the video the int item_sel_next is not set to 0 when overflows :) You just substract with 0 which ends up with nothing :P I know it's so minor but I couldn't prevent myself from mentioning it :D Thank you for the great content !
Thank you for the correction. Please feel free to mention any of my errors, I´m still learning and I often make a lot of those - and sometime I see it after the video is published.. This will hopefully get better with time. Good luck with your projects!
I have a question. I'm trying to use a button interface in one of my projects with the Arduino Uno. But I'm encountering the problem where some button presses do not register because of the code not reading that precise line when the button gets klicked. You seem to have gotten this to work without even using hardware interrupts. Could you please share how you have gotten your menu buttons so responsive?
Can you maybe measure how long your loop takes? This sketch updates I believe at least 10x in a second, so it´s a big chance that you catch the button press. If that would not be the case, using interrupts would be a good idea.
@@upir_upir WOW, Thanks for the answer! Means a lot for me that you take a part of your invaluable time to answer my question. I will take that into consideration. I will check how long it takes for my sketch to update tomorrow!
I am using u8g2 lib with an esp32 and it seems that it draws also the black parts, for example when I draw first the srcollbar and then the selectedIcon the scrollbar dissapear in the middle. So i have to draw first the selectedIcon and then de scrollbar. Maybe there is an option for this.
Yes, u8g2 library has two modes for drawing bitmaps, just make sure to set it to transparent and you should be fine. github.com/olikraus/u8g2/wiki/u8g2reference#setbitmapmode
Thank you for this video, it was very helpful for a project i am working on. however i am having a coding issue, i made up 9 different screens, all assigned to different menu options. when i switch between screens and options, the options don't start at the first menu option, and the text for the screen menu as well as other screen menu text becomes an option. any idea how to fix?
I'm having trouble, I want to add an oscilloscope script into the menu, but i can't get my head around it pointing towards screenshot and not pointing towards the oscillator code
Even combining your other video codes with this code is rough!!! Im trying to add it into the else if's down the bottom but have no idea what to use, like a goto? There is soo many errors lol
Jumping to other pages are lines 1412 and 1415. On line 1412, comment the current code and you can add something like: if (item_selected == 0) {show some other content} else if (item_selected == XXX) {show some other content} . . . Hope it makes sense!
Thank you for the extensive tutorial, in the code I just would change the if statements to check the end of items, with modulus operator, and put the prev/next variables inside the loop as consts like so: const int item_sel_previous = (item_selected - 1) % NUM_ITEMS; no need to banch out code.
Very good and well explained video, thanks for sharing. I thought I would mention that the correct way to pronounce PhotoPea would depend on the language it was developed from and I'm just going to take a stab in the dark here and that foto pee is the original pronunciation, given that it is a small photo editor and that pea is often used to represent something diminutive.
I'm trying to use the Pixel Operator font, but no matter what style I set it to (None, Sharp, Crisp, etc) it remains some sort of blurry. How do I fix this?
Hello, so I have a question about the U8g library in regards of using an "Adafruit ESP32-S2 Reverse TFT Feather". The initiation for the pinouts is weird because unless I am missing a piece the pinouts listed include only Power, CS, DC, Reset, and Backlight pins for the display. Is there a way to still use the u8G library initiation for this? I've initiated it before with Adafruit GFX library, but that one only requires the pins CS, DC, and Reset. I have the backlight turned on, the TFT uses an arduino ST7789 Chipset
In many cases, when it uses hardware I2c or hardware spi connection, those pins are not listed in the initialization, since you cannot change those pins.
how will you link this menu to app for example i have a option called game in the menu and i want it so that when the game is selected then the game should open. Someone help me
Right now, clicking the menu item jumps to the "page" (i.e., code) that shows a fullscreen image. You can replace the code and based on the selected item, do something different. Does that make sense?
How much memory does this consume? I want to make a menu and have two small games imbedded in the code. I have a feeling this will take up too much memory.🤔
I guess you should be to fit it. This menu takes entire memory on UNO, but only because I have many fullscreen screenshots. Without them, the memory consumption is relatively small.
When I select a title from the menu, does the new screen that appears need to be a photo? I want to make a menu for a brick break game. Can the oled go back to ordinary operation after selecting the "Start" option from the menu? Or should I make the game through photos?
For this demo the answer is yes, the "subscreen" is a fullscreen static image - just because I was lazy to make all the subscreens dynamic. You can adjust the code to use this menu to jump to whathere (dynamic) screen you want.
Menu and submenu with settings that have a checkbox to enable/disable and settings with adjustable values (0-100) using a rotary encoder. For the second part, please!
I'm working on a college project where where we can measure sensor data (length, alcohol percentage, etc.) And save it with time and using RTC module in single device using arduino..... I want want to know how you are going into selected options doing the task and generating QR code
I´m glad the video was helpful. The 128/8 is because the used draw function requires the width to be in bytes, not in pixels. I don´t have a submenu tutorial (yet), but I´m working on it...
Oh wow, fantastic video as always upir, hats off to you for taking the time and explaining in such detail for most of us to follow along and not to forget @PCBWay for being such an amazing sponsor for your channel 🙌🏽 This is a job very well executed and along the way what I want to do with my one project but just on a 128x128 RGB OLED. One question: Are you able to save the currently selected page to memory (the currently opened menu item) and display it upon power on as the first screen you see ?
Thank you for your nice comment! Yes, you can save the currently selected menu item / screen, use the eeprom library to store the value in eeprom. Just keep in mind that there is a limited number of writes, I believe it´s 100000...
@upir thank you for the reply. Ah, that makes sense and will not work as the best solution. Just a thought, but will adding an additional flash memory module not be the answer?
I made the same menu as yours but I use a joystick stick instead of buttons and it works but if I leave my OLED display for around 5 minutes and it freezes and I need to restart the whole board. Any tips?
@@upir_upir, thanks for the tips! But in examples of Adafruit SSD1306 it hasn't got this problem and I use the same cables and ports. Is there anything in common about falling stars in the Adafruit library and temporary static images in U8G library?
hello good day What would I have to change if I want to put a larger screen? I'm thinking about making a digital cluster for my VW MK1. and your videos are helping me a lot, I just don't know what it would take to get if I want to add a 7-inch screen (I don't know what type of screen either) greetings from Mexico.
Thank you for your comment. The approach for bigger screen is quite different compared to those small oled displays, but I would like to cover those as well in my future videos. What exactly are you trying to display?
Is it possible to assign different loop function for each menu, for example one menu called gas sensor would display a value from gas sensor like mq-xxx and update it in real time and the second menu would called "temperature" would display a value from temperature sensor like dht11?
do you know how to add turn off/sleep the screen to save supply consumption (for battery supply based)? I'm still wondering how to do this, either sleep the main controller/MCU, or the OLED module itself.
I have found for example this article about the power consumption of OLED displays - bitbanksoftware.blogspot.com/2019/06/how-much-current-do-oled-displays-use.html I think that based on those numbers, you don´t need to care that much to "sleep" the screen. Just don´t draw any pixels and the drawn current will be very small..
@@upir_upir thank you so much for the info. I have found myself about how to switch the screen ON/OFF. The reason I do that is because I want to make a handwatch that use battery, that's why I need switch screen OFF let's say whenever I don't see the time
Great video as always, but how would you make each selected option not be a photo. So if i selected the Turbo option on the menu, the turbo code would start and so on for the rest of the options. It would take a lot of coding right?
Thank you. It should not be hard since I already have sketches for all the designs, but it would definitely not fit on the Arduino UNO with the limited memory. That said, it might be possible to fit on something like ESP32. I might try it, since I would be also interested about the memory usage, and how smooth it would run. I would also need to make sure I´m not using the variables with the same names in those sketches, as they would collide.
I see the OLED is connected to 5 Volt ! I heard that OLED must be connected to 3,3 Volt. Are there different OLEDS with different voltage ? I have mine permanently connected to 5 V and fear damage. ???
It depends on the use OLED module, some are for 3.3V, some are for 5V and some are for both. Unfortunately, many times it’s not listed, especially for those cheap ones.
@@upir_upir Thank you very much for the information ! Unfortunately my OLED ( it looks like yours ) has no labeling exept GND, VCC, SCL, SDA, nothing else, even no part Number or Manufactor. No info about the voltage.
Hi i really like this and i am going to modify it so i have a list of ir codes that i can send But is this possible for the nano maybe it has not so big storage?
Really cool video. At this point in my journey I have a good bit of familiarity with coding logical statements in Arduino and basic circuit design, so I’m trying to come back through and familiarize myself with how to control more ‘snazzy’ things like an actual graphic display (compared to the standard 16X2 that comes with Arduino kits, if you know what I mean). When it comes to telling which menu items should be displayed for next and previous items from the array, wouldn’t it be easier to simply write something like ‘prevItem = (currItem-1)%menuCount)’ and ‘nextItem = (currItem+1)%menuCount)’ ?
I have another video with 128x128 SH1107 display, perhaps that could be a good start? The physical size (1.3inch in your case) it not important, but the connection (IIC / SPI) and pixel resolution is. If you open the u8g2 documentation, it lists all the supported displays and corresponding initializations.
@@upir_upir i see 1.3 inch oled screen. i2c . driver SH1106 . as declared by the manufacturer. it has no functionality , scrolling and , generating code . for objects, motion,
No interrupts, just reading the pin value in the loop function. There is no need to deal with the bounces, as the drawing loop takes quite a lot of time, so there is actually the opposite problem - not registering the button press sometime. I´m sure the interrupts would help, but I wanted to keep it simple for now.
Yes, this one is the 1.54" version, you can get it from here - s.click.aliexpress.com/e/_DlS3EOv And if this is still too small, you can get 2.42" version - s.click.aliexpress.com/e/_DnscNsD
Nothing special. This particular OLED is somehow easier to film compared to others. That said, none of them are blinking to the naked eye, it´s only a camera problem.
How would you save multiple animations to a single board? Also is it possible for these types of animations to be functional or are they more so just for entertainment purposes
Great tutorial. Thank you. I am using the OLED with a nano ble and have checked that my IC address is correct. The problem I am having is that only the top 10% of the screen shows the display. The bottom 90% is just white and black dots. I tried a second display and have the same result. Any suggestions?
@@upir_upir well I would like it to read inputs from the can network or directly from the ecu and control a Mac valve to control turbo boost levels and maybe display other parameters using one of those displays… me personally wold love one of those transparent displays
@@isaacfuertes is something like this what you are looking for? www.instructables.com/Boost-and-Air-Fuel-Ratio-LCD-Gauge/ Of course the second possible way is to directly read the CANBUS values and do not use a separate sensor.
That´s surely possible, there are many different ways how to improve this project. You can also use SD card to store more images, or - I think the best solution is to simply use a different board with more memory. Arduino Mega has 256kB (instead of 32kB for Uno), ESP32 and other boards have even more memory.
Wao first person I encounter that gives a full explanation of their micro controller projects, this is too much to digest but well learning experience! cheers, can this be used to extract real data from car via odb?
Thank you for your comment and hopefully it will be easier to digest with more time :) Yes, you can use ODBII. I do plan to record a video about that topic soon.
I don´t see any flickering with the u8g2 or u8g libraries. It´s most likely not a problem with clearing the displays but with a slow update of the buffer/displays. Perhaps the Arduino is too slow, or you are trying to do too many calculations/drawings. Try simplifying your code to see if that helps, or perhaps use a faster Arduino, like the UNO R4?
@@upir_upir adafruit ssd1306 library working without flickering.im using Arduino nano.its memory getting full. so i change to small size library but the problem is flickering. now im looking for esp 32 s2 mini. thanks for reply.
You can open a gif file in Photopea and export sequence of images and use image2cpp to generate C file for that animation - slightly more clicks compared to using the animator, but still should not be very complicated.
I have question for you. Can I operate some Devices using Arduino Uno and application and canBus shield ? That is, can I connect Arduino with Canbus Shield and Oled lcd?
Yes, that should be possible. There are many canbus shields for Arduino UNO, it´s just a question how hard it would be to also connect the OLED display - i.e. how easy would be to access those pins.
@@upir_upir canbus shield is uno comfortable and is connected to all pins from the top. In this case, will the canbus shield work correctly and stably on oled lcd while using all pins ? Or can’t we know without trying this ?
Do you like the video? Please consider buying me a coffee ☕, thank you! www.buymeacoffee.com/upir
i will definetely buy you a cofee when i start earning
Sorry, I was really interested but you spoke so fast, didn’t finish
I always love that you provide full instructions for these projects. While I'm no novice with graphics, I'm still learning Arduino, so I can jump ahead, but for users who have no clue, omitting the graphic portion assuming they know how would leave them guessing and frustrated.
Thank you for your nice comment, I really appreciate your nice words. I was actually thinking that most of the viewers would be more familiar with Arduino and not the graphics, but I guess it should work the other way around as well :) Good luck with your projects and please don´t hesitate to share your creations, I would love to see your graphics!
Man, you went out of your way for this. You deserve a medal of honor!
Thank you, but I still don´t fully understand why this video is so much popular compared to my other videos that are very similar in style, but cover different topics. Perhaps the topic of the menu is useful for more projects?
@@upir_upirI found it looking for a way to get neat icons and all on the oled. The way you explained this with the websites like image2cpp and the wokwi example to experiment helped me a lot further then what I could find so far.
Most useful material about OLED menu, i ever seen!
Great work!
TNX for doing these!
That´s great to hear, thank you for your nice comment and good luck with your project!
judging by how fast he talks, his processor is probably an overclocked i7 with a 2hp water cooling system. this comes with a twin cooling towers with forced air drafts. learned a lot from this tutorial. thanks
I´m glad it was still useful!
讲解太棒了,循序渐进,ui审美也非常在线,Like the video!
Thank you for your nice comment, I´m glad you like it!
Really like your projects, when i see them, there is always some inspiration for me. When i was younger i often thought outside the box - and maybe cuz i am getting older, its getting harder and harder for my mind. But then i see some of your stuff and can create something with it, so thanks for that! :D Keep up the good work 👍
Thank you for your nice comment, I´m glad you like and that it inspires you for your own creations. Good luck with your projects!
I always wished I had gone down the electronics toad when I was younger so understand when you say about it being harder as you age.
Best tutorial i have seen... great job man!
Wow, thanks! I really appreciate your comment.
Thank you so much for this amazing tutorial!! I will have to buy you a whole week worth of coffee for this valuable information. My project is looking so nice now!
Thank you for your nice words, I would be glad even for a single coffee!
I was just looking for this! Detailed and Easy to understand tutorial
Thanks man
That´s great to hear, feel free let me know if there is something else that you are looking for :)
@@upir_upir I'm Currently working on a Remote for my 3D printed railway. I'm creating a simple UI with Dashboard and a Menu. I think I will also try the u8g2 since its identical to u8glib.
Cool! Do you have any example/photos to share? There is just a slight difference between those two libraries that I will cover in the next video..
@upir_upir I shared the code, looks like youtube removed my previous comment because of the link.
Just the basic dashboard is complete and runs with ESP32 dual core. I have to add a few more functions and a simple menu system.
That’s strange, usually there is no problem with posting links. Could you please try it again?
Consider part two, with the following addition.
1) using 5 buttons (up/down, left - / right +, select (center button) or one rotary encoder with button to handle both, select, change (-/+)
2) functionality to select the current menu and change it's settings, like values,etc.
BTW, I always rewatch your videos a lot, keep up the good work
Thank you for your comment, Raymond. It´s not a big surprise, but I will record a second part with 5-way button.. at least I will try to :) Good luck with your projects!
@@upir_upir +1 for rotary encoder; thank you for this fantastic tutorial, anyway!
@@upir_upir +1 I too need the rotary encoder option from you. With kind regards.
i cobbled together some stuff like your suggestion to fit with my projects parameters!, i added an up, down, left, right and select button as well as an "ok" and "back" button! (ik im late but it was a fun project to try)
@@himikotiro8487 way to go buddy; didn’t play with this project because I’m currently working on a website design.
But will definitely return to this.
And again thanks @upir_upir for inspiring the rest of us :)
A very superb video, it helped me through the dark sad times in my life when no one was there for me.
I´m glad that a simple menu has such a power!
I love your menus bro, keep going we need more of them ❤️
Thank you! I really like those OLED displays, so I´m sure there will be more graphics-content in the near future..
I'm still new to arduino, I watch your videos and they inspire me to take and do) Thanks for your work! sorry for my english)
That´s great to hear. If the video inspires you to create you own project, then it fullfiled it´s purpose.
I've learned so much in this video. I'm just speechless. Thanks for your awesome work! 👍😊
Happy to hear that! Thank you for your nice comment and good luck with your projects.
Yeah, that's about it...
We obviously have had slightly different approaches around the images and text itself due to the nature of our workflow, but you handle the code "more conciously", whatever that means.
Anyway, it's a great learning material as always. I'll definitely come back to it in some time, and try to adapt it to my own needs.
Thanks !
Thank you for your comment Kshysztof. I always feel that my code could be improved, but hopefully it will get better with time and more projects. Good luck with your project and I look forward seeing your updated menu!
Extremely informative ! , keep uploading such great contents
Thank you for your nice comment, I don´t plan to stop yet :)
This tutorial is very well-made! WOW thank you so much :)
You're very welcome, I´m glad it was helpful!
woow wooow woowwww This is the best tutorial video I have ever watched
Thanks for sharing, the video is really detailed and easy to understand. I will learn your way to develop IOT products!
Thank you for your comment, I´m glad you like it!
Very nice video and project, this is one of the best I've seen in recent months, I take great insperation from what you do here, you inspire me to push on with my hobbie.
Thank you, John! I really appreciate your nice comment and wish you luck with your own projects. Please feel free to share your creations.
This is the best on OLED gauges, thank you for the wonderful presentation. With best regards.👌👌
Thank you for your nice comments and good luck with your projects!
Freaking useful! thank you, subscribed for sure
Thanks for the sub!
Keep it up! I love your work!
Thank you Jerome, I really appreciate your nice comment and support.
Thank you! I learned a lot with this video.
That´s great to hear, thank you for your comment!
Wow! C`est magnifique Upir!!!!
Thank you!
I love this ❤️ thank you for the information, very valuable for me who is still a beginner 🙏
That´s great to hear! Thank you for your nice comment and good luck with your projects.
I knew nothing about coding getting into this video. But I somewhat sort of maybe kind of understand now
That´s great to hear, good luck with your learning and I hope my projects will help with that!
Thats real hot Stuff!!! Thx. Best Video ever for explaining all around! Niceee
Thank you, I´m glad you like it. Make sure to check also my other videos where I use the same explaining style but with various different projects.
@@upir_upir Hi my Best, I watched your first CNC Project at least and go on to the Next I am interesting in, on your Channel. I am very exciting in your Content and you have a new Member for sure! I am at the beginning to make own Projects with Microcontrollers and I am very happy when I find any Content like Yours with clean and compact Knowledge and a good round about view of that. Best Greetings from Germany
In the video the int item_sel_next is not set to 0 when overflows :) You just substract with 0 which ends up with nothing :P
I know it's so minor but I couldn't prevent myself from mentioning it :D
Thank you for the great content !
Thank you for the correction. Please feel free to mention any of my errors, I´m still learning and I often make a lot of those - and sometime I see it after the video is published.. This will hopefully get better with time. Good luck with your projects!
very good video, very interesting...
i like you show all the process and get a better solution in the end
Thank you for your comment, I´m glad you like it!
Is it possible to use a external EEPROM to store images so it doesn't take the space in the main sketch ??
You can, but probably a better way would be to use a different Arduino or Arduino compatible board with bigger memory. There are plenty of those.
I have a question. I'm trying to use a button interface in one of my projects with the Arduino Uno. But I'm encountering the problem where some button presses do not register because of the code not reading that precise line when the button gets klicked.
You seem to have gotten this to work without even using hardware interrupts. Could you please share how you have gotten your menu buttons so responsive?
Can you maybe measure how long your loop takes? This sketch updates I believe at least 10x in a second, so it´s a big chance that you catch the button press. If that would not be the case, using interrupts would be a good idea.
@@upir_upir WOW, Thanks for the answer! Means a lot for me that you take a part of your invaluable time to answer my question.
I will take that into consideration. I will check how long it takes for my sketch to update tomorrow!
I am using u8g2 lib with an esp32 and it seems that it draws also the black parts, for example when I draw first the srcollbar and then the selectedIcon the scrollbar dissapear in the middle. So i have to draw first the selectedIcon and then de scrollbar. Maybe there is an option for this.
Yes, u8g2 library has two modes for drawing bitmaps, just make sure to set it to transparent and you should be fine. github.com/olikraus/u8g2/wiki/u8g2reference#setbitmapmode
@@upir_upir Oh, Thanks!
Sure, you are welcome. Good luck with your projects!
Thank you very much. Always appreciate your content :)
Thank you, I´m glad you like it!
amazing tutorial, thanks for the tools introduced.
You are second, I’m glad you like it! Thank you for your comment
excellent work :)
Thank you!
Thank you for this video, it was very helpful for a project i am working on. however i am having a coding issue, i made up 9 different screens, all assigned to different menu options. when i switch between screens and options, the options don't start at the first menu option, and the text for the screen menu as well as other screen menu text becomes an option. any idea how to fix?
Thank you for your comment. Perhaps watching my other OLED-related tutorials will help? I have a lot of those on my channel.
Don't you just hate it when someone draws a 16x16 pixel black and white image and it looks perfect in one go? 😂
I hate it as well!! Thankfully, I can cut out all the unsuccessful tries and only include the one that looks good :)
This is great - can you show a version with a rotary encoder (with push button) instead of separate buttons?
Thank you and sure, I will try rotary encoder for some of my future projects.
mükemmel bir anlatım olmuş. teşekkür ederim
Thank you, I´m glad you like it!
Thanks for the video, great job 👍
Thanks for watching!
insanely informative
Thank you, I´m glad you like it!
thanks, new subscriber!!
Thank you, and welcome! :)
Could be show me an example or explain how i could make a menu like this but then with submenus and functions
I´m working on the video with the menu project that also has submenus, hope that will answer all of your questions.
that GUI reminds of the base model Mercedes Sprinter’s gauge screen GUI
I hope that´s a good thing! :)
@@upir_upir sure is!
I'm having trouble, I want to add an oscilloscope script into the menu, but i can't get my head around it pointing towards screenshot and not pointing towards the oscillator code
Even combining your other video codes with this code is rough!!! Im trying to add it into the else if's down the bottom but have no idea what to use, like a goto? There is soo many errors lol
Jumping to other pages are lines 1412 and 1415.
On line 1412, comment the current code and you can add something like:
if (item_selected == 0) {show some other content}
else if (item_selected == XXX) {show some other content}
.
.
.
Hope it makes sense!
@@upir_upir thank you, it does somewhat but the loop keeps running after my selection has been made unfortunately
Thank you for the extensive tutorial, in the code I just would change the if statements to check the end of items, with modulus operator, and put the prev/next variables inside the loop as consts like so: const int item_sel_previous = (item_selected - 1) % NUM_ITEMS;
no need to banch out code.
Good point! I also try to avoid branching and this is a good idea. Thank you
Very good and well explained video, thanks for sharing. I thought I would mention that the correct way to pronounce PhotoPea would depend on the language it was developed from and I'm just going to take a stab in the dark here and that foto pee is the original pronunciation, given that it is a small photo editor and that pea is often used to represent something diminutive.
I think you are right, also because the logo slightly resembles a pea stalk.. anyway, thank you for a nice comment!
I'm trying to use the Pixel Operator font, but no matter what style I set it to (None, Sharp, Crisp, etc) it remains some sort of blurry. How do I fix this?
Do you use real Photoshop or Photopea? I would check that the position is on internet value, and if the problem persists, apply the threshold effect.
@@upir_upir Photopea
Yep, Photopea sometime has a hard time rendering pixel fonts properly. Again, I would suggest using Threshold effect on top of everything.
Wau sangat menginspirasi❤
Tambahkan subtitle indonesia 😂
Thank you, however, the subtitles were auto generated, so I hope it makes at least a little bit of sense…
Absolutly awesome
Thank you, I’m glad you like it!
Hello, so I have a question about the U8g library in regards of using an "Adafruit ESP32-S2 Reverse TFT Feather". The initiation for the pinouts is weird because unless I am missing a piece the pinouts listed include only Power, CS, DC, Reset, and Backlight pins for the display. Is there a way to still use the u8G library initiation for this? I've initiated it before with Adafruit GFX library, but that one only requires the pins CS, DC, and Reset. I have the backlight turned on, the TFT uses an arduino ST7789 Chipset
In many cases, when it uses hardware I2c or hardware spi connection, those pins are not listed in the initialization, since you cannot change those pins.
@@upir_upir So what should I do?
Great video!
Thank you, I´m glad you enjoyed it!
how will you link this menu to app for example i have a option called game in the menu and i want it so that when the game is selected then the game should open. Someone help me
Right now, clicking the menu item jumps to the "page" (i.e., code) that shows a fullscreen image. You can replace the code and based on the selected item, do something different. Does that make sense?
How much memory does this consume? I want to make a menu and have two small games imbedded in the code. I have a feeling this will take up too much memory.🤔
I guess you should be to fit it. This menu takes entire memory on UNO, but only because I have many fullscreen screenshots. Without them, the memory consumption is relatively small.
@@upir_upir thanks! I’ll see what I can do. 🤔
When I select a title from the menu, does the new screen that appears need to be a photo? I want to make a menu for a brick break game. Can the oled go back to ordinary operation after selecting the "Start" option from the menu? Or should I make the game through photos?
For this demo the answer is yes, the "subscreen" is a fullscreen static image - just because I was lazy to make all the subscreens dynamic. You can adjust the code to use this menu to jump to whathere (dynamic) screen you want.
Actually, I haven't learned how to make the game yet.
@@upir_upir Thank you very much for your response. Do you have any suggestions for the brick break game? I'm kind of new to this.
Menu and submenu with settings that have a checkbox to enable/disable and settings with adjustable values (0-100) using a rotary encoder. For the second part, please!
Good idea! I do plan to record a second part soon...
so coool man, gratsss and thzz!
Thank you, I’m glad you like it! Good luck with your projects
Can we store multiple specific task in ( code to read sensor data and etc .) In menu items after selection it.
Could you be more specific?
I'm working on a college project where where we can measure sensor data (length, alcohol percentage, etc.) And save it with time and using RTC module in single device using arduino.....
I want want to know how you are going into selected options doing the task and generating QR code
That load of info was fast to acquire. Why did you divide128/8? Do you have a video teaching how to do submenus?
I´m glad the video was helpful. The 128/8 is because the used draw function requires the width to be in bytes, not in pixels. I don´t have a submenu tutorial (yet), but I´m working on it...
Oh wow, fantastic video as always upir, hats off to you for taking the time and explaining in such detail for most of us to follow along and not to forget @PCBWay for being such an amazing sponsor for your channel 🙌🏽
This is a job very well executed and along the way what I want to do with my one project but just on a 128x128 RGB OLED.
One question: Are you able to save the currently selected page to memory (the currently opened menu item) and display it upon power on as the first screen you see ?
Thank you for your nice comment! Yes, you can save the currently selected menu item / screen, use the eeprom library to store the value in eeprom. Just keep in mind that there is a limited number of writes, I believe it´s 100000...
@upir thank you for the reply.
Ah, that makes sense and will not work as the best solution.
Just a thought, but will adding an additional flash memory module not be the answer?
Great job!!!
Thank you very mutch
Thank you, I´m glad you like it!
Always interesting !...cheers.
Thank you for your continuous support! :)
I made the same menu as yours but I use a joystick stick instead of buttons and it works but if I leave my OLED display for around 5 minutes and it freezes and I need to restart the whole board. Any tips?
Try putting pull-up resistors on the data lines, make the wires shorter, and check if the display uses this exact chip or perhaps a different one
@@upir_upir, thanks for the tips! But in examples of Adafruit SSD1306 it hasn't got this problem and I use the same cables and ports. Is there anything in common about falling stars in the Adafruit library and temporary static images in U8G library?
hello good day What would I have to change if I want to put a larger screen? I'm thinking about making a digital cluster for my VW MK1. and your videos are helping me a lot, I just don't know what it would take to get if I want to add a 7-inch screen (I don't know what type of screen either) greetings from Mexico.
Thank you for your comment. The approach for bigger screen is quite different compared to those small oled displays, but I would like to cover those as well in my future videos. What exactly are you trying to display?
I'd love to see a version of this that can also display the same output on an HTML5 Canvas at the same time for web clients connected.
That would be cool, but unfortunately, it is currently outside the scope of my knowledge.
Great video thank you👍
❤ Arduino
Thank you, I´m glad you like it!
Is it possible to assign different loop function for each menu, for example one menu called gas sensor would display a value from gas sensor like mq-xxx and update it in real time and the second menu would called "temperature" would display a value from temperature sensor like dht11?
Yes, that should be possible for sure. There might be a limit to how many screens you can fit to UNO with the limited memory.
Really useful - thank you for sharing
That´s great to hear, thank you for your comment!
do you know how to add turn off/sleep the screen to save supply consumption (for battery supply based)? I'm still wondering how to do this, either sleep the main controller/MCU, or the OLED module itself.
I have found for example this article about the power consumption of OLED displays - bitbanksoftware.blogspot.com/2019/06/how-much-current-do-oled-displays-use.html
I think that based on those numbers, you don´t need to care that much to "sleep" the screen. Just don´t draw any pixels and the drawn current will be very small..
@@upir_upir thank you so much for the info. I have found myself about how to switch the screen ON/OFF. The reason I do that is because I want to make a handwatch that use battery, that's why I need switch screen OFF let's say whenever I don't see the time
Great video as always, but how would you make each selected option not be a photo. So if i selected the Turbo option on the menu, the turbo code would start and so on for the rest of the options. It would take a lot of coding right?
Thank you. It should not be hard since I already have sketches for all the designs, but it would definitely not fit on the Arduino UNO with the limited memory. That said, it might be possible to fit on something like ESP32. I might try it, since I would be also interested about the memory usage, and how smooth it would run. I would also need to make sure I´m not using the variables with the same names in those sketches, as they would collide.
Great, tnx.
Thank you!
I see the OLED is connected to 5 Volt !
I heard that OLED must be connected to 3,3 Volt.
Are there different OLEDS with different voltage ?
I have mine permanently connected to 5 V and fear damage.
???
It depends on the use OLED module, some are for 3.3V, some are for 5V and some are for both. Unfortunately, many times it’s not listed, especially for those cheap ones.
@@upir_upir Thank you very much for the information !
Unfortunately my OLED ( it looks like yours ) has no labeling exept GND, VCC, SCL, SDA, nothing else, even no part Number or Manufactor.
No info about the voltage.
Hi, how would I make it so the options light up an LED?
Sure, just add the code to set any digital pin LOW or HIGH..
pinMode(pin_number, OUTPUT);
digitalWrite(pin_number, HIGH);
@@upir_upir thanks!
the u8glib freezes my display after a few seconds of working. Can you help me, cuz I don't want to use u8g2lib?
So it´s working with the u8g2 and not working with u8g?
@@upir_upiryes, i tried different versions but still
Hi i really like this and i am going to modify it so i have a list of ir codes that i can send
But is this possible for the nano maybe it has not so big storage?
Thank you for your comment, the Nano has also 32KB of flash memory, so there should be no problem running this sketch on this board.
@@upir_upir no! Thank you for the tutorial
my godddddddddddddddddd.......................,,,,,,,,,,, really nice video..
Thank you, I´m glad you like it!
Really cool video. At this point in my journey I have a good bit of familiarity with coding logical statements in Arduino and basic circuit design, so I’m trying to come back through and familiarize myself with how to control more ‘snazzy’ things like an actual graphic display (compared to the standard 16X2 that comes with Arduino kits, if you know what I mean).
When it comes to telling which menu items should be displayed for next and previous items from the array, wouldn’t it be easier to simply write something like
‘prevItem = (currItem-1)%menuCount)’ and
‘nextItem = (currItem+1)%menuCount)’ ?
Thank you for your comment. I agree that your code is easier, but might be slightly too advanced for novice users.
@@upir_upirGood point. 😅
how can i set it up on the screen , 1.3 inch oled SH1106 , thanks a lot
I have another video with 128x128 SH1107 display, perhaps that could be a good start? The physical size (1.3inch in your case) it not important, but the connection (IIC / SPI) and pixel resolution is. If you open the u8g2 documentation, it lists all the supported displays and corresponding initializations.
@@upir_upir i see 1.3 inch oled screen. i2c . driver SH1106 . as declared by the manufacturer. it has no functionality , scrolling and , generating code . for objects, motion,
Could you try the sketch from the other video to see if that one works? Is the “Arduino clock” one.
@@upir_upir ok thanks very much !
How are you handeling the buttons ? are you using external interrupts, and how are you dealing with the bounces ?
You may want to view to the end
No interrupts, just reading the pin value in the loop function. There is no need to deal with the bounces, as the drawing loop takes quite a lot of time, so there is actually the opposite problem - not registering the button press sometime. I´m sure the interrupts would help, but I wanted to keep it simple for now.
What screen diagonal is this?
It's definitely larger than the linked 0.96" version
Yes, this one is the 1.54" version, you can get it from here - s.click.aliexpress.com/e/_DlS3EOv
And if this is still too small, you can get 2.42" version - s.click.aliexpress.com/e/_DnscNsD
Instead of buttons, can we integrate them into a rotary encoder?
Yes, that might be a good idea. I might try that in the future.
The oled looks really crisp on camera! Did you do anything in code to stop the flickering or was it just camera settings?
Nothing special. This particular OLED is somehow easier to film compared to others. That said, none of them are blinking to the naked eye, it´s only a camera problem.
IIC PROTIP:
A5 has 5 letters, as does CLOCK
A4 has 4 letters, as does DATA
This is very helpful, thank you!
thats a great way to remember👍👌
Hi, can you please explain, A4, A5 on one side and SDA,CLK on the other side side of the board are bridged?
Yes, those are the same pins.
How would you save multiple animations to a single board? Also is it possible for these types of animations to be functional or are they more so just for entertainment purposes
Yes, you can have multiple animations, and yes, they can be fully functional. You are just limited by the available memory.
Great tutorial. Thank you. I am using the OLED with a nano ble and have checked that my IC address is correct. The problem I am having is that only the top 10% of the screen shows the display. The bottom 90% is just white and black dots. I tried a second display and have the same result. Any suggestions?
Thank you for your comment! Try using this initialization line if that helps:
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK);
Hey can you make tutorial for TFT full color displays? especially for ili9341
Sure!
Is there a tutorial for an AFR Gauge?
Do you have a dedicated sensor connected to Arduino, or are you getting those values from OBDII port?
@@upir_upir I basically want an AFR Reading from a Wideband O2 Lambda Sensor Bosch LSU 4.2 to be specific
Excellent work …. Am curious tho could you make a boost controller from this project to control a MAC valve ?
Thank you! I think it should be possible, what do you plan to use it for?
@@upir_upir well I would like it to read inputs from the can network or directly from the ecu and control a Mac valve to control turbo boost levels and maybe display other parameters using one of those displays… me personally wold love one of those transparent displays
make an air fuel ratio sensor with a lambda wideband please
Do you have any examples? Is this something you want to add to your own car?
it would be easier to decode existing CAN bus lines with arduino
@@upir_upir AEM's X-Series Wideband UEGO Air/Fuel Ratio Sensor Controller Gauges
@@isaacfuertes is something like this what you are looking for? www.instructables.com/Boost-and-Air-Fuel-Ratio-LCD-Gauge/
Of course the second possible way is to directly read the CANBUS values and do not use a separate sensor.
@@upir_upir Something like that would be nice. It would be more interesting with the separate sensor, it is more universal.
why not using an external eeprom and store all the data there?
That´s surely possible, there are many different ways how to improve this project. You can also use SD card to store more images, or - I think the best solution is to simply use a different board with more memory. Arduino Mega has 256kB (instead of 32kB for Uno), ESP32 and other boards have even more memory.
Thank U very much for this video.its very informative .
You are welcome, I’m glad you like it!
From where did u get those keyboard like buttons
The link should be in the description of the video.
@@upir_upir no, didn't find anything
The 4th letter in the alphabet is a D like DATA. Therefore A4 = SDA.
Someone else mentioned CLOCK = 5 letters = A5, DATA = 4 letters = A4.
I used oled 64 *48 can you worked these program?
Yes, you can use it as well, but you need to adjust the graphics accordingly since the resolution is smaller.
Wao first person I encounter that gives a full explanation of their micro controller projects, this is too much to digest but well learning experience! cheers, can this be used to extract real data from car via odb?
Thank you for your comment and hopefully it will be easier to digest with more time :) Yes, you can use ODBII. I do plan to record a video about that topic soon.
@@upir_upir looking forward to learn about obd and make it functional for me
Hi which library is best for showing some variables fom different pages without flickering display (its happening when clear display command is used)
I don´t see any flickering with the u8g2 or u8g libraries. It´s most likely not a problem with clearing the displays but with a slow update of the buffer/displays. Perhaps the Arduino is too slow, or you are trying to do too many calculations/drawings. Try simplifying your code to see if that helps, or perhaps use a faster Arduino, like the UNO R4?
@@upir_upir adafruit ssd1306 library working without flickering.im using Arduino nano.its memory getting full. so i change to small size library but the problem is flickering. now im looking for esp 32 s2 mini. thanks for reply.
@pkp8559 switching to ESP32 should solve the issue. Good luck with your project!
is it possible to get an animator like wokwi for a 128 by 128 oled display?
You can open a gif file in Photopea and export sequence of images and use image2cpp to generate C file for that animation - slightly more clicks compared to using the animator, but still should not be very complicated.
I have question for you. Can I operate some Devices using Arduino Uno and application and canBus shield ? That is, can I connect Arduino with Canbus Shield and Oled lcd?
Yes, that should be possible. There are many canbus shields for Arduino UNO, it´s just a question how hard it would be to also connect the OLED display - i.e. how easy would be to access those pins.
@@upir_upir canbus shield is uno comfortable and is connected to all pins from the top. In this case, will the canbus shield work correctly and stably on oled lcd while using all pins ? Or can’t we know without trying this ?