You are reading a single comment by @Gordon and its replies. Click here to read the full conversation.
  • 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:

    setTimeout(function () {analogWrite(B14, 1.8 / 50.0, {freq:20});},500);
    setTimeout(function () {analogWrite(B14, 1.6 / 50.0, {freq:20});},1000);
    save();
    mySecondBlocksCode();
    

    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.

About

Avatar for Gordon @Gordon started