增加S3_generic 和键盘矩阵

This commit is contained in:
Irene-Maxine
2025-06-03 15:10:07 +08:00
parent e312b3d55f
commit be654a5874
7 changed files with 254 additions and 81 deletions

View File

@@ -2299,4 +2299,99 @@ export const weigh_sensor_get_weight = {
this.setOutput(true);
this.setInputsInline(true);
}
};
};
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);
}
}

View File

@@ -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];
}

View File

@@ -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": {

View File

@@ -1380,10 +1380,8 @@
<block type="serial_readstr"></block>
<block type="serial_readline"></block>
</category>
<!--<category
id="catOnBoard" name="catOnBoard" colour="65">-->
<category id="catOnBoardSensor" name="catOnBoardSensor" colour="#947C54"
m-hide='micropython:esp32s2:generic'>
m-hide='micropython:esp32s3:generic'>
<block type="sensor_mixgo_button_is_pressed">
<value name="btn">
<shadow type="pins_button">
@@ -1542,7 +1540,7 @@
</category>
<category id="catOnBoardActuator" name="catOnBoardActuator" colour="#6C9858"
m-hide='micropython:esp32s2:generic'>
m-hide='micropython:esp32s3:generic'>
<block type="actuator_led_bright">
<value name="led">
<shadow type="number">
@@ -1829,7 +1827,7 @@
</value>
</block>
</category>
<category id="catOnBoardDisplay" colour='#78B5B4'>
<category id="catOnBoardDisplay" colour='#78B5B4' m-hide='micropython:esp32s3:generic'>
<block type="display_image_builtins_all"></block>
<block type="display_show_image">
<value name="data">
@@ -2587,7 +2585,7 @@
</block>
<block type="interaction_whether_to_interaction_SANT"></block>
</category>
<category id="catIot" colour="#2FAD7A">
<category id="catIot" colour="#2FAD7A" m-hide='micropython:esp32s3:generic'>
<category id="catMixIO" colour="#526FC3">
<block type="iot_wifi_connect">
<value name="WIFINAME">
@@ -3104,7 +3102,7 @@
</block>
</category>
</category>
<category id="catGroup" colour="140">
<category id="catGroup" colour="140" m-hide='micropython:esp32s3:generic'>
<category id="catBLE" colour="140">
<block type="communicate_bluetooth_central_init">
<value name="VAR">
@@ -3895,36 +3893,7 @@
</block>
</category>
</category>
<category id="catExternSensor" colour='#A58C5B'>
<!--
<block type="sensor_lm35">
<value name="PIN">
<shadow type="pins_analog_pin"></shadow>
</value>
</block>
<block type="sensor_dht11">
<value name="PIN">
<shadow type="pins_digital_pin"></shadow>
</value>
</block>
<block type="sensor_ds18x20">
<value name="PIN">
<shadow type="pins_digital_pin"></shadow>
</value>
</block>
<block type="HCSR04">
<value name="PIN1">
<shadow type="pins_digital_pin">
<field name="PIN">0</field>
</shadow>
</value>
<value name="PIN2">
<shadow type="pins_digital_pin">
<field name="PIN">4</field>
</shadow>
</value>
</block>
-->
<category id="catExternSensor" colour='#A58C5B' m-hide='micropython:esp32s3:generic'>
<block type="communicate_i2c_init">
<value name="SUB">
<shadow type="variables_get">
@@ -4522,8 +4491,75 @@
</shadow>
</value>
</block>
<block type="init_matrix_keyboard">
<field name ="VAR">KEYPAD_4_4</field>
<value name="VALUE1">
<block type="line_tube_foot">
<value name="PIN1">
<shadow type="pins_digital_pin">
</shadow>
</value>
<value name="PIN2">
<shadow type="pins_digital_pin">
</shadow>
</value>
<value name="PIN3">
<shadow type="pins_digital_pin">
</shadow>
</value>
<value name="PIN4">
<shadow type="pins_digital_pin">
</shadow>
</value>
</block>
</value>
<value name="VALUE2">
<block type="column_tube_foot">
<value name="PIN1">
<shadow type="pins_digital_pin">
</shadow>
</value>
<value name="PIN2">
<shadow type="pins_digital_pin">
</shadow>
</value>
<value name="PIN3">
<shadow type="pins_digital_pin">
</shadow>
</value>
<value name="PIN4">
<shadow type="pins_digital_pin">
</shadow>
</value>
</block>
</value>
<value name="VALUE3">
<block type="define_keyboards">
<field name ="VAR1">1</field>
<field name ="VAR2">2</field>
<field name ="VAR3">3</field>
<field name ="VAR4">A</field>
<field name ="VAR5">4</field>
<field name ="VAR6">5</field>
<field name ="VAR7">6</field>
<field name ="VAR8">B</field>
<field name ="VAR9">7</field>
<field name ="VAR10">8</field>
<field name ="VAR11">9</field>
<field name ="VAR12">C</field>
<field name ="VAR13">*</field>
<field name ="VAR14">0</field>
<field name ="VAR15">#</field>
<field name ="VAR16">D</field>
</block>
</value>
</block>
<block type="get_keboards_value">
<field name ="VAR">KEYPAD_4_4</field>
</block>
</category>
<category id="catExternActuator" colour='#74A55B'>
<category id="catExternActuator" colour='#74A55B' m-hide='micropython:esp32s3:generic'>
<block type="esp32_music_pitch_init">
<value name="SUB">
<shadow type="variables_get">
@@ -4958,7 +4994,7 @@
</block>
<block type="nova_g1_spk_en"></block>
</category>
<category id="catExternMonitor" colour='5BA5A5'>
<category id="catExternMonitor" colour='5BA5A5' m-hide='micropython:esp32s3:generic'>
<category id="catMatrix" colour='5BA5A5'>
<block type="communicate_i2c_init">
<value name="SUB">
@@ -5967,7 +6003,7 @@
</block>
</category>
</category>
<category id="catAIsensor" colour="#90A244">
<category id="catAIsensor" colour="#90A244" m-hide='micropython:esp32s3:generic'>
<block type="serial_softserial_new">
<value name="RX">
<shadow type="pins_digital_pin">
@@ -6386,7 +6422,7 @@
</value>
</block>
</category>
<category id="catAIsensor2" colour="#90A244">
<category id="catAIsensor2" colour="#90A244" m-hide='micropython:esp32s3:generic'>
<block type="serial_softserial_new">
<value name="RX">
<shadow type="pins_digital_pin">
@@ -6751,43 +6787,8 @@
</shadow>
</value>
</block>
<!-- <block type="variables_set">
<field name="VAR">info</field>
<value name="VALUE">
<block type="ai_sensor_yolo_recognize">
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">ai_sensor</field>
</shadow>
</value>
<value name="VAR1">
<shadow type="tuple_create_with_text_return">
<field name="TEXT">0.1606, 0.3562, 0.4712, 0.9568, 0.9877, 1.9108, 1.8761, 3.5310, 3.4423,
5.6823</field>
</shadow>
</value>
<value name="VAR2">
<shadow type="text">
<field name="TEXT">/sd/masks.kmodel</field>
</shadow>
</value>
<value name="VAR4">
<shadow type="text">
<field name="TEXT">外部模型加载</field>
</shadow>
</value>
</block>
</block>
<block type="ai_sensor_yolo_recognize_result">
<value name="VAR">
<shadow type="variables_get">
<field name="VAR">objects</field>
</shadow>
</value>
</block> -->
</category>
<category id="catFile" colour="0">
<category id="catFile" colour="0" m-hide='micropython:esp32s3:generic'>
<block type="sdcard_use_spi_init">
<value name="SPISUB">
<block type="communicate_spi_onboard"></block>
@@ -6953,7 +6954,7 @@
</block>
</category>
<category id="catNetwork" colour="225">
<category id="catNetwork" colour="225" m-hide='micropython:esp32s3:generic'>
<block type="iot_wifi_connect">
<value name="WIFINAME">
<shadow type="text">
@@ -7327,7 +7328,7 @@
</block>
<block type="urequests_response"></block> -->
</category>
<category id="catCommunicate" colour="#3288dd">
<category id="catCommunicate" colour="#3288dd" m-hide='micropython:esp32s3:generic'>
<block type="variables_set">
<field name="VAR">response</field>
<value name="VALUE">

View File

@@ -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';
})();

View File

@@ -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= '定义键盘';
})();

View File

@@ -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= '定義鍵盤';
})();