I'm planning on using them to attach to a front panel. Need to figure out a bezel though...
BTW: I just figured out how to "tag" objects for simple touchscreen processing...
This is really great. You can just poll 1 register to find out if an object was pressed.
Not only that, but it can do things like calculate the angle you pressed on a circle.
Makes virtual rotary dials easy...
Had to go to some example source code to figure it out though. The programmer's guide isn't always perfectly clear...
Now working with 4.3" Newhaven LCD with EVE2, resistive screen.
There resistive screen is a bit of a pain as you need to calibrate it...
However, it appears that EVE2 has some EEPROM that you can program the calibration factors into. Need to figure out how to do that...
Also, looking at the migration guide I noticed a much easier way to send commands... With EVE2, they've made that easier, so I don't have to track a pointer in fifo…
I've also moved the LCD settings out of the driver so that you don't have to edit the driver (hopefully) to set your LCD type...
I don't think there actually is a user EEPROM on Eve or EVE2...
I think that FAQ must be referring to some external EEPROM. Anyway, my Prop board (and most others I think) has 64kB of EEPROM and the upper 32 kB is free. I'll default to storing touchscreen calibrations there....
Just a note: EVE2 is great, but not very forgiving... If you make a mistake the screen goes bananas... Hopefully that will be harder to do as the driver is developed...
Ok, I think I have a handle now on the resistive touchscreen calibration.
This version lets you specify resistive or capacitive screen.
There are new options to save resistive touch calibrations to upper EEPROM.
You can also make it do calibration every time, if you want.
This was a bit of work, but sometimes you really want a resistive screen (for example, if you want to make sure it works even if user is wearing gloves...).
BTW: I might get some of these Matrix Orbital screens to make sure this code works for them too.
Ok, this is really cool! You can draw and get updated position from dial and slider controls using just a few commands. The "tracker" gives you a 16-bit value of control position when touched.
I've been waiting to figure this out and try it... So easy now...
More fun! EVE2 can decompress png files. This is great because a simple 800x480 image gets squished down to 5 kB in png format. This is small enough for me to embed in a demo program...
In this test, I'm sending this embedded png file to EVE to decompress to GRAM and then showing it as fullscreen image on 7" LCD. It took a bit of time for me to figure out that images larger that 511x511 need extra work...
Super fast. It's capable of MPEG video playback...
The way this works is kind of like creating a program. They call the program a display list.
You create the program by sending the instructions over SPI and then run it (they call it display list swap). Once you tell it to run, it updates the screen. To change what is on the screen, you need to send a new program (display list).
Only tricky thing is that, just like a real program, if you make a mistake, you get garbage on the screen.
There is one difference between showing images like this and the other display list items.
Here, the image is actually stored in graphics ram (1 MB) and not the display list buffer. The display list commands in this case just tell it how to take the graphics ram data and show it on the screen.
Text works the same way, but using a ~1 MB ROM to hold the font bitmaps....
Good to see how much you can do. Let’s say you have a small tile 16x16 as in the old vga method of creating tiles in your prop1bit for DAT storage, I can swap out a tile instantly... for example swap a tiny red circle in a 16x16 tile for a green circle representing an LED and it’s color state. Just run a method that places the same circle data in DAT but update the color. This is very fast, pressing a button on the LCD affects the graphic with no latency from the touch. Is swapping out the same graphic idea just as fast with a command over SPI meaning the graphic is already resident in the EVE ram or would you have to send the data each time for each tile change? I think you said 1M local ram so can you load up your graphics into EVE ram and just call it up fast as needed? I am. Curious about the latency from touch to graphic change.
I was thinking it would make a good project to use a raspberry pi and second hand vga display to do something like this. The Pi could accept commands over serial I/face and interpret via Python or Basic or favorite language. It has large storage for multiple images which having loaded up slowly (or saved on the sd), could be switched between instantly at will. Functions like pixel, line, block, circle and text in preloaded fonts, in very high resolution could only be an instruction away. And the Pi zero can be had for 10 uk pounds.
Really nice job Rayman; always impressed by your work. You know you are doing good when your work makes people want to buy the products you are using because you are developing a solid driver to go with it. An easy to use touchscreen with these types of capabilities is a perfect match to the propeller.
I was thinking it would make a good project to use a raspberry pi and second hand vga display to do something like this. The Pi could accept commands over serial I/face and interpret via Python or Basic or favorite language. It has large storage for multiple images which having loaded up slowly (or saved on the sd), could be switched between instantly at will. Functions like pixel, line, block, circle and text in preloaded fonts, in very high resolution could only be an instruction away. And the Pi zero can be had for 10 uk pounds.
Yes, that's an alternative pathway, but quite interesting to see what EVE2 can do.
I'm curious if the EVE2 has some Display List ceiling - ie as you load more and more into the 'to do' list, does it slow down, and is that noticeable or a practical problem to watch out for ?
On the Pi-For-HDMI, there are more and more LCD modules offering HDMI in, and Pi-Zero is certainly low cost.
Reading the forums suggest Touch handling is a little less elegant, there it looks like a separate USB link is required ? Not sure if anyone has Touch over HDMI working ?
T Chap: Yes, you can load all kinds of small images in the 1MB of graphics RAM. You can make them different bit depths if you want to save memory. 1 MB is basically enough for one full screen of 16-bit graphics at 800x480. But, images can be 1-bit for example...
If you can get everything you need in GRAM, you're in pretty good shape.
BTW: It might be possible to overflow display list memory, but I think it'd take a lot of work...
Also, I just noticed a new version of EVE (?) on their website:
Says: "The BT815 and BT816 continuities to build on the success of the EVE2 FT8xx IC"
Link doesn't work though... So, I think Bridgetek may own the EVE IP and licensed it to FTDI. But what happened? Looks like they are trying to sell themselves now?
Seems they've added direct external memory support (very nice) and ATSC.
Not exactly sure what to do with ATSC. I guess you can make your own TV?
Might be nice to take to football game actually...
Actually, I guess we'll have to see how useful the external memory support is.
Seems one could already just put flash on the same SPI bus and have prop use clock to control a direct transfer between flash and EVE2...
Thanks for the updates! As for Bridgetek, for a second, I mistakenly figured that they had bought the EVE line from FTDI and renamed the series to BT. But then I saw that BT calls FTDI a "sister" company, and a little more digging revealed that FTDI spun off BT a while back. In disclosing the Bridgetek spinoff, this link says "FTDI Announces Formation of Separate Company Focussed Specifically on MCU & Display-Related Products." Interesting.
this test copies a full screen png image from SD card to EVE2 WVGA screen and shows it.
Unfortunately, I takes a full minute to transfer the 643 kB image.
The command interface register is easy, but slow... Need to figure out how to do bulk transfers faster...
I guess I see now why the next version will have direct access to flash...
Comments
BTW: I just figured out how to "tag" objects for simple touchscreen processing...
This is really great. You can just poll 1 register to find out if an object was pressed.
Not only that, but it can do things like calculate the angle you pressed on a circle.
Makes virtual rotary dials easy...
Had to go to some example source code to figure it out though. The programmer's guide isn't always perfectly clear...
This makes a virtual keyboard almost trivial... You just tag each key with it's ascii code...
FT81x vs FT80x - Features Comparison
Orientation switching support added with REG ROTATE and CMD SETROTATE (allows Portrait operation)
Sounds like they just added portrait to EVE2. I think I'm glad I waited for EVE2 to start using this stuff...
There resistive screen is a bit of a pain as you need to calibrate it...
However, it appears that EVE2 has some EEPROM that you can program the calibration factors into. Need to figure out how to do that...
Also, looking at the migration guide I noticed a much easier way to send commands... With EVE2, they've made that easier, so I don't have to track a pointer in fifo…
I've also moved the LCD settings out of the driver so that you don't have to edit the driver (hopefully) to set your LCD type...
I think that FAQ must be referring to some external EEPROM. Anyway, my Prop board (and most others I think) has 64kB of EEPROM and the upper 32 kB is free. I'll default to storing touchscreen calibrations there....
Just a note: EVE2 is great, but not very forgiving... If you make a mistake the screen goes bananas... Hopefully that will be harder to do as the driver is developed...
Hi T Chap,
We offer the EVE2 without screw mounts
https://www.digikey.ca/product-detail/en/matrix-orbital/EVE2-70A-BLM-TPN/635-1149-ND/7650300
and an oversized bezel for easy mounting
https://www.digikey.ca/product-detail/en/matrix-orbital/EVE2-70G-BLM-TPC/635-1195-ND/8620154
This version lets you specify resistive or capacitive screen.
There are new options to save resistive touch calibrations to upper EEPROM.
You can also make it do calibration every time, if you want.
This was a bit of work, but sometimes you really want a resistive screen (for example, if you want to make sure it works even if user is wearing gloves...).
BTW: I might get some of these Matrix Orbital screens to make sure this code works for them too.
I've been waiting to figure this out and try it... So easy now...
I made little video here:
In this test, I'm sending this embedded png file to EVE to decompress to GRAM and then showing it as fullscreen image on 7" LCD. It took a bit of time for me to figure out that images larger that 511x511 need extra work...
The way this works is kind of like creating a program. They call the program a display list.
You create the program by sending the instructions over SPI and then run it (they call it display list swap). Once you tell it to run, it updates the screen. To change what is on the screen, you need to send a new program (display list).
Only tricky thing is that, just like a real program, if you make a mistake, you get garbage on the screen.
Here, the image is actually stored in graphics ram (1 MB) and not the display list buffer. The display list commands in this case just tell it how to take the graphics ram data and show it on the screen.
Text works the same way, but using a ~1 MB ROM to hold the font bitmaps....
Here's a new test where I'm loading up a png file with a familiar image and then moving it to wherever the screen is touched.
Mike R...
I was thinking it would make a good project to use a raspberry pi and second hand vga display to do something like this. The Pi could accept commands over serial I/face and interpret via Python or Basic or favorite language. It has large storage for multiple images which having loaded up slowly (or saved on the sd), could be switched between instantly at will. Functions like pixel, line, block, circle and text in preloaded fonts, in very high resolution could only be an instruction away. And the Pi zero can be had for 10 uk pounds.
Dave
I'm curious if the EVE2 has some Display List ceiling - ie as you load more and more into the 'to do' list, does it slow down, and is that noticeable or a practical problem to watch out for ?
On the Pi-For-HDMI, there are more and more LCD modules offering HDMI in, and Pi-Zero is certainly low cost.
Reading the forums suggest Touch handling is a little less elegant, there it looks like a separate USB link is required ? Not sure if anyone has Touch over HDMI working ?
If you can get everything you need in GRAM, you're in pretty good shape.
BTW: It might be possible to overflow display list memory, but I think it'd take a lot of work...
These, like this 3.8" one are interesting...
https://www.matrixorbital.com/ftdi-eve/EVE FT812/eve2-38g
Also, I just noticed a new version of EVE (?) on their website:
Says: "The BT815 and BT816 continuities to build on the success of the EVE2 FT8xx IC"
Link doesn't work though... So, I think Bridgetek may own the EVE IP and licensed it to FTDI. But what happened? Looks like they are trying to sell themselves now?
http://brtchip.com/bt81x/
Seems they've added direct external memory support (very nice) and ATSC.
Not exactly sure what to do with ATSC. I guess you can make your own TV?
Might be nice to take to football game actually...
Seems one could already just put flash on the same SPI bus and have prop use clock to control a direct transfer between flash and EVE2...
Unfortunately, I takes a full minute to transfer the 643 kB image.
The command interface register is easy, but slow... Need to figure out how to do bulk transfers faster...
I guess I see now why the next version will have direct access to flash...