You are reading a single comment by @rsm and its replies. Click here to read the full conversation.
  • I need some help writing a save() block in blockly. This code moves the servo on pin B14 to two positions 0.5 seconds apart then saves it to the microcontroller so the code executes next time I plug it in. This code works when I write it in the JavaScript window:

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

    Similarly, this code works to call the first two lines from a Blockly block, so I know I'm doing all of that correctly:

    Blockly.Language.save = {
        category: 'Espruino',
        init: function() {
            this.appendDummyInput()
                .appendTitle('Save');
          this.setPreviousStatement(true);
          this.setNextStatement(true);
          this.setColour(100);
          this.setInputsInline(true);
          this.setTooltip('Save Code to Board');
        }
      };
    
    Blockly.JavaScript.save = function() {
      var move = "setTimeout(function () {analogWrite(B14, 1.8 / 50.0, {freq:20});},500);\n";
      var move2 = "setTimeout(function () {analogWrite(B14, 1.6 / 50.0, {freq:20});},1000);\n";
      var saveCmd = "save();\n";
      return move + move2;
    };
    

    But as soon as I call the save() command from Blockly by changing line 18 to:

    return move + move2 + saveCmd;
    

    then the block does nothing. Meaning, the servo doesn't move, and there's no indication that anything was sent to the board. The frustrating part is that when I click on the command prompt side of the IDE and press up to see the commands sent, I see all three of the commands that I wanted to see:

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

    Please help,
    Rehman

About

Avatar for rsm @rsm started