diff --git a/boards/default_src/micropython/blocks/sensor_extern.js b/boards/default_src/micropython/blocks/sensor_extern.js index 2154a6d0..12828134 100644 --- a/boards/default_src/micropython/blocks/sensor_extern.js +++ b/boards/default_src/micropython/blocks/sensor_extern.js @@ -2299,4 +2299,99 @@ export const weigh_sensor_get_weight = { this.setOutput(true); this.setInputsInline(true); } -}; \ No newline at end of file +}; + +export const init_matrix_keyboard = { + init: function () { + this.setColour(SENSOR_EXTERN_HUE); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_Keypad) + .setAlign(Blockly.ALIGN_RIGHT) + this.appendDummyInput() + .appendField(new Blockly.FieldTextInput(''), 'VAR') + .setAlign(Blockly.ALIGN_RIGHT) + this.appendValueInput('VALUE1') + .appendField(Blockly.Msg.MIXLY_line_tube_foot + '#') + .setAlign(Blockly.ALIGN_RIGHT) + this.appendValueInput('VALUE2') + .appendField(Blockly.Msg.MIXLY_column_tube_foot + '#') + .setAlign(Blockly.ALIGN_RIGHT) + this.appendValueInput('VALUE3') + .appendField(Blockly.Msg.MIXLY_DEFINE_KEYBOARDS) + .setAlign(Blockly.ALIGN_RIGHT) + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(false); + } +} + +export const line_tube_foot ={ + init: function () { + this.setColour(SENSOR_EXTERN_HUE); + this.appendValueInput('PIN1') + .appendField('1#') + this.appendValueInput('PIN2') + .appendField('2#') + this.appendValueInput('PIN3') + .appendField('3#') + this.appendValueInput('PIN4') + .appendField('4#') + this.setOutput(true); + this.setInputsInline(true); + } +} + +export const column_tube_foot = { + init: function () { + this.setColour(SENSOR_EXTERN_HUE); + this.appendValueInput('PIN1') + .appendField('1#') + this.appendValueInput('PIN2') + .appendField('2#') + this.appendValueInput('PIN3') + .appendField('3#') + this.appendValueInput('PIN4') + .appendField('4#') + this.setOutput(true); + this.setInputsInline(true); + } +} + +export const define_keyboards = { + init:function(){ + this.setColour(SENSOR_EXTERN_HUE); + this.appendDummyInput() + .appendField(new Blockly.FieldTextInput(''), 'VAR1') + .appendField(new Blockly.FieldTextInput(''), 'VAR2') + .appendField(new Blockly.FieldTextInput(''), 'VAR3') + .appendField(new Blockly.FieldTextInput(''), 'VAR4') + this.appendDummyInput() + .appendField(new Blockly.FieldTextInput(''), 'VAR5') + .appendField(new Blockly.FieldTextInput(''), 'VAR6') + .appendField(new Blockly.FieldTextInput(''), 'VAR7') + .appendField(new Blockly.FieldTextInput(''), 'VAR8') + this.appendDummyInput() + .appendField(new Blockly.FieldTextInput(''), 'VAR9') + .appendField(new Blockly.FieldTextInput(''), 'VAR10') + .appendField(new Blockly.FieldTextInput(''), 'VAR11') + .appendField(new Blockly.FieldTextInput(''), 'VAR12') + this.appendDummyInput() + .appendField(new Blockly.FieldTextInput(''), 'VAR13') + .appendField(new Blockly.FieldTextInput(''), 'VAR14') + .appendField(new Blockly.FieldTextInput(''), 'VAR15') + .appendField(new Blockly.FieldTextInput(''), 'VAR16') + this.setOutput(true); + this.setInputsInline(false); + } +} + +export const get_keboards_value = { + init:function(){ + this.setColour(SENSOR_EXTERN_HUE); + this.appendDummyInput() + .appendField(new Blockly.FieldTextInput(''), 'VAR') + .appendField(Blockly.Msg.MIXLY_Keypad_GETKEY) + 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 9f4dbc34..d6dd28ee 100644 --- a/boards/default_src/micropython/generators/sensor_extern.js +++ b/boards/default_src/micropython/generators/sensor_extern.js @@ -1087,4 +1087,71 @@ export const weigh_sensor_get_weight = function (_, generator) { var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); var code = v + ".read_weight(10)"; return [code, generator.ORDER_ATOMIC]; +} + +export const line_tube_foot = function (_, generator) { + generator.definitions_['import_machine_Pin'] = "from machine import Pin"; + generator.definitions_['import_keypad_Keypad'] = "from keypad import Keypad"; + var pin1 = generator.valueToCode(this, 'PIN1', generator.ORDER_ATOMIC); + var pin2 = generator.valueToCode(this, 'PIN2', generator.ORDER_ATOMIC); + var pin3 = generator.valueToCode(this, 'PIN3', generator.ORDER_ATOMIC); + var pin4 = generator.valueToCode(this, 'PIN4', generator.ORDER_ATOMIC); + var code = '[Pin(' + pin1 +'),Pin(' + pin2 +'),Pin(' + pin3 +'),Pin(' + pin4 +')]'; + return [code, generator.ORDER_ATOMIC]; +} + +export const column_tube_foot = function (_, generator) { + generator.definitions_['import_machine_Pin'] = "from machine import Pin"; + generator.definitions_['import_keypad_Keypad'] = "from keypad import Keypad"; + var pin1 = generator.valueToCode(this, 'PIN1', generator.ORDER_ATOMIC); + var pin2 = generator.valueToCode(this, 'PIN2', generator.ORDER_ATOMIC); + var pin3 = generator.valueToCode(this, 'PIN3', generator.ORDER_ATOMIC); + var pin4 = generator.valueToCode(this, 'PIN4', generator.ORDER_ATOMIC); + var code = '[Pin(' + pin1 +'),Pin(' + pin2 +'),Pin(' + pin3 +'),Pin(' + pin4 +')]'; + return [code, generator.ORDER_ATOMIC]; +} + +export const define_keyboards = function (_, generator) { + generator.definitions_['import_machine_Pin'] = "from machine import Pin"; + generator.definitions_['import_keypad_Keypad'] = "from keypad import Keypad"; + var var1 = this.getFieldValue('VAR1'); + var var2 = this.getFieldValue('VAR2'); + var var3 = this.getFieldValue('VAR3'); + var var4 = this.getFieldValue('VAR4'); + var var5 = this.getFieldValue('VAR5'); + var var6 = this.getFieldValue('VAR6'); + var var7 = this.getFieldValue('VAR7'); + var var8 = this.getFieldValue('VAR8'); + var var9 = this.getFieldValue('VAR9'); + var var10 = this.getFieldValue('VAR10'); + var var11 = this.getFieldValue('VAR11'); + var var12 = this.getFieldValue('VAR12'); + var var13 = this.getFieldValue('VAR13'); + var var14 = this.getFieldValue('VAR14'); + var var15 = this.getFieldValue('VAR15'); + var var16 = this.getFieldValue('VAR16'); + var code = "[\n['"+var1+"','"+var2+"','"+var3+"','"+var4+"'],\n['"+var5+"','"+var6+"','"+var7+"','"+var8+"'],\n['"+var9+"','"+var10+"','"+var11+"','"+var12+"'],\n['"+var13+"','"+var14+"','"+var15+"','"+var16+"']]" + return [code, generator.ORDER_ATOMIC]; +} + +export const init_matrix_keyboard = function (_, generator) { + generator.definitions_['import_machine_Pin'] = "from machine import Pin"; + generator.definitions_['import_keypad_Keypad'] = "from keypad import Keypad"; + var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var argument1 = generator.valueToCode(this, 'VALUE1', + generator.ORDER_ASSIGNMENT) || 'None'; + var argument2 = generator.valueToCode(this, 'VALUE2', + generator.ORDER_ASSIGNMENT) || 'None'; + var argument3 = generator.valueToCode(this, 'VALUE3', + generator.ORDER_ASSIGNMENT) || 'None'; + var code = varName +'= Keypad('+ argument1 +','+argument2+','+argument3+')' + return code; +} + +export const get_keboards_value = function (_, generator) { + generator.definitions_['import_machine_Pin'] = "from machine import Pin"; + generator.definitions_['import_keypad_Keypad'] = "from keypad import Keypad"; + var varName = generator.variableDB_.getName(this.getFieldValue('VAR'), Blockly.Variables.NAME_TYPE); + var code = varName + '.read_keypad()' + return [code, generator.ORDER_ATOMIC]; } \ No newline at end of file diff --git a/boards/default_src/micropython_esp32s3/origin/config.json b/boards/default_src/micropython_esp32s3/origin/config.json index 60790603..ca17fc32 100644 --- a/boards/default_src/micropython_esp32s3/origin/config.json +++ b/boards/default_src/micropython_esp32s3/origin/config.json @@ -1,7 +1,8 @@ { "board": { "元控青春": "micropython:esp32s3:mixgo_nova", - "元控自强": "micropython:esp32s3:mixgo_sant" + "元控自强": "micropython:esp32s3:mixgo_sant", + "S3_generic":"micropython:esp32s3:generic" }, "language": "MicroPython", "burn": { diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml index 06f165d5..fe5b8152 100644 --- a/boards/default_src/micropython_esp32s3/template.xml +++ b/boards/default_src/micropython_esp32s3/template.xml @@ -1380,10 +1380,8 @@ - + m-hide='micropython:esp32s3:generic'> @@ -1542,7 +1540,7 @@ + m-hide='micropython:esp32s3:generic'> @@ -1829,7 +1827,7 @@ - + @@ -2587,7 +2585,7 @@ - + @@ -3104,7 +3102,7 @@ - + @@ -3895,36 +3893,7 @@ - - + @@ -4522,8 +4491,75 @@ + + KEYPAD_4_4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + A + 4 + 5 + 6 + B + 7 + 8 + 9 + C + * + 0 + # + D + + + + + KEYPAD_4_4 + + - + @@ -4958,7 +4994,7 @@ - + @@ -5967,7 +6003,7 @@ - + @@ -6386,7 +6422,7 @@ - + @@ -6751,43 +6787,8 @@ - - - + @@ -6953,7 +6954,7 @@ - + @@ -7327,7 +7328,7 @@ --> - + response diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js index 73e1e130..18a6d3ea 100644 --- a/common/msg/blockly/en.js +++ b/common/msg/blockly/en.js @@ -3964,4 +3964,7 @@ En.MIXLY_synchronize = 'Synchronize'; En.MIXLY_Display_long_text = 'Display long text'; En.MIXLY_BROADCAST_SYSTEM_TIME = 'Broadcast system time'; En.MIXLY_DETAILED = 'Detailed'; +En.MIXLY_line_tube_foot = 'line tube foot'; +En.MIXLY_column_tube_foot = 'column tube foot'; +En.MIXLY_DEFINE_KEYBOARDS= 'define the keyboard'; })(); diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js index 91c124de..f38a0ac5 100644 --- a/common/msg/blockly/zh-hans.js +++ b/common/msg/blockly/zh-hans.js @@ -4123,4 +4123,7 @@ ZhHans.MIXLY_synchronize = '实时刷新'; ZhHans.MIXLY_Display_long_text = '显示长文本'; ZhHans.MIXLY_BROADCAST_SYSTEM_TIME = '播报系统时间'; ZhHans.MIXLY_DETAILED = '详细地'; +ZhHans.MIXLY_line_tube_foot = '行管脚'; +ZhHans.MIXLY_column_tube_foot = '列管脚'; +ZhHans.MIXLY_DEFINE_KEYBOARDS= '定义键盘'; })(); \ No newline at end of file diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js index 1bf8a03f..00344fa6 100644 --- a/common/msg/blockly/zh-hant.js +++ b/common/msg/blockly/zh-hant.js @@ -4118,4 +4118,7 @@ ZhHant.MIXLY_synchronize = '實時刷新'; ZhHant.MIXLY_Display_long_text = '顯示長文本'; ZhHant.MIXLY_BROADCAST_SYSTEM_TIME = '播報系統時間'; ZhHant.MIXLY_DETAILED = '詳細地'; +ZhHant.MIXLY_line_tube_foot = '行管腳'; +ZhHant.MIXLY_column_tube_foot = '列管腳'; +ZhHant.MIXLY_DEFINE_KEYBOARDS= '定義鍵盤'; })(); \ No newline at end of file