I want to create a compact synthesizer with a touchscreen interface. I have a general idea of what I want to do and how I want to do it, but this is my first real microcontroller project. I know that I want to use an Arduino, and I have some experience with microcontrollers. I need to use the microcontroller to read from a resistive touchpad and output to an LCD. I want to combine the touchpad and the display so one is on top of the other. I have a limited budget and am open to suggestions as to what parts I should use (for the Arduino model, resistive touchpad, and the screen). Aesthetics are really important as well. I was looking at the following models for the display/interface:
TouchScreen for 4.3" PSP LCD
Color 24-Bit LCD 4.3" PSP 480x272
I was thinking of getting the Arduino Mega, though it's kind of pricey, because I need enough pins for the following:
24 bit output (if I end up using that color display)
At least 1 analog output for the audio
A USB interface
4 analog inputs for the touchscreen
Possibly up to 10 buttons
Would it be plausible to multiplex both the display outputs and the button inputs without losing too much speed/usability? If so, maybe I could switch to a cheaper microcontroller and still accomplish the same.
If you need additional clarification, just ask.
Thanks.
Hello, thanks for the reply. These are the parts I was talking about:
The display says that it has a 24 bit interface.
I realize that it is an ambitious project, but I will be dedicated to working on this for at least an hour or two every day for a year. Sorry if I came off as a beginner, but I have three years of schooling in regards to electrical engineering, an extensive background in computer science, and have used microcontrollers before, albeit much simpler ones.
As for the multiplexing, I meant multiplexing the video interface, as well as separately multiplexing the buttons. Not multiplexing them together.
Hmm. Such a high resolution isn't really necessary for this project, nor is such a large color variety. A 16-bit lower resolution display would be perfect, and undoubtedly cheaper. The issue is that I need it to work in combination with a resistive touchscreen of the same size.
I was hoping for a system where the display would be touch sensitive, by putting the touchscreen under the display (?). That way, it would display an interface, and you use a stylus for navigation and control.
Wouldn't the display have to be the same size and aspect ratio as the touchscreen in order to overlay them neatly?
Regardless, I am having problems finding an appropriate display that has self refresh. I've found a few promising ones but after further research none of them will work on an arduino.
I've given this a lot of thought... Perhaps I should use a 8x8 dot matrix as the display (that's enough to interface with for the synth part, I've tried it successfully in software), and a square or trimmed touchscreen to control that? To display text, I could use the LiquidCrystal library and a 16bit Parallel LCD, and then of course the buttons to control the navigation.
A 16x16 dot matrix would be better but it seems that it would be rather hard to do, and the touchscreen would need enough sensitivity for that (probably not an issue?).
The way I've got the packaging envisioned in my mind, with just an on/off dot matrix and an individual text display and buttons on the side, it can still look rather appealing.
Good idea, but that's not really what I'm looking for. I've found suitable 8x8 LED matrices, but I can't find a touchscreen that'll fit with them. All of the touchscreens are bigger than the dot matrix, and I can't find any that are able to be trimmed.
On another note, in order to have the Arduino output the sound at a decent quality, it will need to send out a new bit every 1.4 microseconds, or at ~706kHz. Will that be possible? If so, will it be possible to do that while retaining most of the microcontroller's functionality? If necessary I could pause all other subroutines while playing, and wait for an signal on the play/pause button to stop.
I still haven't been able to find a suitable touchscreen, however I did quite a bit more research and am pretty comfortable that the Arduino has more than enough features to run my program. By using direct pin manipulation, it can achieve speeds of up to 2.666mhz. This will be a little slower because I will be reading the data from RAM. The speed doesn't have to be perfect, so if I make each write operation take exactly 23 cycles using nops (including the loop), then that will be 695khz which is almost exactly what I need. Additionally, I was doing calculations based on how much memory I would need, both RAM and Flash, and I am becoming more and more certain that the Arduino has what it takes for this fairly ambitious project. ;D
Absolutely going to need the Mega though, for both the memory and the sheer amount of pins.