diff --git a/boards/default_src/micropython/blocks/sensor_extern.js b/boards/default_src/micropython/blocks/sensor_extern.js index ad8f8cd6..5249f12a 100644 --- a/boards/default_src/micropython/blocks/sensor_extern.js +++ b/boards/default_src/micropython/blocks/sensor_extern.js @@ -2415,4 +2415,41 @@ export const get_keboards_value = { this.setOutput(true); this.setInputsInline(true); } +} + +export const init_init_rotary_encoder = { + init:function(){ + this.setColour(SENSOR_EXTERN_HUE); + this.appendValueInput('SUB') + .appendField(Blockly.Msg.MIXLY_SETUP) + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_AS + Blockly.Msg.MIXLY_ROTARY_ENCODER) + this.appendValueInput('PIN1') + .appendField('PINA#') + this.appendValueInput('PIN2') + .appendField('PINB#') + this.appendValueInput('KEY') + .appendField('KEY#') + this.appendValueInput('METHOD') + .appendField(Blockly.Msg.MIXLY_DO) + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +} + +export const rotary_key = { + init:function(){ + this.setColour(SENSOR_EXTERN_HUE); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_ROTARY_ENCODER) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.CLOCKWISE + Blockly.Msg.MIXLY_REVOLVE,"ROT_CW"], + [Blockly.Msg.ANTI_CLOCKWISE + Blockly.Msg.MIXLY_REVOLVE,"ROT_CCW"], + [Blockly.Msg.MIXLY_BUTTON2 + Blockly.Msg.MIXLY_BUTTON_PRESSED, "SW_PRESS"], + [Blockly.Msg.MIXLY_BUTTON2 + Blockly.Msg.MIXLY_BUTTON_RELEASED,"SW_RELEASE"] + ]),"key") + this.setOutput(true); + this.setInputsInline(true); + } } \ No newline at end of file diff --git a/boards/default_src/micropython/generators/sensor_extern.js b/boards/default_src/micropython/generators/sensor_extern.js index 5b0f9040..f4bb695b 100644 --- a/boards/default_src/micropython/generators/sensor_extern.js +++ b/boards/default_src/micropython/generators/sensor_extern.js @@ -1168,4 +1168,22 @@ export const get_keboards_value = function (_, generator) { var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); var code = varName + '.read_keypad()' return [code, generator.ORDER_ATOMIC]; +} + +export const init_init_rotary_encoder = function (_, generator) { + generator.definitions_['import_rotary'] = 'import rotary'; + var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + var p1 = generator.valueToCode(this, 'PIN1', generator.ORDER_ATOMIC); + var p2 = generator.valueToCode(this, 'PIN2', generator.ORDER_ATOMIC); + var key = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC); + var m = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC); + var code = v + " = rotary.Encoder("+ p1 +","+ p2 +","+ key +","+ m +")\n"; + return code; +} + +export const rotary_key = function (_, generator) { + generator.definitions_['import_rotary'] = 'import rotary'; + var key = this.getFieldValue("key"); + var code = 'rotary.'+ key ; + return [code,generator.ORDER_ATOMIC]; } \ No newline at end of file diff --git a/boards/default_src/micropython_esp32/template.xml b/boards/default_src/micropython_esp32/template.xml index fb1a65cc..4a0a15ab 100644 --- a/boards/default_src/micropython_esp32/template.xml +++ b/boards/default_src/micropython_esp32/template.xml @@ -4349,6 +4349,41 @@ + + + + var_re + + + + 3 + + + + 4 + + + + + 5 + + + + + rotary_cb + + + + + + + + + rotary_cb + + + + diff --git a/boards/default_src/micropython_esp32c2/template.xml b/boards/default_src/micropython_esp32c2/template.xml index 236cb7f9..ab0d52e9 100644 --- a/boards/default_src/micropython_esp32c2/template.xml +++ b/boards/default_src/micropython_esp32c2/template.xml @@ -4260,6 +4260,41 @@ + + + + var_re + + + + 3 + + + + 4 + + + + + 5 + + + + + rotary_cb + + + + + + + + + rotary_cb + + + + diff --git a/boards/default_src/micropython_esp32c3/template.xml b/boards/default_src/micropython_esp32c3/template.xml index 2f793ddd..78a0b6e7 100644 --- a/boards/default_src/micropython_esp32c3/template.xml +++ b/boards/default_src/micropython_esp32c3/template.xml @@ -4144,6 +4144,76 @@ + + + + var_re + + + + 3 + + + + 4 + + + + + 5 + + + + + rotary_cb + + + + + + + + + rotary_cb + + + + + + + + var_re + + + + 3 + + + + 4 + + + + + 5 + + + + + rotary_cb + + + + + + + + + rotary_cb + + + + diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml index d3a3bfa8..6907f3eb 100644 --- a/boards/default_src/micropython_esp32s3/template.xml +++ b/boards/default_src/micropython_esp32s3/template.xml @@ -4610,6 +4610,41 @@ KEYPAD_4_4 + + + + var_re + + + + 3 + + + + 4 + + + + + 5 + + + + + rotary_cb + + + + + + + + + rotary_cb + + + + diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js index 1774377a..2e2e8ea3 100644 --- a/common/msg/blockly/en.js +++ b/common/msg/blockly/en.js @@ -3992,4 +3992,6 @@ En.MIXLY_MICROPYTHON_SOCKET_READLINE = 'Readline'; En.MIXLY_MICROPYTHON_SOCKET_READLINE_TOOLTIP = 'Read a line of data, ending with a newline character.'; En.MIXLY_DISPLAY_SCROLL_WAY = 'direction of scrolling'; En.MIXLY_LIGHT_SENSOR2 = 'light sensor'; +En.MIXLY_ROTARY_ENCODER = 'rotary encoder'; +En.MIXLY_REVOLVE = 'revolue'; })(); diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js index d61c6a14..80694ab8 100644 --- a/common/msg/blockly/zh-hans.js +++ b/common/msg/blockly/zh-hans.js @@ -4151,4 +4151,6 @@ ZhHans.MIXLY_MICROPYTHON_SOCKET_READLINE = '接收套接字的一行数据'; ZhHans.MIXLY_MICROPYTHON_SOCKET_READLINE_TOOLTIP = '读取一行数据,以换行符结尾。'; ZhHans.MIXLY_DISPLAY_SCROLL_WAY = '滚动显示方向'; ZhHans.MIXLY_LIGHT_SENSOR2 = '光照传感器'; +ZhHans.MIXLY_ROTARY_ENCODER = '旋转解码器'; +ZhHans.MIXLY_REVOLVE = '旋'; })(); \ No newline at end of file diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js index abce8e1c..c2283004 100644 --- a/common/msg/blockly/zh-hant.js +++ b/common/msg/blockly/zh-hant.js @@ -4146,4 +4146,6 @@ ZhHant.MIXLY_MICROPYTHON_SOCKET_READLINE = '接收套接字的一行資料'; ZhHant.MIXLY_MICROPYTHON_SOCKET_READLINE_TOOLTIP = '讀取一行數據,以換行符號結尾。 '; ZhHant.MIXLY_DISPLAY_SCROLL_WAY = '滾動顯示方向'; ZhHant.MIXLY_LIGHT_SENSOR2 = '光照傳感器'; +ZhHant.MIXLY_ROTARY_ENCODER = '旋轉解碼器'; +ZhHant.MIXLY_REVOLVE = '旋'; })();