I'd be really wary about actually calling the save() command from anything on the 'right-hand side' - especially as you're never sure of the order. For example if you put a second block up, the code would then be:
And mySecondBlocksCode() would never be saved. The best thing would be to somehow detect that you had one of those magic blocks and to then append 'save();' to the end of the code that was sent. Maybe the block could append /*SAVE*/ and then editorBlockly.js:getCode() could search for this in the code string and could put save() right on the end of the code.
Having said all that, I just tried what you said (except I changed analogWrite(...) to digitalWrite(LED1, ...)) and it works perfectly - so I'm really not sure what the problem is - unless for some reason the code gets sent so slowly that the timeouts have already executed by the time you have saved.
If that's the case I'd really suggest you try and find a way of putting those timeouts inside the onInit() function - which is a special function that gets called when Espruino starts up.
Now I've added the functions tab it's as easy as just creating a new function block and calling it onInit.
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.
I'd be really wary about actually calling the
save()
command from anything on the 'right-hand side' - especially as you're never sure of the order. For example if you put a second block up, the code would then be:And
mySecondBlocksCode()
would never be saved. The best thing would be to somehow detect that you had one of those magic blocks and to then append 'save();' to the end of the code that was sent. Maybe the block could append/*SAVE*/
and theneditorBlockly.js:getCode()
could search for this in the code string and could putsave()
right on the end of the code.Having said all that, I just tried what you said (except I changed
analogWrite(...)
todigitalWrite(LED1, ...)
) and it works perfectly - so I'm really not sure what the problem is - unless for some reason the code gets sent so slowly that the timeouts have already executed by the time you have saved.If that's the case I'd really suggest you try and find a way of putting those timeouts inside the
onInit()
function - which is a special function that gets called when Espruino starts up.Now I've added the functions tab it's as easy as just creating a new function block and calling it
onInit
.