In my Smart Home user interface, I want to provide rotary dial controls for lighting and temperature control. How can I detect the user input from an on-screen rotary dial and use it in my application?

EVE has an innovative tagging and tracking feature which makes implementing touch controls easy, including rotary controls. Touch tagging allows you to assign a tag to an object on the screen. You can easily determine which item is being touched by reading the REG_TOUCH_TAG register, either by polling or in response to an interrupt (EVE can generate an interrupt on a change of touch condition)

Tracking extends this feature further via CMD_TRACK. You can set an area on the screen and then determine the relative position of the users touch within that area by simply reading REG_TRACKER. Tracking can support linear and radial modes.

  • The linear mode is ideal for sliders and scroll bars, and reports the distance along your defined tracked area from 0 to 65536
  • The radial mode is ideal for rotary dials. The tracking value represents the angle of the touch point relative to the object’s centre in units of 1/65536 of a circle. 0 means that the angle is straight down, 0x4000 is left, 0x8000 is up, and 0xc000 is right.

Tagging and Tracking support multi-touch (up to 5 touches) on capacitive touch versions of EVE such as the BT817, with five Tag and 5 Tracker registers (e.g. REG_TRACKER to REG_TRACKER_4) providing the results.