Installed and tested with the code I've been working with lately (it's a control panel - takes input from a keypad, displays data on a PCD8544, and allows the user to set brightness of 5 channels of LEDs (output via analogWrite) for my desk lamp project. And it reads from a DHT11 (would be a DHT22, except I fried mine) and displays the temperature and "humidity".
v60 seems to work without issue. I'm going to leave it running while I'm out with my code running on it (it's updating a display and reading a dht - though not logging anything - I've yet to move the PCD8544 off of SPI and onto a soft-SPI, though i'll do that later and see if that works reliably).
The new PCD8544 driver doesn't work (rows after the first block of 8 are shifted left and slowly walk across the screen as flip() is called) , but that's unrelated to this - I'll take a look at it tonight. Edit: Looked, fixed, pull requested.
After letting it run a few hours - no dice - same thing happens to me - after running for a while, it suddenly runs out of memory and dies. This happened at some point between 35 mins and 4.5 hrs. getTime() is returning accurate results (ie, that bug hasn't returned). The same code was running flawlessly overnight yesterday.
ERROR: Out of Memory!
WARNING: Out of memory while appending to array
at line 1 col 92
{pinMode(b.pin,"input_pullup");b.watch=setWatch(function(a){b.onwatch(a)},b.pin,{repeat:!0})}
^
in function called from system
Execution Interrupted during event processing.
ERROR: Unknown Watch
ERROR: Out of Memory!
WARNING: Unable to create string as not enough memory
ERROR: Got INT expected ')' at line 1 col 230
{this.onreadf=a;this.i=0;this.out=1;pinMode(this.pin);var b=this;setTimeout(function(){digitalWrite(b.pin,0)},2);setTimeout(function(){pinMode(b.pin,"input_pullup");b.watch=setWatch(function(a){b.onwatch(a)},b.pin,{repeat:!0})},5);setTimeout(function(){b.onread(b.endRead())},50)}
^
at line 1 col 229
{this.onreadf=a;this.i=0;this.out=1;pinMode(this.pin);var b=this;setTimeout(function(){digitalWrite(b.pin,0)},2);setTimeout(function(){pinMode(b.pin,"input_pullup");b.watch=setWatch(function(a){b.onwatch(a)},b.pin,{repeat:!0})},5);setTimeout(function(){b.onread(b.endRead())},50)}
^
in function "read" called from line 1 col 76
in function "onread" called from line 1 col 22
in function called from system
Execution Interrupted during event processing.
ERROR: Out of Memory!
ERROR: Out of Memory!
WARNING: Unable to create string as not enough memory
ERROR: Out of Memory!
WARNING: Unable to create string as not enough memory
ERROR: Out of Memory!
WARNING: Out of memory while appending to array
ERROR: Out of Memory!
at line 1 col 279
{this.onreadf=a;this.i=0;this.out=1;pinMode(this.pin);var b=this;setTimeout(function(){digitalWrite(b.pin,0)},2);setTimeout(function(){pinMode(b.pin,"input_pullup");b.watch=setWatch(function(a){b.onwatch(a)},b.pin,{repeat:!0})},5);setTimeout(function(){b.onread(b.endRead())},50)}
^
in function "read" called from line 1 col 38
ERROR: Error processing interval - removing it.
Execution Interrupted during event processing.
ERROR: Out of Memory!
at line 1 col 21
{for(var a=0;6>a;a++)digitalWrite(d,0),b.send(64|a,c),b.send(128,c),digitalWrite(d,1),b.send(new Uint8Array(this.buffer,84*a,84),c)}
^
in function "flip" called from line 2 col 219
in function "uplcd" called from line 1 col 8
in function called from system
ERROR: Error processing interval - removing it.
Execution Interrupted during event processing.
>
Code that made it:
var rh=-1;
var t=-1;
var statusview=1;
var menustate=0;
var menuopt=0;
var inval="";
var colors=["BLUE","COOL","WARM","YELL","PINK"];
var ledstate=[0.4,1,0.8,0,0.2];
var menu=[0,4];
var ledpins=[B0,C9,C8,C7,C6];
var kp=require("KeyPad").connect([C12,C15,C0,C1],[C2,C3,A0,A1], function(e) {onKey(e);});
require("Font8x12").add(Graphics);
function onKey(e){
var k="123A456B789C*0#D"[e];
if (e==12){
if (menustate==2){
menustate=0;
} else {
menustate++;
}
menuopt=0;
inval="";
uplcd();
} else if (e==14 && menustate) {
if (menustate==1) {
var v=E.clip(parseInt(inval),0,100);
v=v/100;
ledstate[menuopt]=v;
inval="";
uplcd();
setTimeout("upled();",500);
}
} else if (e==3 && menustate) {
if (menuopt>=menu[menustate]) {
menuopt=0;
} else {
menuopt++;
}
inval="";
uplcd();
} else if ((e&0x03)==3) {
console.log(k);
} else if (menustate==1) {
if (inval.length < 3) {
inval=inval+k;
} else {
inval="";
}
uplcd();
}
g.backlighton();
}
digitalWrite(A13,0);
var g=require("PCD8544").connect(SPI2,C4,C5,A3, function() {
g.clear();
g.setFont8x12();
g.drawString("LCD OK",0,0);
g.flip();
g.bktim=0;
});
g.backlighton = function() {
digitalWrite(A2,1);
if (this.bktim) {
clearTimeout(this.bktim);
this.bktim=0;
}
this.bktim=setTimeout("digitalWrite(A2,0);g.bktim=0;",5000);
};
var e=require("DHT11").connect(B0);
setInterval("e.read(function(a){rh=a.rh;t=a.temp;});",30000);
setTimeout("setInterval(function(){uplcd();},30000)",15000);
function uplcd() {
g.clear();
g.setFont8x12();
g.drawString(t.toFixed(1)+" C "+rh.toFixed(1)+"%",0,0);
if (statusview==1) {
g.drawRect(3,14,8,39);
g.drawRect(12,14,19,39);
g.drawRect(23,14,30,39);
g.drawRect(34,14,39,39);
g.drawRect(43,14,48,39);
g.fillRect(3,(39-ledstate[0]*25),8,39);
g.fillRect(12,(39-ledstate[1]*25),19,39);
g.fillRect(23,(39-ledstate[2]*25),30,39);
g.fillRect(34,(39-ledstate[3]*25),39,39);
g.fillRect(43,(39-ledstate[4]*25),48,39);
g.setFontBitmap();
g.drawString("B",4,41);
g.drawString("C",14,41);
g.drawString("W",25,41);
g.drawString("Y",35,41);
g.drawString("P",44,41);
}
if (menustate==1) {
g.setFont8x12();
g.drawString(colors[menuopt],52,13);
g.drawString((100*ledstate[menuopt]).toFixed(),60,24);
if (inval) {
g.drawString(inval,60,35);
}
}
g.flip();
}
function upled() {
for (var i=0;i<5;i++) {
analogWrite(ledpins[i],ledstate[i]);
}
}
Also, sometimes the IDE just hangs while sending code to it - showing echo(0), and doing nothing. I'm not quite sure what it's doing, but it does it first thing when it runs, because if I send over code where echo(1); is the first line, it still hangs showing echo(0); until I ctrl+c, which breaks it out of whatever it's doing and it then successfully runs all the code I sent it.
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Installed and tested with the code I've been working with lately (it's a control panel - takes input from a keypad, displays data on a PCD8544, and allows the user to set brightness of 5 channels of LEDs (output via analogWrite) for my desk lamp project. And it reads from a DHT11 (would be a DHT22, except I fried mine) and displays the temperature and "humidity".
v60 seems to work without issue. I'm going to leave it running while I'm out with my code running on it (it's updating a display and reading a dht - though not logging anything - I've yet to move the PCD8544 off of SPI and onto a soft-SPI, though i'll do that later and see if that works reliably).
The new PCD8544 driver doesn't work (rows after the first block of 8 are shifted left and slowly walk across the screen as flip() is called) , but that's unrelated to this - I'll take a look at it tonight. Edit: Looked, fixed, pull requested.
After letting it run a few hours - no dice - same thing happens to me - after running for a while, it suddenly runs out of memory and dies. This happened at some point between 35 mins and 4.5 hrs. getTime() is returning accurate results (ie, that bug hasn't returned). The same code was running flawlessly overnight yesterday.
Code that made it:
Also, sometimes the IDE just hangs while sending code to it - showing echo(0), and doing nothing. I'm not quite sure what it's doing, but it does it first thing when it runs, because if I send over code where echo(1); is the first line, it still hangs showing echo(0); until I ctrl+c, which breaks it out of whatever it's doing and it then successfully runs all the code I sent it.