AVR + Bluetooth + Android/iOS App

Go To Last Post
31 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Is anyone aware of an AVR based solution which uses an off-the shelf BT module to link to a smartphone which runs a 'universal' GUI app?

 

By 'universal' GUI app I mean one where the GUI contents are 'pushed' from the micro to the app, rather than the app being customised for each application.

 

There is was SmartIO from Imagecraft. A few lines of code on the micro defined what widgets appeared in the app and the actions taken, and a bit of code to talk to a dedicated module. (annoyingly I bought a small qty of the SmartIO modules but not enough for any sort of production).

 

I am aware of solution, which is supplied as a library, which runs on a different uC range and uses a standard BT module. The developer has then published a cross-platform app which is one the various app stores. But it's not AVR.

 

Basically, I want to avoid having to deal with app development for low volume products and am happy to leave that to someone else.

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

Last Edited: Wed. Nov 11, 2020 - 10:21 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brian Fairchild wrote:
I am aware of solution, which is supplied as a library, which runs on a different uC range and uses a standard BT module

Are you thinking of this: https://www.silabs.com/support/training/transforming-hmi-in-industrial-devices-using-bluetooth-wireless ?

 

AIUI, you can include you own code on the module - so the AVR may be redundant? Or you could write your own comms with your AVR ...

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brian Fairchild wrote:
There is was SmartIO from Imagecraft

Are they not still doing it? I thought it was just the compilers they were stopping?

 

https://www.imagecraft.com/company/a-note-to-our-customers

 

https://www.avrfreaks.net/forum/imagecraft-compilers

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

awneil wrote:

Brian Fairchild wrote:
I am aware of solution, which is supplied as a library, which runs on a different uC range and uses a standard BT module

Are you thinking of this: https://www.silabs.com/support/training/transforming-hmi-in-industrial-devices-using-bluetooth-wireless ?

 

I wasn't but I'll take a look now. I was looking at this...

 

http://www.ccsinfo.com/content.p...

 

..runs on PIC devices.

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

We rolled our own as an experiment back in the VB days (so the micro could set up a touch screen on the PC)..you could spec sliders, colors, text boxes, etc....it really was rather poor &  didn't go too far.   Seems like I also  bought something like this for the PIC, but never made use of it (from Doc someone) & it certainly wasn't for cell phones.  My memory may be foggy, it could have been just for driving LCDs.  How about a simplistic webserver?

When in the dark remember-the future looks brighter than ever.   I look forward to being able to predict the future!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0


awneil wrote:

Are they not still doing it? I thought it was just the compilers they were stopping?

 

The front of their website says this...

 

 

I guess an email will clear things up, however, it's still a closed platform and I'm not sure I'd now want to use it in a commercial product. Even in the low-volume area I tend to work in, the per-unit cost is too high to put modules on the shelf to guarantee supplies.

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

avrcandies wrote:

How about a simplistic webserver?

 

That's a possibility.

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Why my memory is only half foggy...back in 2014 Dr BOB sold me his product (I haven't looked at it since...now where are those floppies???) ..I paid about $400 bucks for a full license, just to  support some dust.

 

https://www.tracesystemsinc.com/

 

 

 

 

 

When in the dark remember-the future looks brighter than ever.   I look forward to being able to predict the future!

Last Edited: Wed. Nov 11, 2020 - 11:59 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brian Fairchild wrote:
There is was SmartIO from Imagecraft ... I bought a small qty of the SmartIO modules

Did you actually get around to using it?

 

Would be interested to know how you found it ...

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brian Fairchild wrote:
There is was SmartIO from Imagecraft

I just looked at https://www.imagecraft.com/documentation/smart-io-documentation, and it seems that the source code & schematics are all available on Github - so you could make your own ... ?

 

I think I've got some BlueNRG somewhere - perhaps I'll have a go ...

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

awneil wrote:

Would be interested to know how you found it ...

 

I ported the example code over to an AVR and played with some simple samples. The concept is brilliant. Need to change the UI? No need to update the app, just include the changes in the AVR's code.

 

The project I was going to use it on got cancelled so I didn't do much more with them. And then Imagecraft made their announcement which dampened my enthusiasm for it. But just this morning, in a planning meeting (zoom-style of course), it struck me that this kind of thing would be ideal for a new project we were discussing.

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

awneil wrote:

Brian Fairchild wrote:
There is was SmartIO from Imagecraft

I just looked at https://www.imagecraft.com/documentation/smart-io-documentation, and it seems that the source code & schematics are all available on Github - so you could make your own ... ?

 

I think I've got some BlueNRG somewhere - perhaps I'll have a go ...

 

Interesting, thanks.

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

WebSocket server on a MCU, WebSocket client is the web browser on the operator's phone, Wi-Fi, web app for the operator's interface.

A WINC for the Wi-Fi module (TCP server) though the price is about three times that of an ESP32 module.

PIC32MZ-W1 module is more expensive (+2USD) than WINC though can add application-specific code to it.

Advantage to Bluetooth Low Energy (an order of magnitude less current)

 

Efficient web server technology for resource-constrained microcontrollers - Embedded.com

AVR-IoT WA Development Board

AVR-IoT WG Development Board

GitHub - MicrochipTech/WINC-Baremetal-Third-Party-MCU: “Wireless Made Easy!" - Repository contains WINC Bare metal sample applications to add embedded Wi-Fi connectivity to Third-party Microcontrollers

PIC32MZ-W1 Wi-Fi SoC and Module Family | Microchip Technology

PIC32 Wi-Fi module | AVR Freaks

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brian Fairchild wrote:
By 'universal' GUI app I mean one where the GUI contents are 'pushed' from the micro to the app, rather than the app being customised for each application.
The Microchip smart phone app isn't universal; an operator can put data to and get data from a MCU.

Microchip Bluetooth Low Energy (BLE) modules have transparent UART.

WINC3400 has a transparent service (BLE); the MCU app is for SAM though should be doable to port it to AVR.

<ASF3>/common/components/wifi/winc3400/transparent_service_example

via Advanced Software Framework (ASF) | Microchip Technology

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Check out AdaFruit. They have some sort of configurable app that works over Bluetooth to (I think) either display data or control the MCU.mmm

 

This is for an Arduino shield but I suspect that the modules, themselves, are available somewhere on the site. Just have not found it yet.

 

https://www.adafruit.com/product...

 

Check for the video about half way down the page.

 

Jim

 

 

 

Until Black Lives Matter, we do not have "All Lives Matter"!

 

 

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks all.

 

I've got an eval PCB on the way from Mouser which should be here early next week. It contains an 8-bit micro and cheap bluetooth module. The compiler/library which does all the smarts has a 45-day fully functional evaluation which should be enough to see what's possible.

 

I like that the hardware side is simple and cheap.

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brian Fairchild wrote:
Basically, I want to avoid having to deal with app development for low volume products and am happy to leave that to someone else.
That's what the ones at Microchip did via the LightBlue® protocol.

Expected Out of Box Behavior | GitHub - microchip-pic-avr-solutions/avr-lightblue-explorer-demo: This solution showcases BLE IoT board with RN4870 module and ATMEGA3208 conecting with lightblue punchthrough app sending and receiving data

via AVR-BLE Development Board

 


LightBlue | Punch Through

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1


Brian Fairchild wrote:

I've got an eval PCB on the way from Mouser which should be here early next week. It contains an 8-bit micro and cheap bluetooth module. The compiler/library which does all the smarts has a 45-day fully functional evaluation which should be enough to see what's possible.

 

Ordered Friday morning, with me mid-morning today...

 

 

 

There's an associated library, and in your source code you define what widgets get placed on the phone's screen. The app is universal, it knows nothing about your code. All widgets get uploaded to the app when you connect to it.

 

I'm running code which exercises every feature of the board and it's using 39% of 32k of ROM and 24% of 1k5 of RAM

 

 

 

I know a few people might be interested in this. As it's not AVR related I'm happy to talk via PMs.

 

 

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I used the RN4020 quite a bit (and it's sad data sheet, many issues).  The MDLP is the 
Microchip (Roving Networks) serial protocol. This product sounds like what we were discussing before...it is not a webserver but a custom app that uses MDLP serial protocol to  "set up" the screen using their app on the phone. 

I wonder what they used to created the phone side app?

 

 

When in the dark remember-the future looks brighter than ever.   I look forward to being able to predict the future!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Brian Fairchild wrote:
There's an associated library, and in your source code you define what widgets get placed on the phone's screen

We're talking this one: http://www.ccsinfo.com/content.p... ?
 

All widgets get uploaded to the app when you connect to it.

Presumably, the widgets are actually in the app, and just get "configured" by the code in the chip ?

 

AIUI, that's the same principle as the Imagecraft SmartIO thing did ?

 

I'm running code which exercises every feature of the board and it's using 39% of 32k of ROM and 24% of 1k5 of RAM

can you tell how much of that is GUI stuff, and how much is the actual exercising?

 

As it's not AVR related I'm happy to talk via PMs.

Presumably, it could talk to an AVR ... ?

 

And it is Microchip-related - so not too far off-topic ...

 

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

avrcandies wrote:
The MDLP (sic) is the Microchip (Roving Networks) serial protocol.

It's MLDP =  Microchip Low-energy Data Profile - so, presumably, post the RN acquisition ?

 

Microchip wrote:

MLDP/Data Microchip Low-Energy Data Profile (MLDP) enables asynchronous Serial Data (SDA) transport over Bluetooth® Low Energy (BLE).

 

https://microchipdeveloper.com/b...

 

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

It's MLDP =  Microchip Low-energy Data Profile - so, presumably, post the RN acquisition  

That's a good question ...maybe RN made the 4020 for Microchip, then got gobbled up?   Early on it seemed like it was hard to get sensible (correct) info/errata from Microchip about the RN4020.  Some ambiguous pin mode control documentation made life fun.

 

Microchip defined a way to stream data over BlueTooth low energy (BLE) and called it MLDP (Microchip Low-energy Data Profile). They built it into their RN4020 chip, and there is even an sample Android app.

However, I can't find any specification of how the protocol works or source for the app. I'd like to be able to use it to debug an embedded device from Android and/or iOS.

Does anyone know the specification for this protocol or software that implements it?

When in the dark remember-the future looks brighter than ever.   I look forward to being able to predict the future!

Last Edited: Mon. Nov 16, 2020 - 11:18 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Many years ago I used phonegap to create an app for android and ios. The gui is a webpage using html/javascript.

Nowadays there’s web bluetooth. So your webpage can talk bluetooth.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0


awneil wrote:

We're talking this one: http://www.ccsinfo.com/content.p... ?

 

Yes.

 

awneil wrote:

All widgets get uploaded to the app when you connect to it.

Presumably, the widgets are actually in the app, and just get "configured" by the code in the chip ?

 

AIUI, that's the same principle as the Imagecraft SmartIO thing did ?

 

 

It certainly appears to be similar to SmartIO. On connection there's a 'loading please wait' progress bar appear so there's some data being transferred. Probably just the custom test.

 

awneil wrote:

can you tell how much of that is GUI stuff, and how much is the actual exercising?

 

The toolchain has some rather nice stats built in...

 

awneil wrote:

Presumably, it could talk to an AVR ... ?

 

And it is Microchip-related - so not too far off-topic ...

 

It would certainly be fairly easy to drop the BT module alongside a PIC 8-bit and use them to deal with the GUI and then swap data between the PIC and an AVR.

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 1

It would certainly be fairly easy to drop the BT module alongside a PIC 8-bit and use them to deal with the GUI and then swap data between the PIC and an AVR.

It (the PIC) could just be sending using an ASCII command set to the phone to define/setup the gui, as understood by the phone app.   So, if you know what the command set syntax is, you could use an AVR, PIC, or even a PC to do so. 

I'm saying this, since that is exactly what we did with an AVR maybe 12 years ago (but for a PC, not a phone).

 

Example command: SLIDER(billy, 33, 400, -200, 500, 75, green)   ....set up a green slider at position 33,400 with a range of -200 to 500 & current value of 75...if you slide the slider on the phone it will send out billy=237, or whatever number is set.   

The key is finding out the command set, so you can use it on the AVR.

 

...would be interesting to intercept the serial data stream to see what is actually being sent for the setup.

When in the dark remember-the future looks brighter than ever.   I look forward to being able to predict the future!

Last Edited: Tue. Nov 17, 2020 - 10:58 AM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

avrcandies wrote:

So, if you know what the command set syntax is, you could use an AVR, PIC, or even a PC to do so. 

 

Might be of interest for a hobbyist with time on their hands, but a big NO NO for any commercial applications as it breaks the terms of the licence on the app.

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There are smart phone frameworks for Bluetooth Low Energy attributes.

Bluetooth Low Energy - Internet of Things - MIT App Inventor

due to app inventor | Martyn Currey

 


Web Bluetooth API - Web APIs | MDN

 

"Dare to be naïve." - Buckminster Fuller

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

gchapman wrote:
There are smart phone frameworks for Bluetooth Low Energy

But that still requires you to create the app - using the Framework.

 

And, having created it, you need to publish it.

 

etc, etc, ...

Top Tips:

  1. How to properly post source code - see: https://www.avrfreaks.net/comment... - also how to properly include images/pictures
  2. "Garbage" characters on a serial terminal are (almost?) invariably due to wrong baud rate - see: https://learn.sparkfun.com/tutorials/serial-communication
  3. Wrong baud rate is usually due to not running at the speed you thought; check by blinking a LED to see if you get the speed you expected
  4. Difference between a crystal, and a crystal oscillatorhttps://www.avrfreaks.net/comment...
  5. When your question is resolved, mark the solution: https://www.avrfreaks.net/comment...
  6. Beginner's "Getting Started" tips: https://www.avrfreaks.net/comment...
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Might be of interest for a hobbyist with time on their hands, but a big NO NO for any commercial applications as it breaks the terms of the licence on the app.

How so?  You install the app on your phone & you are free to send whatever you want to it (garbage or otherwise).  What would be the prohibition? Unless they can somehow say app A can ONLY be used with data streams provided by app B, I don't see it.

Perhaps, if there were some encryption between the two & you cracked it to make use of A, maybe that would be some "reverse engineering" legal violation?

Well, perhaps it is indeed wise to skirt the entire scenario---who knows how it would go down in a lawsuit.

When in the dark remember-the future looks brighter than ever.   I look forward to being able to predict the future!

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

avrcandies wrote:

Might be of interest for a hobbyist with time on their hands, but a big NO NO for any commercial applications as it breaks the terms of the licence on the app.

How so?  You install the app on your phone & you are free to send whatever you want to it (garbage or otherwise).

 

Quote:

...This app requires a PIC micro with Bluetooth running the EZ App Lynx library for the CCS C Compiler...

#1 Hardware Problem? https://www.avrfreaks.net/forum/...

#2 Hardware Problem? Read AVR042.

#3 All grounds are not created equal

#4 Have you proved your chip is running at xxMHz?

#5 "If you think you need floating point to solve the problem then you don't understand the problem. If you really do need floating point then you have a problem you do not understand."

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

...This app requires a PIC micro with Bluetooth running the EZ App Lynx library for the CCS C Compiler...

Well, of course, they must (or should) tell you that, so you know how it works or what hardware is needed....so I'm not sure its any sort of prohibition, that you are only allowed to use a PIC or the library.

 

maybe:

Using this app without using a PIC processor or the  EZ APP library is expressly prohibited by the boss.  If found doing so, violators will be subject to  having their sandwiches confiscated.

 

When in the dark remember-the future looks brighter than ever.   I look forward to being able to predict the future!