Guys I am wanting some project guidance and your opinion on feasibility.
The project I wanting to create is a graphic lcd screen that displays 3 different bitmap images, one at a time, and uses a switch to go from one to another. I want to make it very cost affective in the end. It doesnt seem extremely hard. I'm looking for guidance with hardware, software, and just where to start.
i am very new to micro controllers. I'm a mechanical engineer and have knowledge of circuits. Ive done plc programming, a couple of vba simple projects, a couple c++ project, and intermediate circuitry troubleshooting.
Give me your opinions and tell me if arduino is were I need to be or show me some different paths I can take.
define bitmaps, I can think of very simple 8x8 monochrome to full blown HD 32 bit color + alpha effects, and anything between, obviously one is easier than the other
i was thinking something like a CFAF240320H-022T
240xRGBx320 262K full-color graphic TFT module. link below
I looking for something to display color picture, but I want to be cost effective. I'm open to suggestion and need a little guidance in this area.
That sort of image size and colour depth is going to be too much to hold in memory on the Arduino. Perhaps you could store it on an SD card. Where do the images come from - is there an implied requirement to be able to upload/download them?
I figured I would have to have something to store the images...............if not arduino maybe something else can hold them?.....sd or some sort of onboard ram
And at this time I just looking to put the pictures on there and leave them....no need to access them to change them
I'm looking for simplicity and being cost effective
You really need to put a dollar amount on cost effective. Cost effective to the CEO of McDonalds is not the same as cost effective to a burger flipper at McDonalds.
A 128 x 160 (1.8") display can be had for $9.00. Or you can get a 320 x 240 (2.4") for $20.00 These are raw displays with no breakout. If you want to add a breakout and an SD card, you could go the simple route and use something like 4D systems displays but those start at $30 for a 1.4" and go up to about $140 for a 4.3". The nice thing about 4D is they can operate without an external controller. However, they are anything but cost effective.
There are many solutions for what you wnat to do. You just have to put a price on it.
If using an SD card to hold the bitmaps is OK with you, check out (for example) the Adafruit 2.8" TFT LCD. They have a library to load bitmaps from SD and display them on the LCD. So, basically your responsibility will be to read your switch and pick the right filename. Easy.
Sparkfun has a nice selection of displays too.
+1 for Sir Nickity's suggestion
Guys I really appreciate your help.
Sacman I think I will keep your ideas in the back of my head once I get to the production prototype. It seems like one of those lcd's will be the cost effective way once I get a conceptual prototype done. Thanks for the info.
SirNickity Adafruit 2.8" TFT LCD looks to be a great and I think this will work great for the conceptual prototype. I probably take your suggestion and throw in a SD card for now.
So it looks like for hardware for a conceptual ill be using:
lcd with integraded controller (like a Adafruit 2.8" TFT LCD)
I always open if you guys think of something else or just some good guidance.
Ill let you know how far I get until I get to a crossroads.
Most of the microcontrollers have a very limited amount of storage. The Uno, for instance, has 32K of flash, and couple KB of RAM. That's quite a bit of code space, but not much for image data. You can use one of the big guns chips like the 2560 to get 256KB of flash, but even that isn't exactly a ton of space for bitmaps.
JPG and the like are out of the question, in terms of needing horsepower and memory enough to decode the compressed data, so you trade format efficiency for storage space.
SD has oodles of space, so that solves your problem. And it's super easy to hook up, physically. The library is large (code space again), so at least a 328P (Uno) for sure, considering the needs of the LCD library as well. But since you no longer have to care about having enough room to store pictures on-flash, that's fine. The rest of your sketch looks like it'll need minimal space.
The one downside (maybe -- depending on your viewpoint) of the Adafruit screen is that it's also touchscreen. If that doesn't fit in to you UI needs, it's a waste... Changing screens means you'll need to ensure your new LCD has a chipset with a pre-built library capable of handling the image reading and displaying. (Or code your own.) But, if you decide that using a touchscreen might work with your project, then you're all set.
I thought the same thing with the touchscreen....I saw that adafruit offers a little bit smaller lcd (non-touch) for half the price...I was considering that option. This screen looks like its built ready to plug straight into the arduino....and looks like its super easy to set up and is very compatiable with arduino....It's great guidance and Ill for sure use this on my feasibility prototype.
Adafruit looks like a great resource. Thanks!
I relies that these lcd displays have there own microcontroller, and like you said I could make my own by piecing it together and code the whole thing. I would imagine if I get to the production stage of this project I will probably take that route to be cost efficient. Would you agree? how difficult is this to do? Im just trying to educated myself on a field I don't have alot of experience in.
I have been in the same boat for some time. My enclosure has a very limited amount of space and I am limited on the enclosure size so I can't just get a bigger enclosure. So I have done a ton of research to try to find a 128 x 128 that uses a controller that someone has already created a library for. Interestingly enough, the Adafruit 128 x 160 uses an ST7735 controller. Their library is also very inclusive. They sell both the display on a breakout with SD ($25) and the bare display ($10. It's $8 on Digikey). So I have been searching for a 128x128 that uses the same controller. I have found a few but they are all China direct. The upside being cost (~$2 each for qty 100), the downside being China direct.
So the challenges associated with buying the bare display are two-fold. First, finding one with a controller that has some existing support since creating your own library for a display from scratch would be TOUGH!. There are a lot out there, you just have to find them. The second being that you are going to have to connect the Flat Flexible Cable (FFC) to you board. Not an easy thing to do. Direct bar soldering is the best option but you can get FFC connectors that are SMD if it will work in your system. Usually the cable is wrapped underneath the display which precludes the use of a connector but if your layout allows for a connector, I would go that route.
Newhaven sells a collection of boards that will help you prototype if you find a bare display that works.
To try to answer the other part, most display's have controllers on board that drive them. However, there still needs to be some sort of coding to make them work. The controller is in it's rawest form basically setting the condition of the all of the pixels. It takes someone smarter than me to translate that into commands that can be sent from the arduino to get results. That's where libraries come in. There are a couple of generic libraries available that can interface with different controllers but you will need to do some research before you go this route. Look through the display section of these forums. Display controllers are most often broken down by the size of the display so keep that in mind when you are looking. This is critical, just because it looks like it would fit, it may have some really obscure controller that you will not be able to talk to.
Display libraries aren't technically difficult.. just very, very tedious. In most cases, once you have the low-level stuff done, you can re-use the primitives. (I.e., work out how to draw a pixel, and you can copy the line and shape drawing parts from an existing library.)
The hard part is deciphering the datasheets, since they often seem to be written with the single purpose of making it as challenging to understand as it was to design.
Anyone read the SD specifications doc? Nothing is spelled out in one place. You can't implement anything from it without flipping between three or four sections to compare notes. And there's a lot of guesswork required where details have been glossed over, or redacted (for licensees only).