phi_interfaces library beta release

As a friend online asked for it, I am not going to procrastinate on the release and instead provide a beta release. I uploaded the beta version of the library with sample code on every class, buttons, keypads, rotary encoder, analog button arrays (yes! you can use more than one analog pins and each pin hooks up to several buttons but all pins have to have identical resistor networks).

Here it is, with library, example code and an auto-doc. I’m writing an overview for beginners at the moment. Someone is already testing the code smiley

With this library, you can arbitrarily change your interface without changing code. Say you start with matrix keypads and then decide go with 6 single buttons and two rotary encoders for the look. You don’t have to change you code. Say you start with no buttons (too scared to hook up buttons and then decide to go with keypads?!), and you can use serial port to type in characters. The library has an object to streamline serial inputs into button outputs for your code so your code thinks it has a keypad. Then later you find out you only need like 4 buttons for everything you programmed and actually hooked up 4 buttons and change one line in the code (instantiate a phi_button_arrays object instead of phi_serials object), you’re done!:)


8 Responses to phi_interfaces library beta release

  1. sandy Mathieu says:

    I am considering using your UI libraries for a controller I plan on selling. So what is the license fee. 2nd I am having a hard time evaluating since the source code (prompt) is not compatible with 1.0. Do you have plans to release the libraries compatible with the current IDE?

    • liudr says:


      Thanks for your interest. I am working on library updates lately. My focus is to upgrade the lowest level (physical layer) first with a new library called phi_interfaces, to unite all button inputs in one framework, including single buttons, keypads, analog buttons, rotary encoders, and virtual keypads you can use to simulate key presses for debugging or just you can’t decide on what button layout you want for your final project. This library is coming along very nicely and it is in the final stage of documentation, with a beta release (see my blog post). After this, I’ll be upgrading phi_prompt library to take advantage of the expanded capabilities and make it arduino 1.0 compatible. The phi_interfaces library is compatible with 1.0 and 0022.

      At the moment the licensing fee for commercial product with phi_prompt and all its supporting libraries for smaller companies (just don’t tell me your company makes a quarter billion $ a year;)), is just $30. And it includes future updates as well. We can pursue this once I make the update.

  2. sandy Mathieu says:

    So I gather the beta phi_interfaces is 1.0 ready? We are a very small company, 3 people. Do you have an idea when I might be able to work with a 1.0 version of the prompt?

    We actually will be using a pushbutton joystick, wired with 5 digital inputs, using a menu option to exit(escape) and a 16×2 parralle display. I would like to display 2 lines of menu options with the v scroll bar indicating that more options exist, letting the user up and down thru the options. I did not see this in the demo, but perhaps i missed it. The previous top or bottom line would be eliminated and a new added as the user up or down arrowed thru the menu.


    • liudr says:


      Yes, phi_interfaces is 1.0 ready. The current version of phi_prompt will already work for your purpose. Check out this video at 18 seconds into the video:

      The menu is rendered on a 20*4 display with a fixed top line, 3 lines for scrolling menu and a scroll bar on the right. You can do this too on a 16*2 display without the fixed top line and 2 lines for scrolling menu and the scroll bar. The phi_prompt that I am updating will mostly not be visible to developers using the library, which is my intent so those that are already using the library can transition into the new version with minimal effort. I suggest you try the library with arduino 0022 first, with example codes included.

      There is another way to do interface, hand everything over to a serial LCD keypad. Take a look at this see if you like this or not:

  3. sandy Mathieu says:

    okay, I didn’t know you did not have have the fixed one at the top, great. I will download 0022 and try it out there. Thanks

  4. sandy Mathieu says:

    I was able to get the phi_analog_keypads_example to work on a DFrobot shield, by changing the line const int values[]={0, 146, 342, 513, 744}; But that appears to be the only coding examples that support that facility. Can not see a way to run any other sample menus without this style of button control. Do I need to wait for the later release?

    • liudr says:

      Thanks for trying it on DFrobot shield. I thought about that shield but I am selling my phi-2 shield, a competitor to the DFrobot shield so I never bought one for testing. I guess this time they are getting a free pass to my phi_interfaces library.

      The phi_interfaces library is just the physical layer that the new phi_prompt library sits on so phi_interfaces only handles key presses from all sorts of buttons or keypads. The menus are done in phi_prompt, which is supposed to be independent from what hardware generates the key press or what hardware is displaying things.

Leave a Reply