Finally someone who doesnt just throw in a bunch of libraries and function calls and there you have it (which isnt helpful/overwhelming for beginners or if your application is not off-the-shelve, custom neopixelmatrix in my case). Straight forward implementation and easy to follow presentation. Very helpful. Thanks alot.
Excellent - I live in the middle of nowhere in SW Australia and struggle learning C from books. Your video is a great help. I'm working on a GPS with map display and want to store the maps on an SD card. Many thanks.
This info is all very useful. I wonder if you'd be willing to teach how to make a needle gauge, as you were discussing. I've looked at the kbv examples and they are a bit confusing. Thank you
Hi. Control panels are on my list of things to do at some point. My idea in this video to to draw / photo / etc some gauges to make a more realistic control panel. Each gauge would have a solid colour background. You would then draw the needles / pointers / etc. onto the gauge to show the value. Use the overwrite and redraw technique to erase the old pointer and then redraw the new value to animate it. For a rotary dial you need to work out the end points of the needle. Taking the centre point makes one end easy. Next you need to translate the values into angles and then work out the coordinates of the other end using trigonometry. Then just draw a line between the two. I hope this helps a bit. It's a bit vague but I hope you get the idea.
@@BytesNBits Yes, I understand. I'm guessing the pixels under the old needle position would have to be redrawn as well. At any rate, I enjoy your style, and am looking forward to more. BTW; you deserve so many more subscribers. Maybe you could get an article onto Hackaday?
Thank you for sharing your wealth of knowledge with us. I'm using a monochromatic screen (SHARP MEMORY DISPLAY) - and I'm trying to decode 1-bit bmp files with no luck. Following your guide & reducing the total byte counts / buffer doesn't seem to do the trick. Any tips? Much appreciated!
Hi. I would create a small bitmap image say 16 x 16 pixels. Then modify the code to output all the data is pulls out of the image file. You should then be able to see the data, what the code thought it had to do and hopefully you'll start to see where it went wrong. I hope this helps.
@@BytesNBits This helps a ton. Basically did what you suggested (except I went for a 3x3 1bit bmp). With more testing, I should be able to get something out! Will update this thread/upload my own vid explaining how I ended up doing it. Thanks for your reply! Cheers.
The limiting factor is the screen area you need to draw for each frame. If your GIF is small you'll get a good frame rate. Full screen size and you're down to 1fps or slower.
..how to make arduino recognise/read color (pixel array) in a image file at certain coordinate on that image?...used to decode timezone and country data on a globe map image file where each country is represented by a color...for auto local timekeeping GPS watches..
The code in the tutorial should give you all the data you need for a bitmap image. As you decode the file you'll be able to extract the pixel data you need.
Hello, thank you very much for sharing your work. I was wondering if there is a way to display these images in a faster way, maybe using .raw format or something similar? Is it possible to increase the speed of the process? Thanks in advance
Hi. The main bottleneck is sending the data out to the screen. This needs to be done pixel by pixel. The Arduino is very low on RAM so we can't create any sensible memory based frame buffer which would let us send the whole screen in one go. Have a look at this video for the idea using a Pi Pico - ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-fGfb2NvDlG4.html
Hi. Sometimes the pixel data is stored in a different order. Check the image height and width values in the DIB header. If they are negative the pixels are being stored in the opposite order on that axes. e.g. a negative height means the rows are top to bottom rather than bottom to top.
Can I read the jpg image into bytes from arduino sd card and send it to python on laptop through bluetooth HC-06 , because i want to do the image processing but i dont know how to read the jpg image in sd card in bytes or hexadecimal format
Hi. Yes. Once you read the file in raw byte format it's just a series of 8 bit values. You can send this over any communications channel. You'll obviously need some code at the Python end to decode the data and turn it back into a jpg image inside the software.
@@BytesNBits but what is the coding to read the jpg image in bytes or hex, and send it through serial ? Do you have the video of tutorial? I am really new to this field
@@khaileng3020 You can use the code in the video to read the file in hex. That's what it's doing for the bitmap image. You can then output that over the serial monitor or another channel. At the PC end you'll need to be able to identify the data and then compile it into the jpg file for saving.
Hi. The screen runs at 3.3V and the Arduino outputs at 5V. You run the risk of damaging the screen without the level shifter. If you look at my setup video for the screen and Arduino I use a simple resistor voltage divider circuit, but the level shifter is a much neater solution.
Егор Смирнов 3 минуты назад (изменено) Thank you for your job Bob! Let me ask you, i i've got an ili9225 display ant it has different methods. screen.endWrite(); screen.startWrite(); i found and they the same but was protected. but there is no method screen.writeColor(screen.color565(r, g, b), 1); and screen.setAddrWindow(). Instead it has screen.drawPixel(); that hendel some functions of setAddresWindow but i cant figure it out how change and split different librares and methods. Cold you please take a lock and me it possible to solve that problem?
Hi. I'm in the process of making a video on how to write your own drivers for devices and will be using the LCD screen as an example. I'll cover how to work out the screen commands and implement them in code. That will probably give you a better answer. That one should be out the the next 2-3 weeks.