Sharp Memory Display + SparkCore

I have an Adafruit Sharp Memory Display and I’m battling to get it to work on the Sparkcore. I see there are some libraries that have been uploaded onto Build.io but I cannot get the final product active. Wondering whether anyone else has done it and can share some code / steps to reprogram.
Cheers.

@neal_tommy, is that the 96x96 Adafruit unit? I have written and FRAM-based driver as well as ported the Adafruit library for the Spark. Which IDE libraries are you referring to?

1 Like

@peekay123, yip, that’s the one. I saw some Adafruit GFX libraries and thought those might be the ones. If you’ve got the code working then I’d love to see it. Thanks for the help!

@peekay123 I also had trouble getting the libraries to work yesterday. I will try again today but had compile errors trying to tun the example.

@MagicTech, here is the full set of files I ported a while back. The Sharp display driver uses software SPI and the regular Adafruit_GFX library. As soon as I have time, I will add hardware SPI and my Adafruit_mfGFX multi-font library support. As configure, the driver uses D3, D4 and D5 for the SPI lines:

Adafruit_SharpMem display(D3, D4, D5);    //SCK, MOSI, SS

I put everything in one directory and use the Spark CLI to compile the directory but you can copy each file to the web IDE instead. When you create new tabs, the IDE automatically inserts #includes at the top of the .ino file. You will want to remove those since the includes are already in the code.

Ok I used your mfGFX library on the web and found i had to change the #include line inside the .CPP file, and then i got it to compile. However once flashed to the Core, I get red flashing on the LED. Thinking this is due to memory, I started over and manually added the files, and removed all the fonts except GLCD, compiled and flashed but still get the red flashing.
So you suggest I use the original Adafruit GFX?

@MagicTech, the flashing red is most likely RAM issues. Try everything with ONLY the repo code I linked to first, then we will go from there.

@peekay123 if I use all the files in your link above, it will not compile. Get numerous errors.
Sorry if i misunderstand you.

    In file included from Adafruit_GFX.cpp:34:0:
Adafruit_GFX.h:4:35: error: expected class-name before '{' token
class Adafruit_GFX : public Print {
^
Adafruit_GFX.h:8:24: error: expected ')' before 'w'
Adafruit_GFX(int16_t w, int16_t h); // Constructor
^
Adafruit_GFX.h:11:26: error: 'int16_t' has not been declared
virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
^
Adafruit_GFX.h:11:37: error: 'int16_t' has not been declared
virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
^
Adafruit_GFX.h:11:48: error: 'uint16_t' has not been declared
virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
^
Adafruit_GFX.h:16:14: error: 'int16_t' has not been declared
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
^
Adafruit_GFX.h:16:26: error: 'int16_t' has not been declared
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
^
Adafruit_GFX.h:16:38: error: 'int16_t' has not been declared
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
^
Adafruit_GFX.h:16:50: error: 'int16_t' has not been declared
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
^
Adafruit_GFX.h:16:62: error: 'uint16_t' has not been declared
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
^
Adafruit_GFX.h:17:19: error: 'int16_t' has not been declared
drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
^
Adafruit_GFX.h:17:30: error: 'int16_t' has not been declared
drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
^
Adafruit_GFX.h:17:41: error: 'int16_t' has not been declared
drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
^
Adafruit_GFX.h:17:52: error: 'uint16_t' has not been declared
drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
^
Adafruit_GFX.h:18:19: error: 'int16_t' has not been declared
drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
^
Adafruit_GFX.h:18:30: error: 'int16_t' has not been declared
drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
^
Adafruit_GFX.h:18:41: error: 'int16_t' has not been declared
drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
^
Adafruit_GFX.h:18:52: error: 'uint16_t' has not been declared
drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
^
Adafruit_GFX.h:19:14: error: 'int16_t' has not been declared
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:19:25: error: 'int16_t' has not been declared
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:19:36: error: 'int16_t' has not been declared
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:19:47: error: 'int16_t' has not been declared
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:19:58: error: 'uint16_t' has not been declared
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:20:14: error: 'int16_t' has not been declared
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:20:25: error: 'int16_t' has not been declared
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:20:36: error: 'int16_t' has not been declared
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:20:47: error: 'int16_t' has not been declared
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:20:58: error: 'uint16_t' has not been declared
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:21:16: error: 'uint16_t' has not been declared
fillScreen(uint16_t color),
^
Adafruit_GFX.h:22:19: error: 'boolean' has not been declared
invertDisplay(boolean i);
^
Adafruit_GFX.h:26:16: error: 'int16_t' has not been declared
drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
^
Adafruit_GFX.h:26:28: error: 'int16_t' has not been declared
drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
^
Adafruit_GFX.h:26:40: error: 'int16_t' has not been declared
drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
^
Adafruit_GFX.h:26:51: error: 'uint16_t' has not been declared
drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
^
Adafruit_GFX.h:27:22: error: 'int16_t' has not been declared
drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
^
Adafruit_GFX.h:27:34: error: 'int16_t' has not been declared
drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
^
Adafruit_GFX.h:27:46: error: 'int16_t' has not been declared
drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
^
Adafruit_GFX.h:27:57: error: 'uint8_t' has not been declared
drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
^
Adafruit_GFX.h:28:7: error: 'uint16_t' has not been declared
uint16_t color),
^
Adafruit_GFX.h:29:16: error: 'int16_t' has not been declared
fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
^
Adafruit_GFX.h:29:28: error: 'int16_t' has not been declared
fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
^
Adafruit_GFX.h:29:40: error: 'int16_t' has not been declared
fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
^
Adafruit_GFX.h:29:51: error: 'uint16_t' has not been declared
fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
^
Adafruit_GFX.h:30:22: error: 'int16_t' has not been declared
fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
^
Adafruit_GFX.h:30:34: error: 'int16_t' has not been declared
fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
^
Adafruit_GFX.h:30:46: error: 'int16_t' has not been declared
fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
^
Adafruit_GFX.h:30:57: error: 'uint8_t' has not been declared
fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
^
Adafruit_GFX.h:31:7: error: 'int16_t' has not been declared
int16_t delta, uint16_t color),
^
Adafruit_GFX.h:31:22: error: 'uint16_t' has not been declared
int16_t delta, uint16_t color),
^
Adafruit_GFX.h:32:18: error: 'int16_t' has not been declared
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
^
Adafruit_GFX.h:32:30: error: 'int16_t' has not been declared
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
^
Adafruit_GFX.h:32:42: error: 'int16_t' has not been declared
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
^
Adafruit_GFX.h:32:54: error: 'int16_t' has not been declared
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
^
Adafruit_GFX.h:33:7: error: 'int16_t' has not been declared
int16_t x2, int16_t y2, uint16_t color),
^
Adafruit_GFX.h:33:19: error: 'int16_t' has not been declared
int16_t x2, int16_t y2, uint16_t color),
^
Adafruit_GFX.h:33:31: error: 'uint16_t' has not been declared
int16_t x2, int16_t y2, uint16_t color),
^
Adafruit_GFX.h:34:18: error: 'int16_t' has not been declared
fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
^
Adafruit_GFX.h:34:30: error: 'int16_t' has not been declared
fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
^
Adafruit_GFX.h:34:42: error: 'int16_t' has not been declared
fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
^
Adafruit_GFX.h:34:54: error: 'int16_t' has not been declared
fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
^
Adafruit_GFX.h:35:7: error: 'int16_t' has not been declared
int16_t x2, int16_t y2, uint16_t color),
^
Adafruit_GFX.h:35:19: error: 'int16_t' has not been declared
int16_t x2, int16_t y2, uint16_t color),
^
Adafruit_GFX.h:35:31: error: 'uint16_t' has not been declared
int16_t x2, int16_t y2, uint16_t color),
^
Adafruit_GFX.h:36:19: error: 'int16_t' has not been declared
drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
^
Adafruit_GFX.h:36:31: error: 'int16_t' has not been declared
drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
^
Adafruit_GFX.h:36:43: error: 'int16_t' has not been declared
drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
^
Adafruit_GFX.h:36:54: error: 'int16_t' has not been declared
drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
^
Adafruit_GFX.h:37:7: error: 'int16_t' has not been declared
int16_t radius, uint16_t color),
^
Adafruit_GFX.h:37:23: error: 'uint16_t' has not been declared
int16_t radius, uint16_t color),
^
Adafruit_GFX.h:38:19: error: 'int16_t' has not been declared
fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
^
Adafruit_GFX.h:38:31: error: 'int16_t' has not been declared
fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
^
Adafruit_GFX.h:38:43: error: 'int16_t' has not been declared
fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
^
Adafruit_GFX.h:38:54: error: 'int16_t' has not been declared
fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
^
Adafruit_GFX.h:39:7: error: 'int16_t' has not been declared
int16_t radius, uint16_t color),
^
Adafruit_GFX.h:39:23: error: 'uint16_t' has not been declared
int16_t radius, uint16_t color),
^
Adafruit_GFX.h:40:16: error: 'int16_t' has not been declared
drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
^
Adafruit_GFX.h:40:27: error: 'int16_t' has not been declared
drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
^
Adafruit_GFX.h:40:44: error: 'uint8_t' does not name a type
drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
^
Adafruit_GFX.h:40:53: error: ISO C++ forbids declaration of 'bitmap' with no type [-fpermissive]
drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
^
Adafruit_GFX.h:41:7: error: 'int16_t' has not been declared
int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:41:18: error: 'int16_t' has not been declared
int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:41:29: error: 'uint16_t' has not been declared
int16_t w, int16_t h, uint16_t color),
^
Adafruit_GFX.h:42:14: error: 'int16_t' has not been declared
drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
^
Adafruit_GFX.h:42:25: error: 'int16_t' has not been declared
drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
^
Adafruit_GFX.h:42:53: error: 'uint16_t' has not been declared
drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
^
Adafruit_GFX.h:43:7: error: 'uint16_t' has not been declared
uint16_t bg, uint8_t size),
^
Adafruit_GFX.h:43:20: error: 'uint8_t' has not been declared
uint16_t bg, uint8_t size),
^
Adafruit_GFX.h:44:15: error: 'int16_t' has not been declared
setCursor(int16_t x, int16_t y),
^
Adafruit_GFX.h:44:26: error: 'int16_t' has not been declared
setCursor(int16_t x, int16_t y),
^
Adafruit_GFX.h:45:18: error: 'uint16_t' has not been declared
setTextColor(uint16_t c),
^
Adafruit_GFX.h:46:18: error: 'uint16_t' has not been declared
setTextColor(uint16_t c, uint16_t bg),
^
Adafruit_GFX.h:46:30: error: 'uint16_t' has not been declared
setTextColor(uint16_t c, uint16_t bg),
^
Adafruit_GFX.h:47:17: error: 'uint8_t' has not been declared
setTextSize(uint8_t s),
^
Adafruit_GFX.h:48:17: error: 'boolean' has not been declared
setTextWrap(boolean w),
^
Adafruit_GFX.h:49:17: error: 'uint8_t' has not been declared
setRotation(uint8_t r);
^
Adafruit_GFX.h:52:10: error: 'size_t' does not name a type
virtual size_t write(uint8_t);
^
Adafruit_GFX.h:55:3: error: 'int16_t' does not name a type
int16_t
^
Adafruit_GFX.h:59:3: error: 'uint8_t' does not name a type
uint8_t getRotation(void);
^
Adafruit_GFX.h:62:9: error: 'int16_t' does not name a type
const int16_t
^
Adafruit_GFX.h:64:3: error: 'int16_t' does not name a type
int16_t
^
Adafruit_GFX.h:67:3: error: 'uint16_t' does not name a type
uint16_t
^
Adafruit_GFX.h:69:3: error: 'uint8_t' does not name a type
uint8_t
^
Adafruit_GFX.h:72:3: error: 'boolean' does not name a type
boolean
^
Adafruit_GFX.cpp:41:27: error: expected constructor, destructor, or type conversion before '(' token
Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h):
^
Adafruit_GFX.cpp:54:31: error: variable or field 'drawCircle' declared void
void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r,
^
Adafruit_GFX.cpp:54:31: error: 'int16_t' was not declared in this scope
Adafruit_GFX.cpp:54:43: error: 'int16_t' was not declared in this scope
void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r,
^
Adafruit_GFX.cpp:54:55: error: 'int16_t' was not declared in this scope
void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r,
^
Adafruit_GFX.cpp:55:5: error: 'uint16_t' was not declared in this scope
uint16_t color) {
^
make: *** [Adafruit_GFX.o] Error 1

@MagicTech, crap! There are some missing #include “application.h” in the files. I’ll fix the code and get it compiling and let you know when it’s good to go.

No problem. I am always appreciative of your help.

Did the fix ever find its way back to the repo? I show last update was before this message. Is there somewhere I can find the working sample? Thanks https://github.com/pkourany/Adafruit_SharpMem

@anthonywebb, I’ll post a fully working mfGFX-based SharpMem set of files tonight if I can. :smile:

Thank you so much, I have been able to get the mfGFX sample compiled, but when I run it it seems like it tries to start up, and flashes red (as others have posted), memory problems right?

What confused me was this post saying that it works great on the 128x128 (which I have as well) https://community.spark.io/t/new-adafruit-mfgfx-multifont-library/4156/7?u=anthonywebb

Then this post saying that the out of memory thing was indeed problematic for the same 128x128 which I presume was previously working? https://community.spark.io/t/new-adafruit-mfgfx-multifont-library/4156/24?u=anthonywebb

Is there something I can do to reduce the size to get a “hello world” sample going? In all reality, I only need a single font.

Thanks, cant wait to see this LCD in action!

@peekay123 Did you ever have that Sharp LCD up and running on the Spark yourself? I know I sent you the boards to LCD’s and Breakout boards and you did indeed get the library up and working for me but you provided me with the Arduino version.

I ran the Arduino version of your code on the Teensy 3.1 just fine. The multifont library works great also but takes awhile to figure out exactly whats going on.

Just wanted to chime in and tell @peekay123 that I never actually ran that library with either the Sharp 128 x 128 Pixel display or the 400 x 240 pixel version which can really only be ran the Teensy 3.1 due to the RAM size requirements to buffer every pixel in the the display.

@peekay123 While we are talking about the Sharp Memory LCD’s I was wondering if you could help me understand better what exactly the vCom refresh line does. It says it keeps the LCD’s from biasing? Or maybe that means it keeps the pixels from fading out or loosing charge?

I know that the vCom requires a square wave pulse every second but still do not understand exactly whats happening.

If you look at the Sharp Memory LCD at an angle in daylight you can see the vCom refreshing the LCD’s, and every time the vCom is refreshed the LCD will get darker black, then fade just a tad when looking at the screen from an angle and when the vcom signal is trigger again you can see the LCD’s darken back up again.

When looking at the LCD from the front its not even noticeable. But I can tell that the vCom keeps the screen dark but I still wonder whats technically going on when the vCom is refreshed.

Any ideas?

@RWB and @anthonywebb, the display driver I have was adapted from the Arduino driver that uses software SPI. Mine is adapted to hardware SPI and as I have discovered today, the clock speed is crucial to proper operation (DIV16 is fastest reliable speed). My original demo used DIV8 which cause issues and prevented the “hello world” portion of the demo to show up on the display.

The driver uses a local display buffer since the SharpMem display requires single-line or multi-line data transfers. The 96x96 and 128x128 Sharp Memory displays require a 1152 byte and 2048 byte buffer respectively. Both will work with the Core assuming you don’t have any other heavy memory requirements in your code. The 400x240 display, however, requires a 12KB buffer which is not possible on the Core (but will be on the Photon!). As such, I developed a special driver that uses SPI based FRAM to create the large necessary display buffer. However, due to the FRAM’s speed and the fact that it shares the SPI bus with the display, the display refresh speed is considerably slower. For static displays or ones that are updated slowly, the driver is ideal.

@RWB, the SharpMem display uses a VCOM signal to prevent a DC bias voltage (think capacitor) from building up within the panel which reduce the pixel “intensity” as you noticed. Using VCOM resets any DC bias, preventing an accumulation of charge. Typically, VCOM is changed once a second. The existing driver uses software-base VCOM toggling and does it as often as possible. An external timer (eg 555) could be used to refresh VCOM without CPU involvement. Ideally VCOM is driven at 60Hz.

I will be posting a repo with a complete working set for the Sharp display including mfGFX. If anyone is interested, I can also post the 400x240 FRAM-based library which requires specific wiring for the FRAM and display to work. :smile:

1 Like

Thank you for the update. Looking forward to trying out my 128x128. Of course I am on pins and needles anxiously awaiting the photon which will solve a lot of these issues. Let me know when you have something workable posted. Thanks.

@peekay123 Thanks for the info Paul.

About VCOM, so is it like were just hitting it with more power every second to keep the pixel nice and black because if we didn’t they would just fade out to the point that we don’t see them anymore? That makes sense to me if thats whats happening.

I ended up picking up a special ultra low power square wave pulse generating chip that only consumes 1.35uA when generating a Square Wave at 49Hz.

So you could have the Spark Core or any Micro draw out the Sharp LCD Screen Data and then put the micro controller back to sleep while the Sharp LCD holds that image forever while only consuming only 12uW on the smaller screen and the 135uW on the 2.7 inch screen.

Sharp says the screens consume about 100 times less power than it takes to blink a LED as a status indicator.

Here is a link to the Chip on Digikey. http://www.digikey.com/product-detail/en/TS3005ITD1033T/TS3005ITD1033TCT-ND/3945109

Finding the Demo Board is tricky but here is the part number for it: TS3005DB

You could just buy the chip and get this board to evaluate it. http://www.schmartboard.com/index.asp?page=products_smttodip&id=552

And some pictures for the screens I have tested along with @peekay123 custom font library which is pretty sweet. I’m going to be putting this to good use really soon.






I was too lazy to update the git repo for the SharpMem library so I put all the files in a dropbox here :stuck_out_tongue:

The library defaults to a 128x128 display and I tested everything with Spark CLI.

@RWB, cool timer chip and great pics! :smile:

1 Like

@peekay123

Also just a quick note to anybody interested in Sharp Memory LCD’s.

The 4.4 Inch Sharp Memory LCD’s are now available for purchase. Nobody carried them back 6 months ago but now there are a few suppliers who have them instock. The 2.7 inch screen is very sharp and high rez but you have to be right up on it if you want to put lots of data on the screen at one time.

The 4.4" display is 320 x 240 and uses the same connector as the 1.28 inch, 2.7" displays so the current break out boards will work just fine for it.

Here is one place selling them: http://www.futureelectronics.com/en/Technologies/Product.aspx?ProductID=LS0DAS2395SHARP2038585&IM=0

Here is the Datasheet: http://www.prochip.ru/cms/f/453996/LS044Q7DH01.pdf

I’m going to order one and check it out. You can’t go wrong with these displays if they are used in a system that runs on batteries.

Gents,
What is the latest on trying to use 4.4" Memory Display w/Spark Core? Initially there was some talk of not having enough memory until photon arrived. Is that still true? Was there anything measured on power consumption of 4.4" display and Spark Core connected to the WEB. Can a battery provide “months of use”, or is the power consumption more?