diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 80832aa..92c7d6c 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: actions/setup-node@v3 with: diff --git a/package.json b/package.json index d2fb517..16ed88b 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "dist", "media" ], - "version": "3.2.6", + "version": "3.3.0", "description": "Leaphy custom Blockly blocks and arduino code generator", "name": "@leaphy-robotics/leaphy-blocks" } diff --git a/src/blocks/leaphy_common.ts b/src/blocks/leaphy_common.ts index f090747..8fc89b9 100644 --- a/src/blocks/leaphy_common.ts +++ b/src/blocks/leaphy_common.ts @@ -81,6 +81,30 @@ const blocks: BlockDefinition = [ style: "leaphy_blocks", helpUrl: "http://arduino.cc/en/Reference/DigitalWrite", }, + { + type: "leaphy_multiplexer_digitalwrite", + message0: "%%{BKY_ARD_SET_MULTIPLEXER} %1", + args0: [ + { + type: "field_dropdown", + name: "PIN", + options: [ + ["Y0", "0"], + ["Y1", "1"], + ["Y2", "2"], + ["Y3", "3"], + ["Y4", "4"], + ["Y5", "5"], + ["Y6", "6"], + ["Y7", "7"], + ], + }, + ], + inputsInline: true, + previousStatement: null, + nextStatement: null, + style: "leaphy_blocks", + }, { type: "leaphy_io_analogwrite", message0: "%%{BKY_ARD_ANALOGWRITE} %1 %%{BKY_ARD_WRITE_TO} %2", diff --git a/src/generators/arduino/leaphy_extra.ts b/src/generators/arduino/leaphy_extra.ts index 1d62e4e..503eac2 100644 --- a/src/generators/arduino/leaphy_extra.ts +++ b/src/generators/arduino/leaphy_extra.ts @@ -224,6 +224,22 @@ function getCodeGenerators(arduino: Arduino) { return `analogWrite(${pin}, ${stateOutput});\n`; }; + arduino.forBlock["leaphy_multiplexer_digitalwrite"] = function (block) { + const pin = block.getFieldValue("PIN"); + + const pinSetupCode = + "pinMode(0, OUTPUT);\n" + + " pinMode(16, OUTPUT);\n" + + " pinMode(1, OUTPUT);\n"; + arduino.addSetup("dgmulti", pinSetupCode, false); + + return ( + `digitalWrite(0, bitRead(${pin}, 2));\n` + + `digitalWrite(16, bitRead(${pin}, 1));\n` + + `digitalWrite(1, bitRead(${pin}, 0));\n` + ); + }; + arduino.forBlock["leaphy_sonar_read"] = function (block) { arduino.addInclude("leaphy_extra", '#include "Leaphy_Extra.h"'); const trigPin = block.getFieldValue("TRIG_PIN"); diff --git a/src/msg/translations/en.ts b/src/msg/translations/en.ts index 0520374..d094b30 100644 --- a/src/msg/translations/en.ts +++ b/src/msg/translations/en.ts @@ -5,6 +5,7 @@ messages["ACTUATOREN_CATEGORY"] = "Actuators"; messages["ADD_COMMENT"] = "Add Comment"; messages["ARD_ANALOGWRITE"] = "Set PWM pin"; messages["ARD_DIGITALWRITE"] = "Set digital pin"; +messages["ARD_SET_MULTIPLEXER"] = "Set digital multiplexer to pin"; messages["ARD_PIN_WARN1"] = "Pin %1 is needed for %2 as pin %3. Already in use as %4."; messages["ARD_SERVO_READ"] = "Read servo pin"; diff --git a/src/msg/translations/nl.ts b/src/msg/translations/nl.ts index c29d918..60d1797 100644 --- a/src/msg/translations/nl.ts +++ b/src/msg/translations/nl.ts @@ -5,6 +5,7 @@ messages["ACTUATOREN_CATEGORY"] = "Actuatoren"; messages["ADD_COMMENT"] = "Opmerking toevoegen"; messages["ARD_ANALOGWRITE"] = "Zet PWM"; messages["ARD_DIGITALWRITE"] = "Zet Digipin"; +messages["ARD_SET_MULTIPLEXER"] = "Stel digitale multiplexer in op pin"; messages["ARD_PIN_WARN1"] = "Pin %1 is nodig voor %2 als pin %3. Al gebruikt als %4."; messages["ARD_SERVO_READ"] = "Lees servo pin";