feat: sync micropython esp32 family source configs
This commit is contained in:
3
mixly/boards/default_src/micropython_esp32c5/.npmignore
Normal file
3
mixly/boards/default_src/micropython_esp32c5/.npmignore
Normal file
@@ -0,0 +1,3 @@
|
||||
node_modules
|
||||
build
|
||||
origin
|
||||
@@ -0,0 +1,196 @@
|
||||
import { Profile } from 'mixly';
|
||||
|
||||
const pins = {};
|
||||
|
||||
pins["元控自立(SOWL)"] = {
|
||||
description: "MicroPython[ESP32C5 MixGo SOWL]",
|
||||
digital_pin: Profile.generate(['0-14', '23-28']),
|
||||
input_pin: Profile.generate(['0-14', '23-28']),
|
||||
output_pin: Profile.generate(['0-14', '23-28']),
|
||||
pwm_input: Profile.generate(['0-14', '23-28'], 'pwm', 'pwm'),
|
||||
analog_input: Profile.generate(['1-6'], 'adc', 'adc'),
|
||||
pwm_output: Profile.generate(['0-14', '23-28'], 'pwm', 'pwm'),
|
||||
analog_output: Profile.generate(['1-6'], 'adc', 'adc'),
|
||||
espnow_channel: Profile.generate(['1-13']),
|
||||
haskylens_model: Profile.generate(['0-4']),
|
||||
digital: Profile.generate(['0-14', '23-28'], 'pin', 'pin'),
|
||||
pwm_pin: Profile.generate(['0-14', '23-28']),
|
||||
pwm: Profile.generate(['0-14', '23-28'], 'pwm', 'pwm'),
|
||||
analog_pin: Profile.generate(['1-6']),
|
||||
analog: Profile.generate(['1-6'], 'adc', 'adc'),
|
||||
touch: Profile.generate(['1-14'], 'tc', 'tc'),
|
||||
touch_pin: Profile.generate(['1-14']),
|
||||
button: [["B1", "B1key"], ["B2", "B2key"], ["A1", "A1key"], ["A2", "A2key"], ["A3", "A3key"], ["A4", "A4key"]],
|
||||
buttonB: [["B1", "B1key"], ["B2", "B2key"]],
|
||||
axis: Profile.generate(['0-4']),
|
||||
exlcdh: Profile.generate(['0-15']),
|
||||
exlcdv: Profile.generate(['0-7']),
|
||||
brightness: Profile.generate(['0-9']),
|
||||
tts_voice: Profile.generate(['0-16']),
|
||||
tts_builtin_music: Profile.generate(['0-47']),
|
||||
tts_bgmusic: Profile.generate(['0-15']),
|
||||
builtinimg: [
|
||||
["Heart", "expression_picture.Heart"],
|
||||
["Angry", "expression_picture.Angry"],
|
||||
["Bored", "expression_picture.Bored"],
|
||||
["Confused", "expression_picture.Confused"],
|
||||
["Happy", "expression_picture.Happy"],
|
||||
["Paper", "expression_picture.Paper"],
|
||||
["Rock", "expression_picture.Rock"],
|
||||
["Sad", "expression_picture.Sad"],
|
||||
["Scissors", "expression_picture.Scissors"],
|
||||
["Silly", "expression_picture.Silly"],
|
||||
["Sleep", "expression_picture.Sleep"],
|
||||
["Small_heart", "expression_picture.Small_heart"],
|
||||
["Small_paper", "expression_picture.Small_paper"],
|
||||
["Small_rock", "expression_picture.Small_rock"],
|
||||
["Small_scissors", "expression_picture.Small_scissors"],
|
||||
["Smile", "expression_picture.Smile"],
|
||||
["Surprise", "expression_picture.Surprise"],
|
||||
["Wonderful", "expression_picture.Wonderful"],
|
||||
["Eyes_Angry", "eye_picture.Eyes_Angry"],
|
||||
["Awake", "eye_picture.Awake"],
|
||||
["Black_eye", "eye_picture.Black_eye"],
|
||||
["Bottom_left", "eye_picture.Bottom_left"],
|
||||
["Bottom_right", "eye_picture.Bottom_right"],
|
||||
["Crazy_1", "eye_picture.Crazy_1"],
|
||||
["Crazy_2", "eye_picture.Crazy_2"],
|
||||
["Disappointed", "eye_picture.Disappointed"],
|
||||
["Dizzy", "eye_picture.Dizzy"],
|
||||
["Down", "eye_picture.Down"],
|
||||
["Evil", "eye_picture.Evil"],
|
||||
["Hurt", "eye_picture.Hurt"],
|
||||
["Knocked_out", "eye_picture.Knocked_out"],
|
||||
["Love", "eye_picture.Love"],
|
||||
["Middle_left", "eye_picture.Middle_left"],
|
||||
["Middle_right", "eye_picture.Middle_right"],
|
||||
["Neutral", "eye_picture.Neutral"],
|
||||
["Nuclear", "eye_picture.Nuclear"],
|
||||
["Pinch_left", "eye_picture.Pinch_left"],
|
||||
["Pinch_middle", "eye_picture.Pinch_middle"],
|
||||
["Pinch_right", "eye_picture.Pinch_right"],
|
||||
["Tear", "eye_picture.Tear"],
|
||||
["Tired_left", "eye_picture.Tired_left"],
|
||||
["Tired_middle", "eye_picture.Tired_middle"],
|
||||
["Tired_right", "eye_picture.Tired_right"],
|
||||
["Toxic", "eye_picture.Toxic"],
|
||||
["Up", "eye_picture.Up"],
|
||||
["Winking", "eye_picture.Winking"],
|
||||
["Accept", "informatio_picture.Accept"],
|
||||
["Backward", "informatio_picture.Backward"],
|
||||
["Decline", "informatio_picture.Decline"],
|
||||
["Forward", "informatio_picture.Forward"],
|
||||
["Left", "informatio_picture.Left"],
|
||||
["No_go", "informatio_picture.No_go"],
|
||||
["Question_mark", "informatio_picture.Question_mark"],
|
||||
["Right", "informatio_picture.Right"],
|
||||
["Stop_1", "informatio_picture.Stop_1"],
|
||||
["Stop_2", "informatio_picture.Stop_2"],
|
||||
["Thumbs_down", "informatio_picture.Thumbs_down"],
|
||||
["Thumbs_up", "informatio_picture.Thumbs_up"],
|
||||
["Warning", "informatio_picture.Warning"],
|
||||
["Bomb", "object_picture.Bomb"],
|
||||
["Boom", "object_picture.Boom"],
|
||||
["DOOR_CLOSE", "object_picture.DOOR_CLOSE"],
|
||||
["DOOR_OPEN", "object_picture.DOOR_OPEN"],
|
||||
["DOOR_OPENING", "object_picture.DOOR_OPENING"],
|
||||
["Fire", "object_picture.Fire"],
|
||||
["Flowers", "object_picture.Flowers"],
|
||||
["Forest", "object_picture.Forest"],
|
||||
["Lightning", "object_picture.Lightning"],
|
||||
["Light_off", "object_picture.Light_off"],
|
||||
["Light_on", "object_picture.Light_on"],
|
||||
["Night", "object_picture.Night"],
|
||||
["Pirate", "object_picture.Pirate"],
|
||||
["Snow", "object_picture.Snow"],
|
||||
["Target", "object_picture.Target"],
|
||||
["Bar_0", "progres_picture.Bar_0"],
|
||||
["Bar_1", "progres_picture.Bar_1"],
|
||||
["Bar_2", "progres_picture.Bar_2"],
|
||||
["Bar_3", "progres_picture.Bar_3"],
|
||||
["Bar_4", "progres_picture.Bar_4"],
|
||||
["Dial_0", "progres_picture.Dial_0"],
|
||||
["Dial_1", "progres_picture.Dial_1"],
|
||||
["Dial_2", "progres_picture.Dial_2"],
|
||||
["Dial_3", "progres_picture.Dial_3"],
|
||||
["Dial_4", "progres_picture.Dial_4"],
|
||||
["Dots_0", "progres_picture.Dots_0"],
|
||||
["Dots_1", "progres_picture.Dots_1"],
|
||||
["Dots_2", "progres_picture.Dots_2"],
|
||||
["Dots_3", "progres_picture.Dots_3"],
|
||||
["Hourglass_0", "progres_picture.Hourglass_0"],
|
||||
["Hourglass_1", "progres_picture.Hourglass_1"],
|
||||
["Hourglass_2", "progres_picture.Hourglass_2"],
|
||||
["Timer_0", "progres_picture.Timer_0"],
|
||||
["Timer_1", "progres_picture.Timer_1"],
|
||||
["Timer_2", "progres_picture.Timer_2"],
|
||||
["Timer_3", "progres_picture.Timer_3"],
|
||||
["Timer_4", "progres_picture.Timer_4"],
|
||||
["Water_level_0", "progres_picture.Water_level_0"],
|
||||
["Water_level_1", "progres_picture.Water_level_1"],
|
||||
["Water_level_2", "progres_picture.Water_level_2"],
|
||||
["Water_level_3", "progres_picture.Water_level_3"],
|
||||
["YES", "informatio_picture.YES"],
|
||||
["NO", "informatio_picture.NO"]
|
||||
],
|
||||
builtinimg_extern: [["HEART", "matrix32x12.Matrix.HEART"], ["HEART_SMALL", "matrix32x12.Matrix.HEART_SMALL"], ["HAPPY", "matrix32x12.Matrix.HAPPY"], ["SAD", "matrix32x12.Matrix.SAD"], ["SMILE", "matrix32x12.Matrix.SMILE"], ["SILLY", "matrix32x12.Matrix.SILLY"], ["FABULOUS", "matrix32x12.Matrix.FABULOUS"], ["SURPRISED", "matrix32x12.Matrix.SURPRISED"], ["ASLEEP", "matrix32x12.Matrix.ASLEEP"], ["ANGRY", "matrix32x12.Matrix.ANGRY"], ["CONFUSED", "matrix32x12.Matrix.CONFUSED"], ["NO", "matrix32x12.Matrix.NO"], ["YES", "matrix32x12.Matrix.YES"], ["LEFT_ARROW", "matrix32x12.Matrix.LEFT_ARROW"], ["RIGHT_ARROW", "matrix32x12.Matrix.RIGHT_ARROW"], ["DRESS", "matrix32x12.Matrix.DRESS"], ["TRANSFORMERS", "matrix32x12.Matrix.TRANSFORMERS"], ["SCISSORS", "matrix32x12.Matrix.SCISSORS"], ["EXIT", "matrix32x12.Matrix.EXIT"], ["TREE", "matrix32x12.Matrix.TREE"], ["PACMAN", "matrix32x12.Matrix.PACMAN"], ["TARGET", "matrix32x12.Matrix.TARGET"], ["TSHIRT", "matrix32x12.Matrix.TSHIRT"], ["ROLLERSKATE", "matrix32x12.Matrix.ROLLERSKATE"], ["DUCK", "matrix32x12.Matrix.DUCK"], ["HOUSE", "matrix32x12.Matrix.HOUSE"], ["TORTOISE", "matrix32x12.Matrix.TORTOISE"], ["BUTTERFLY", "matrix32x12.Matrix.BUTTERFLY"], ["STICKFIGURE", "matrix32x12.Matrix.STICKFIGURE"], ["GHOST", "matrix32x12.Matrix.GHOST"], ["PITCHFORK", "matrix32x12.Matrix.PITCHFORK"], ["onboard_music_QUAVERS", "matrix32x12.Matrix.onboard_music_QUAVERS"], ["onboard_music_QUAVER", "matrix32x12.Matrix.onboard_music_QUAVER"], ["onboard_music_CROTCHET", "matrix32x12.Matrix.onboard_music_CROTCHET"], ["COW", "matrix32x12.Matrix.COW"], ["RABBIT", "matrix32x12.Matrix.RABBIT"], ["SQUARE_SMALL", "matrix32x12.Matrix.SQUARE_SMALL"], ["SQUARE", "matrix32x12.Matrix.SQUARE"], ["DIAMOND_SMALL", "matrix32x12.Matrix.DIAMOND_SMALL"], ["DIAMOND", "matrix32x12.Matrix.DIAMOND"], ["CHESSBOARD", "matrix32x12.Matrix.CHESSBOARD"], ["TRIANGLE_LEFT", "matrix32x12.Matrix.TRIANGLE_LEFT"], ["TRIANGLE", "matrix32x12.Matrix.TRIANGLE"], ["SNAKE", "matrix32x12.Matrix.SNAKE"], ["UMBRELLA", "matrix32x12.Matrix.UMBRELLA"], ["SKULL", "matrix32x12.Matrix.SKULL"], ["GIRAFFE", "matrix32x12.Matrix.GIRAFFE"], ["SWORD", "matrix32x12.Matrix.SWORD"]],
|
||||
imglist: [["ALL_CLOCKS", "matrix.Image.ALL_CLOCKS"], ["ALL_ARROWS", "matrix.Image.ALL_ARROWS"]],
|
||||
playlist: [["DADADADUM", "onboard_music.DADADADUM"], ["ENTERTAINER", "onboard_music.ENTERTAINER"], ["PRELUDE", "onboard_music.PRELUDE"], ["ODE", "onboard_music.ODE"], ["NYAN", "onboard_music.NYAN"], ["RINGTONE", "onboard_music.RINGTONE"], ["FUNK", "onboard_music.FUNK"], ["BLUES", "onboard_music.BLUES"], ["BIRTHDAY", "onboard_music.BIRTHDAY"], ["WEDDING", "onboard_music.WEDDING"], ["FUNERAL", "onboard_music.FUNERAL"], ["PUNCHLINE", "onboard_music.PUNCHLINE"], ["PYTHON", "onboard_music.PYTHON"], ["BADDY", "onboard_music.BADDY"], ["CHASE", "onboard_music.CHASE"], ["BA_DING", "onboard_music.BA_DING"], ["WAWAWAWAA", "onboard_music.WAWAWAWAA"], ["JUMP_UP", "onboard_music.JUMP_UP"], ["JUMP_DOWN", "onboard_music.JUMP_DOWN"], ["POWER_UP", "onboard_music.POWER_UP"], ["POWER_DOWN", "onboard_music.POWER_DOWN"]],
|
||||
playlist_extern: [["DADADADUM", "DADADADUM"], ["ENTERTAINER", "ENTERTAINER"], ["PRELUDE", "PRELUDE"], ["ODE", "ODE"], ["NYAN", "NYAN"], ["RINGTONE", "RINGTONE"], ["FUNK", "FUNK"], ["BLUES", "BLUES"], ["BIRTHDAY", "BIRTHDAY"], ["WEDDING", "WEDDING"], ["FUNERAL", "FUNERAL"], ["PUNCHLINE", "PUNCHLINE"], ["PYTHON", "PYTHON"], ["BADDY", "BADDY"], ["CHASE", "CHASE"], ["BA_DING", "BA_DING"], ["WAWAWAWAA", "WAWAWAWAA"], ["JUMP_UP", "JUMP_UP"], ["JUMP_DOWN", "JUMP_DOWN"], ["POWER_UP", "POWER_UP"], ["POWER_DOWN", "POWER_DOWN"]],
|
||||
tone_notes: [
|
||||
["NOTE_C3", "131"], ["NOTE_D3", "147"], ["NOTE_E3", "165"], ["NOTE_F3", "175"], ["NOTE_G3", "196"], ["NOTE_A3", "220"], ["NOTE_B3", "247"],
|
||||
["NOTE_C4", "262"], ["NOTE_D4", "294"], ["NOTE_E4", "330"], ["NOTE_F4", "349"], ["NOTE_G4", "392"], ["NOTE_A4", "440"], ["NOTE_B4", "494"],
|
||||
["NOTE_C5", "523"], ["NOTE_D5", "587"], ["NOTE_E5", "659"], ["NOTE_F5", "698"], ["NOTE_G5", "784"], ["NOTE_A5", "880"], ["NOTE_B5", "988"]
|
||||
],
|
||||
serial_pin: [["pin0", "0"], ["pin1", "1"], ["pin2", "2"], ["pin8", "8"], ["pin12", "12"], ["pin13", "13"], ["pin14", "14"], ["pin15", "15"], ["pin16", "16"]],
|
||||
radio_power: [['0', '0'], ['1', '1'], ['2', '2'], ['3', '3'], ['4', '4'], ['5', '5'], ['6', '6'], ['7', '7']],
|
||||
radio_datarate: [["1Mbit", "RATE_1MBIT"], ["250Kbit", "RATE_250KBIT"], ["2Mbit", "RATE_2MBIT"]],
|
||||
one_more: [["ONE_SHOT", "ONE_SHOT"], ["PERIODIC", "PERIODIC"]],
|
||||
digital_dot: [["0", "0"], ["1", "1"], ["2", "2"]],
|
||||
};
|
||||
|
||||
pins["ESP32C5 Generic"] = {
|
||||
description: "MicroPython[ESP32C5 Generic]",
|
||||
digital_pin: Profile.generate(['0-14', '23-28']),
|
||||
input_pin: Profile.generate(['0-14', '23-28']),
|
||||
output_pin: Profile.generate(['0-14', '23-28']),
|
||||
pwm_input: Profile.generate(['0-14', '23-28'], 'pwm', 'pwm'),
|
||||
analog_input: Profile.generate(['1-6'], 'adc', 'adc'),
|
||||
pwm_output: Profile.generate(['0-14', '23-28'], 'pwm', 'pwm'),
|
||||
analog_output: Profile.generate(['1-6'], 'adc', 'adc'),
|
||||
espnow_channel: Profile.generate(['1-13']),
|
||||
haskylens_model: Profile.generate(['0-4']),
|
||||
digital: Profile.generate(['0-14', '23-28'], 'pin', 'pin'),
|
||||
pwm_pin: Profile.generate(['0-14', '23-28']),
|
||||
pwm: Profile.generate(['0-14', '23-28'], 'pwm', 'pwm'),
|
||||
analog_pin: Profile.generate(['1-6']),
|
||||
analog: Profile.generate(['1-6'], 'adc', 'adc'),
|
||||
touch: Profile.generate(['1-14'], 'tc', 'tc'),
|
||||
touch_pin: Profile.generate(['1-14']),
|
||||
button: [["B1", "B1key"], ["B2", "B2key"], ["A1", "A1key"], ["A2", "A2key"], ["A3", "A3key"], ["A4", "A4key"]],
|
||||
buttonB: [["B1", "B1key"], ["B2", "B2key"]],
|
||||
axis: Profile.generate(['0-4']),
|
||||
exlcdh: Profile.generate(['0-15']),
|
||||
exlcdv: Profile.generate(['0-7']),
|
||||
brightness: Profile.generate(['0-9']),
|
||||
tts_voice: Profile.generate(['0-16']),
|
||||
tts_builtin_music: Profile.generate(['0-47']),
|
||||
tts_bgmusic: Profile.generate(['0-15']),
|
||||
builtinimg: pins["元控自立(SOWL)"].builtinimg,
|
||||
builtinimg_extern: [["HEART", "matrix32x12.Matrix.HEART"], ["HEART_SMALL", "matrix32x12.Matrix.HEART_SMALL"], ["HAPPY", "matrix32x12.Matrix.HAPPY"], ["SAD", "matrix32x12.Matrix.SAD"], ["SMILE", "matrix32x12.Matrix.SMILE"], ["SILLY", "matrix32x12.Matrix.SILLY"], ["FABULOUS", "matrix32x12.Matrix.FABULOUS"], ["SURPRISED", "matrix32x12.Matrix.SURPRISED"], ["ASLEEP", "matrix32x12.Matrix.ASLEEP"], ["ANGRY", "matrix32x12.Matrix.ANGRY"], ["CONFUSED", "matrix32x12.Matrix.CONFUSED"], ["NO", "matrix32x12.Matrix.NO"], ["YES", "matrix32x12.Matrix.YES"], ["LEFT_ARROW", "matrix32x12.Matrix.LEFT_ARROW"], ["RIGHT_ARROW", "matrix32x12.Matrix.RIGHT_ARROW"], ["DRESS", "matrix32x12.Matrix.DRESS"], ["TRANSFORMERS", "matrix32x12.Matrix.TRANSFORMERS"], ["SCISSORS", "matrix32x12.Matrix.SCISSORS"], ["EXIT", "matrix32x12.Matrix.EXIT"], ["TREE", "matrix32x12.Matrix.TREE"], ["PACMAN", "matrix32x12.Matrix.PACMAN"], ["TARGET", "matrix32x12.Matrix.TARGET"], ["TSHIRT", "matrix32x12.Matrix.TSHIRT"], ["ROLLERSKATE", "matrix32x12.Matrix.ROLLERSKATE"], ["DUCK", "matrix32x12.Matrix.DUCK"], ["HOUSE", "matrix32x12.Matrix.HOUSE"], ["TORTOISE", "matrix32x12.Matrix.TORTOISE"], ["BUTTERFLY", "matrix32x12.Matrix.BUTTERFLY"], ["STICKFIGURE", "matrix32x12.Matrix.STICKFIGURE"], ["GHOST", "matrix32x12.Matrix.GHOST"], ["PITCHFORK", "matrix32x12.Matrix.PITCHFORK"], ["onboard_music_QUAVERS", "matrix32x12.Matrix.onboard_music_QUAVERS"], ["onboard_music_QUAVER", "matrix32x12.Matrix.onboard_music_QUAVER"], ["onboard_music_CROTCHET", "matrix32x12.Matrix.onboard_music_CROTCHET"], ["COW", "matrix32x12.Matrix.COW"], ["RABBIT", "matrix32x12.Matrix.RABBIT"], ["SQUARE_SMALL", "matrix32x12.Matrix.SQUARE_SMALL"], ["SQUARE", "matrix32x12.Matrix.SQUARE"], ["DIAMOND_SMALL", "matrix32x12.Matrix.DIAMOND_SMALL"], ["DIAMOND", "matrix32x12.Matrix.DIAMOND"], ["CHESSBOARD", "matrix32x12.Matrix.CHESSBOARD"], ["TRIANGLE_LEFT", "matrix32x12.Matrix.TRIANGLE_LEFT"], ["TRIANGLE", "matrix32x12.Matrix.TRIANGLE"], ["SNAKE", "matrix32x12.Matrix.SNAKE"], ["UMBRELLA", "matrix32x12.Matrix.UMBRELLA"], ["SKULL", "matrix32x12.Matrix.SKULL"], ["GIRAFFE", "matrix32x12.Matrix.GIRAFFE"], ["SWORD", "matrix32x12.Matrix.SWORD"]],
|
||||
imglist: [["ALL_CLOCKS", "matrix.Image.ALL_CLOCKS"], ["ALL_ARROWS", "matrix.Image.ALL_ARROWS"]],
|
||||
playlist: [["DADADADUM", ".DADADADUM"], ["ENTERTAINER", ".ENTERTAINER"], ["PRELUDE", ".PRELUDE"], ["ODE", ".ODE"], ["NYAN", ".NYAN"], ["RINGTONE", ".RINGTONE"], ["FUNK", ".FUNK"], ["BLUES", ".BLUES"], ["BIRTHDAY", ".BIRTHDAY"], ["WEDDING", ".WEDDING"], ["FUNERAL", ".FUNERAL"], ["PUNCHLINE", ".PUNCHLINE"], ["PYTHON", ".PYTHON"], ["BADDY", ".BADDY"], ["CHASE", ".CHASE"], ["BA_DING", ".BA_DING"], ["WAWAWAWAA", ".WAWAWAWAA"], ["JUMP_UP", ".JUMP_UP"], ["JUMP_DOWN", ".JUMP_DOWN"], ["POWER_UP", ".POWER_UP"], ["POWER_DOWN", ".POWER_DOWN"]],
|
||||
playlist_extern: [["DADADADUM", "DADADADUM"], ["ENTERTAINER", "ENTERTAINER"], ["PRELUDE", "PRELUDE"], ["ODE", "ODE"], ["NYAN", "NYAN"], ["RINGTONE", "RINGTONE"], ["FUNK", "FUNK"], ["BLUES", "BLUES"], ["BIRTHDAY", "BIRTHDAY"], ["WEDDING", "WEDDING"], ["FUNERAL", "FUNERAL"], ["PUNCHLINE", "PUNCHLINE"], ["PYTHON", "PYTHON"], ["BADDY", "BADDY"], ["CHASE", "CHASE"], ["BA_DING", "BA_DING"], ["WAWAWAWAA", "WAWAWAWAA"], ["JUMP_UP", "JUMP_UP"], ["JUMP_DOWN", "JUMP_DOWN"], ["POWER_UP", "POWER_UP"], ["POWER_DOWN", "POWER_DOWN"]],
|
||||
tone_notes: [
|
||||
["NOTE_C3", "131"], ["NOTE_D3", "147"], ["NOTE_E3", "165"], ["NOTE_F3", "175"], ["NOTE_G3", "196"], ["NOTE_A3", "220"], ["NOTE_B3", "247"],
|
||||
["NOTE_C4", "262"], ["NOTE_D4", "294"], ["NOTE_E4", "330"], ["NOTE_F4", "349"], ["NOTE_G4", "392"], ["NOTE_A4", "440"], ["NOTE_B4", "494"],
|
||||
["NOTE_C5", "523"], ["NOTE_D5", "587"], ["NOTE_E5", "659"], ["NOTE_F5", "698"], ["NOTE_G5", "784"], ["NOTE_A5", "880"], ["NOTE_B5", "988"]
|
||||
],
|
||||
serial_pin: [["pin0", "0"], ["pin1", "1"], ["pin2", "2"], ["pin8", "8"], ["pin12", "12"], ["pin13", "13"], ["pin14", "14"], ["pin15", "15"], ["pin16", "16"]],
|
||||
radio_power: [['0', '0'], ['1', '1'], ['2', '2'], ['3', '3'], ['4', '4'], ['5', '5'], ['6', '6'], ['7', '7']],
|
||||
radio_datarate: [["1Mbit", "RATE_1MBIT"], ["250Kbit", "RATE_250KBIT"], ["2Mbit", "RATE_2MBIT"]],
|
||||
one_more: [["ONE_SHOT", "ONE_SHOT"], ["PERIODIC", "PERIODIC"]],
|
||||
digital_dot: [["0", "0"], ["1", "1"], ["2", "2"]],
|
||||
};
|
||||
|
||||
export default pins;
|
||||
259
mixly/boards/default_src/micropython_esp32c5/blocks/inout.js
Normal file
259
mixly/boards/default_src/micropython_esp32c5/blocks/inout.js
Normal file
@@ -0,0 +1,259 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
const BASE_HUE = 20; //'#ae3838';//40;
|
||||
|
||||
export const inout_highlow = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_HIGH, "HIGH"], [Blockly.Msg.MIXLY_LOW, "LOW"]]), 'BOOL')
|
||||
this.setOutput(true, Boolean);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_HIGHLOW_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_digital_write = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_Digital_PINMODEOUT)
|
||||
.setCheck(Number);
|
||||
this.appendValueInput("STAT")
|
||||
.appendField(Blockly.Msg.MIXLY_STAT)
|
||||
.setCheck([Number, Boolean]);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setInputsInline(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_DIGITAL_WRITE_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_digital_read = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)
|
||||
.appendField(Blockly.Msg.MIXLY_Digital_PINMODEIN)
|
||||
.setCheck(Number);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_ESP32_MACHINE_VALUE)
|
||||
this.setInputsInline(true);
|
||||
this.setOutput(true, [Boolean, Number]);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_DIGITAL_READ_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_analog_write = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField("DAC" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)
|
||||
.setCheck(Number);
|
||||
this.appendValueInput("NUM", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_VALUE2)
|
||||
.setCheck(Number);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_analog_write_set = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_Analog_PINMODEOUT)
|
||||
.setCheck(Number);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_mSecond, "period"],
|
||||
[Blockly.Msg.MIXLY_uSecond, "period_microseconds"]
|
||||
]), "key");
|
||||
this.appendValueInput("NUM", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_STAT)
|
||||
.setCheck(Number);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_SET_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_analog_atten = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_Analog_PINMODEIN)
|
||||
.setCheck(Number);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_ESP32_REF_VOLTAGE + Blockly.Msg.MIXLY_STAT)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
["3.3V", "machine.ADC.ATTN_11DB"],
|
||||
["2.2V", "machine.ADC.ATTN_6DB"],
|
||||
["1.5V", "machine.ADC.ATTN_2_5DB"],
|
||||
["1.2V", "machine.ADC.ATTN_0DB"]
|
||||
]), "atten");
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_ATTEN_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
export const inout_pin_pressed = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
this.appendValueInput('pin')
|
||||
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_GET)
|
||||
.appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR);
|
||||
// this.appendDummyInput()
|
||||
// .appendField(Blockly.Msg.MIXLY_IS_TOUCHED);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_ESP32_MACHINE_VALUE)
|
||||
this.setOutput(true, Number);
|
||||
this.setInputsInline(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_pin_attachInterrupt = {
|
||||
init: function () {
|
||||
this.setColour(20);
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_ATTACHINTERRUPT_PIN)
|
||||
.setCheck(Number);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_MODE)
|
||||
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.MIXLY_RISING, "machine.Pin.IRQ_RISING"], [Blockly.Msg.MIXLY_FALLING, "machine.Pin.IRQ_FALLING"], [Blockly.Msg.MIXLY_CHANGE, "(machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING)"]]), "mode");
|
||||
this.appendValueInput('DO')
|
||||
.appendField(Blockly.Msg.MIXLY_DO)
|
||||
this.setPreviousStatement(true);
|
||||
this.setNextStatement(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_ATTACHINTERRUPT_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_digital_init = {
|
||||
init: function () {
|
||||
this.setColour(20);
|
||||
this.appendDummyInput()
|
||||
.appendField(Blockly.Msg.MIXLY_SETUP)
|
||||
.appendField(new Blockly.FieldTextInput('pin#'), 'PIN_OBJ');
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)
|
||||
// .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_MODE+Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
[Blockly.Msg.MIXLY_Digital_PINMODEOUT, "machine.Pin.OUT"],
|
||||
[Blockly.Msg.MIXLY_Digital_PINMODEIN, "machine.Pin.IN"],
|
||||
[Blockly.Msg.MIXLY_PINMODEPULLUP, "machine.Pin.IN, machine.Pin.PULL_UP"],
|
||||
[Blockly.Msg.MIXLY_PINMODEPULLDOWN, "machine.Pin.IN, machine.Pin.PULL_DOWN"]
|
||||
]), "MODE")
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_PIN)
|
||||
.setCheck(Number);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setInputsInline(true);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_DIGITAL_INIT_TOOLTIP);
|
||||
},
|
||||
getVars: function () {
|
||||
return [this.getFieldValue('PIN_OBJ') == 'pin#' ? null : this.getFieldValue('PIN_OBJ')];
|
||||
},
|
||||
renameVar: function (oldName, newName) {
|
||||
if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {
|
||||
this.setTitleValue(newName, 'PIN_OBJ');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_analog_write_init = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
// this.appendValueInput("PIN", Number)
|
||||
// .appendField(Blockly.Msg.MIXLY_SETUP)
|
||||
// .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)
|
||||
// .appendField('pwm')
|
||||
// .setCheck(Number);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_SETUP)
|
||||
.appendField(new Blockly.FieldTextInput('dac#'), 'PIN_OBJ')
|
||||
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)
|
||||
this.appendDummyInput("")
|
||||
.appendField("DAC" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)
|
||||
// .appendField('dac')
|
||||
// .appendField(new Blockly.FieldDropdown(profile.default.dac_pin),"PIN")
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_PIN)
|
||||
.setCheck(Number);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_ANALOG_WRITE_INIT_TOOLTIP);
|
||||
},
|
||||
getVars: function () {
|
||||
return [this.getFieldValue('PIN_OBJ') == 'dac#' ? null : this.getFieldValue('PIN_OBJ')];
|
||||
},
|
||||
renameVar: function (oldName, newName) {
|
||||
if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {
|
||||
this.setTitleValue(newName, 'PIN_OBJ');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_pin_pressed_init = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
// this.appendValueInput("PIN", Number)
|
||||
// .appendField(Blockly.Msg.MIXLY_SETUP)
|
||||
// .appendField("PWM"+Blockly.Msg.MIXLY_Analog_PINMODEOUT)
|
||||
// .appendField('pwm')
|
||||
// .setCheck(Number);
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_SETUP)
|
||||
.appendField(new Blockly.FieldTextInput('tc#'), 'PIN_OBJ')
|
||||
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_AS)
|
||||
this.appendDummyInput("")
|
||||
.appendField(Blockly.Msg.MIXLY_ESP32_TOUCH_SENSOR)
|
||||
// .appendField('tc')
|
||||
// .appendField(new Blockly.FieldDropdown(profile.default.tc_pin),"PIN")
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_PIN)
|
||||
.setCheck(Number);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PIN_PRESSED_INIT_TOOLTIP);
|
||||
},
|
||||
getVars: function () {
|
||||
return [this.getFieldValue('PIN_OBJ') == 'tc#' ? null : this.getFieldValue('PIN_OBJ')];
|
||||
},
|
||||
renameVar: function (oldName, newName) {
|
||||
if (Blockly.Names.equals(oldName, this.getFieldValue('PIN_OBJ'))) {
|
||||
this.setTitleValue(newName, 'PIN_OBJ');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_analog_write_set_freq = {
|
||||
init: function () {
|
||||
this.setColour(BASE_HUE);
|
||||
this.appendValueInput("PIN", Number)
|
||||
.appendField("PWM" + Blockly.Msg.MIXLY_Analog_PINMODEOUT)
|
||||
.setCheck(Number);
|
||||
this.appendValueInput("NUM", Number)
|
||||
.appendField(Blockly.Msg.MIXLY_FREQUENCY + Blockly.Msg.MIXLY_STAT)
|
||||
.setCheck(Number);
|
||||
this.setInputsInline(true);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setTooltip(Blockly.Msg.MIXLY_ESP32_INOUT_PWM_ANALOG_WRITE_SET_FREQ_TOOLTIP);
|
||||
}
|
||||
};
|
||||
|
||||
export const inout_pinMode = inout_digital_init;
|
||||
export const pin_pressed_init = inout_pin_pressed_init;
|
||||
export const pin_pressed = inout_pin_pressed;
|
||||
export const controls_pin_attachInterrupt = inout_pin_attachInterrupt;
|
||||
415
mixly/boards/default_src/micropython_esp32c5/blocks/pins.js
Normal file
415
mixly/boards/default_src/micropython_esp32c5/blocks/pins.js
Normal file
@@ -0,0 +1,415 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import { Profile } from 'mixly';
|
||||
|
||||
const PINS_HUE = 230;
|
||||
|
||||
export const pins_digital = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.digital), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_digital_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.digital_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_input_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.input_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_output_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.output_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const espnow_channel = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.espnow_channel), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const haskylens_model = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.haskylens_model), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pwm_input = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.pwm_input), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const analog_input = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.analog_input), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pwm_output = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.pwm_output), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const analog_output = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.analog_output), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const i2c_A_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.i2c_A_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const i2c_B_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.i2c_B_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
export const spi_A_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.spi_A_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const spi_B_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.spi_B_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const spi_C_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.spi_C_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const spi_D_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.spi_D_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_analog = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.analog), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_analog_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.analog_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_dac = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.dac), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_dac_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.dac_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_button = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.button), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_buttonB = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.buttonB), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_pwm = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.pwm), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_pwm_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.pwm_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_touch_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.touch_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_touch = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.touch), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_serial = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.serial_pin), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_builtinimg = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.builtinimg), 'PIN');
|
||||
this.setOutput(true, "esp32_image");
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_builtinimg_extern = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.builtinimg_extern), 'PIN');
|
||||
this.setOutput(true, "esp32_image");
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_imglist = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.imglist), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_playlist = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.playlist), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_playlist_extern = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.playlist_extern), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_exlcdh = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.exlcdh), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_exlcdv = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.exlcdv), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
export const pins_axis = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.axis), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
export const pins_brightness = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.brightness), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_tts_voice = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.tts_voice), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_tts_builtin_music = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.tts_builtin_music), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_tts_bgmusic = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.tts_bgmusic), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_tone_notes = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.tone_notes), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_radio_power = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.radio_power), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_radio_datarate = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.radio_datarate), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_one_more = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.one_more), 'PIN');
|
||||
this.setOutput(true);
|
||||
}
|
||||
};
|
||||
|
||||
export const pins_digital_dot = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown(Profile.default.digital_dot), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
|
||||
export const timer_id_pin = {
|
||||
init: function () {
|
||||
this.setColour(PINS_HUE);
|
||||
this.appendDummyInput("")
|
||||
.appendField(new Blockly.FieldDropdown([
|
||||
["0","0"],
|
||||
["1","1"],
|
||||
["2","2"],
|
||||
["3","3"]
|
||||
]), 'PIN');
|
||||
this.setOutput(true, Number);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,499 @@
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(1)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/inout.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(1)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/inout2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(2)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/ctrl.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(2)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/ctrl2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(3)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/math.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(3)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/math2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(4)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/logic.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(4)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/logic2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(5)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/text.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(5)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/text2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(6)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/list3.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(6)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/list4.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(7)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/tuple.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(7)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/tuple2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(8)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/dict.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(8)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/dict2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(9)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/set.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(9)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/set2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(10)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/var.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(10)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/var2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/func.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/func2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/port.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/port2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOnBoardSensor.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/sensor_onboard.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOnBoardSensor.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/sensor_new2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOnBoardActuator.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/actuator_onboard.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOnBoardActuator.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/actuator_new2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOnBoardDisplay.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/display_onboard.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOnBoardDisplay.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/display_new2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catPE_G1.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/act.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catPE_G1.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/act2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catSANT_G3.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/sensor.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catSANT_G3.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/sensor2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catExternSensor.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/sensor_extern.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catExternSensor.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/sensor_new2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catExternActuator.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/actuator_extern.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catExternActuator.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/actuator_new2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catMatrix.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/Matrix.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catMatrix.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/Matrix2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOLED.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOLED.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catTFT.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catTFT.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catLCD.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catLCD.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#cat4Digitdisplay.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/4Digitdisplay.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#cat4Digitdisplay.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/4Digitdisplay2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIsensor.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/image.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIsensor.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/image2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIsensor2.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/image.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIsensor2.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/image2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catFile.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/file.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catFile.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/file2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catBLE.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catBLE.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catIR.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catIR.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catI2C.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catI2C.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catSPI.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catSPI.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catRadio.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catRadio.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOneWire.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOneWire.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catESPNow.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catESPNow.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catLora.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catLora.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catNetwork.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/net3.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catNetwork.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/net2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOnenet.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/onenet.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catOnenet.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/onenet2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catBlynk.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/blynk.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catBlynk.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/blynk2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catMixIO.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/mixio.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catMixIO.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/mixio2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catweather.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/weather.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catweather.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/weather2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catTinyWebDB.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/database.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catTinyWebDB.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/database2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIOT.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/ai.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIOT.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/ai2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catFactory.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/factory3.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catFactory.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/factory4.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catNova_G1.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/act.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catNova_G1.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/act2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catCommunicate.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/requests.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catCommunicate.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/requests2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catBLEC.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catBLEC.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catBLEKM.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catBLEKM.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIgraphsensor.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/image.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIgraphsensor.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/image2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIvoicesensor.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/AIvoice.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIvoicesensor.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/AIvoice2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIgraphsensorpro.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/image.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
#catAIgraphsensorpro.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/image2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
13
mixly/boards/default_src/micropython_esp32c5/export.js
Normal file
13
mixly/boards/default_src/micropython_esp32c5/export.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import MicropythonESP32C5Pins from './blocks/esp32_profile';
|
||||
import * as MicropythonESP32C5InoutBlocks from './blocks/inout';
|
||||
import * as MicropythonESP32C5PinsBlocks from './blocks/pins';
|
||||
import * as MicropythonESP32C5InoutGenerators from './generators/inout';
|
||||
import * as MicropythonESP32C5PinsGenerators from './generators/pins';
|
||||
|
||||
export {
|
||||
MicropythonESP32C5Pins,
|
||||
MicropythonESP32C5InoutBlocks,
|
||||
MicropythonESP32C5PinsBlocks,
|
||||
MicropythonESP32C5InoutGenerators,
|
||||
MicropythonESP32C5PinsGenerators
|
||||
};
|
||||
109
mixly/boards/default_src/micropython_esp32c5/generators/inout.js
Normal file
109
mixly/boards/default_src/micropython_esp32c5/generators/inout.js
Normal file
@@ -0,0 +1,109 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
// ok
|
||||
export const inout_highlow = function (_, generator) {
|
||||
// Boolean values HIGH and LOW.
|
||||
var code = (this.getFieldValue('BOOL') == 'HIGH') ? '1' : '0';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_digital_write = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);
|
||||
var code = "";
|
||||
code += dropdown_pin + '.value(' + dropdown_stat + ')\n'
|
||||
return code;
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_digital_read = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = "";
|
||||
code = dropdown_pin + '.value()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_analog_write = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
//var dropdown_stat = this.getFieldValue('STAT');
|
||||
var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
|
||||
//generator.setups_['setup_output'+dropdown_pin] = 'pinMode('+dropdown_pin+', OUTPUT);';
|
||||
var code = dropdown_pin + '.write(' + value_num + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_analog_write_set = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var value_num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
|
||||
var key = this.getFieldValue('key');
|
||||
var code = dropdown_pin + '.set_analog_' + key + '(' + value_num + ')\n';
|
||||
//var code = 'pin' + dropdown_pin + '.set_analog_period(' + value_num + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_pin_pressed = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var pin = generator.valueToCode(this, 'pin', generator.ORDER_ATOMIC);
|
||||
var code = pin + '.read()';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const inout_pin_attachInterrupt = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var dropdown_mode = this.getFieldValue('mode');
|
||||
var atta = generator.valueToCode(this, 'DO', generator.ORDER_ATOMIC);
|
||||
var code = 'machine.Pin(' + dropdown_pin + ').irq' + '(handler = ' + atta + ', trigger = ' + dropdown_mode + ')\n'
|
||||
//var funcName = 'attachInterrupt_func_' + dropdown_pin;
|
||||
//var branch = generator.statementToCode(this, 'DO') || generator.PASS;
|
||||
//var code2 = 'def' + ' ' + funcName + '(p):\n' + branch + '\n';
|
||||
//generator.setups_[funcName] = code2;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const inout_digital_init = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var pin_obj = this.getFieldValue('PIN_OBJ') || 'pin#';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var dropdown_mode = this.getFieldValue('MODE');
|
||||
var varName = (pin_obj == 'pin#') ? 'pin' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);
|
||||
var code = varName + ' = machine.Pin(' + dropdown_pin + ', ' + dropdown_mode + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_analog_write_init = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var pin_obj = this.getFieldValue('PIN_OBJ') || 'dac#';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var varName = (pin_obj == 'dac#') ? 'dac' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);
|
||||
var code = varName + ' = machine.DAC(machine.Pin(' + dropdown_pin + '))\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
export const inout_analog_atten = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
//var dropdown_stat = this.getFieldValue('STAT');
|
||||
var value_atten = this.getFieldValue('atten')
|
||||
var code = dropdown_pin + '.atten(' + value_atten + ')\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// ok
|
||||
export const inout_pin_pressed_init = function (_, generator) {
|
||||
generator.definitions_['import_machine'] = 'import machine';
|
||||
var pin_obj = this.getFieldValue('PIN_OBJ') || 'tc#';
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var varName = (pin_obj == 'tc#') ? 'tc' + dropdown_pin : generator.variableDB_.getName(pin_obj, Blockly.Variables.NAME_TYPE);
|
||||
var code = varName + ' = machine.TouchPad(machine.Pin(' + dropdown_pin + '))\n';
|
||||
return code;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
export const pins_digital = function (_, generator) {
|
||||
const code = this.getFieldValue('PIN');
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
};
|
||||
|
||||
export const pins_button = pins_digital;
|
||||
export const pins_buttonB = pins_digital;
|
||||
export const pins_digital_pin = pins_digital;
|
||||
export const pins_input_pin = pins_digital;
|
||||
export const pins_output_pin = pins_digital;
|
||||
export const pins_pwm_input = pins_digital;
|
||||
export const espnow_channel = pins_digital;
|
||||
export const haskylens_model = pins_digital;
|
||||
export const analog_input = pins_digital;
|
||||
export const pwm_output = pins_digital;
|
||||
export const analog_output = pins_digital;
|
||||
export const i2c_A_pin = pins_digital;
|
||||
export const i2c_B_pin = pins_digital;
|
||||
export const spi_A_pin = pins_digital;
|
||||
export const spi_B_pin = pins_digital;
|
||||
export const spi_C_pin = pins_digital;
|
||||
export const spi_D_pin = pins_digital;
|
||||
export const pins_analog_pin = pins_digital;
|
||||
export const pins_analog = pins_digital;
|
||||
export const pins_pwm_pin = pins_digital;
|
||||
export const pins_pwm = pins_digital;
|
||||
export const pins_dac_pin = pins_digital;
|
||||
export const pins_dac = pins_digital;
|
||||
export const pins_touch_pin = pins_digital;
|
||||
export const pins_touch = pins_digital;
|
||||
export const pins_interrupt = pins_digital;
|
||||
export const pins_serial = pins_digital;
|
||||
export const pins_builtinimg_extern = pins_digital;
|
||||
export const pins_imglist = pins_digital;
|
||||
export const pins_playlist = pins_digital;
|
||||
export const pins_playlist_extern = pins_digital;
|
||||
export const pins_axis = pins_digital;
|
||||
export const pins_exlcdh = pins_digital;
|
||||
export const pins_exlcdv = pins_digital;
|
||||
export const pins_brightness = pins_digital;
|
||||
export const pins_tts_voice = pins_digital;
|
||||
export const pins_tts_builtin_music = pins_digital;
|
||||
export const pins_tts_bgmusic = pins_digital;
|
||||
export const pins_tone_notes = pins_digital;
|
||||
export const pins_radio_power = pins_digital;
|
||||
export const pins_radio_datarate = pins_digital;
|
||||
export const pins_one_more = pins_digital;
|
||||
export const pins_digital_dot = pins_digital;
|
||||
export const timer_id_pin = pins_digital;
|
||||
|
||||
export const pins_builtinimg = function (_, generator) {
|
||||
const PIN_VALUE = this.getFieldValue('PIN');
|
||||
const data = PIN_VALUE.split('.');
|
||||
if (data.length !== 2) {
|
||||
throw Error('pin value error');
|
||||
}
|
||||
generator.definitions_[`import_${data[0]}_${data[1]}`] = `from ${data[0]} import ${data[1]}`;
|
||||
return [data[1], generator.ORDER_ATOMIC];
|
||||
};
|
||||
182
mixly/boards/default_src/micropython_esp32c5/index.js
Normal file
182
mixly/boards/default_src/micropython_esp32c5/index.js
Normal file
@@ -0,0 +1,182 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import { Profile } from 'mixly';
|
||||
|
||||
import {
|
||||
PythonVariablesBlocks,
|
||||
PythonControlBlocks,
|
||||
PythonMathBlocks,
|
||||
PythonTextBlocks,
|
||||
PythonListsBlocks,
|
||||
PythonDictsBlocks,
|
||||
PythonLogicBlocks,
|
||||
PythonStorageBlocks,
|
||||
PythonProceduresBlocks,
|
||||
PythonTupleBlocks,
|
||||
PythonSetBlocks,
|
||||
PythonHtmlBlocks,
|
||||
PythonUtilityBlocks,
|
||||
PythonVariablesGenerators,
|
||||
PythonControlGenerators,
|
||||
PythonMathGenerators,
|
||||
PythonTextGenerators,
|
||||
PythonListsGenerators,
|
||||
PythonDictsGenerators,
|
||||
PythonLogicGenerators,
|
||||
PythonStorageGenerators,
|
||||
PythonProceduresGenerators,
|
||||
PythonTupleGenerators,
|
||||
PythonSetGenerators,
|
||||
PythonHtmlGenerators,
|
||||
PythonUtilityGenerators,
|
||||
Procedures,
|
||||
Variables,
|
||||
Python
|
||||
} from '@mixly/python';
|
||||
|
||||
import {
|
||||
MicroPythonActuatorExternBlocks,
|
||||
MicroPythonActuatorOnBoardBlocks,
|
||||
MicroPythonAISensorBlocks,
|
||||
MicroPythonAIBlocks,
|
||||
MicroPythonAILocalBlocks,
|
||||
MicroPythonBlynkBlocks,
|
||||
MicroPythonCommunicateBlocks,
|
||||
MicroPythonDisplayExternBlocks,
|
||||
MicroPythonDisplayOnBoardBlocks,
|
||||
MicroPythonFactoryBlocks,
|
||||
MicroPythonInputBlocks,
|
||||
MicroPythonIotBlocks,
|
||||
MicroPythonNetworkBlocks,
|
||||
MicroPythonNovaG1Blocks,
|
||||
MicroPythonPeG1Blocks,
|
||||
MicroPythonSensorExternBlocks,
|
||||
MicroPythonSensorOnBoardBlocks,
|
||||
MicroPythonSerialBlocks,
|
||||
MicroPythonSystemBlocks,
|
||||
MicroPythonWeatherBlocks,
|
||||
MicroPythonActuatorExternGenerators,
|
||||
MicroPythonActuatorOnBoardGenerators,
|
||||
MicroPythonAISensorGenerators,
|
||||
MicroPythonAIGenerators,
|
||||
MicroPythonAILocalGenerators,
|
||||
MicroPythonBlynkGenerators,
|
||||
MicroPythonCommunicateGenerators,
|
||||
MicroPythonDisplayExternGenerators,
|
||||
MicroPythonDisplayOnBoardGenerators,
|
||||
MicroPythonFactoryGenerators,
|
||||
MicroPythonInputGenerators,
|
||||
MicroPythonIotGenerators,
|
||||
MicroPythonNetworkGenerators,
|
||||
MicroPythonNovaG1Generators,
|
||||
MicroPythonPeG1Generators,
|
||||
MicroPythonSensorExternGenerators,
|
||||
MicroPythonSensorOnBoardGenerators,
|
||||
MicroPythonSerialGenerators,
|
||||
MicroPythonSystemGenerators,
|
||||
MicroPythonWeatherGenerators,
|
||||
MicroPythonZhHans,
|
||||
MicroPythonZhHant,
|
||||
MicroPythonEn
|
||||
} from '@mixly/micropython';
|
||||
|
||||
import {
|
||||
MicropythonESP32C5Pins,
|
||||
MicropythonESP32C5InoutBlocks,
|
||||
MicropythonESP32C5PinsBlocks,
|
||||
MicropythonESP32C5InoutGenerators,
|
||||
MicropythonESP32C5PinsGenerators
|
||||
} from './';
|
||||
|
||||
import './css/color_esp32c5.css';
|
||||
|
||||
Object.assign(Blockly.Variables, Variables);
|
||||
Object.assign(Blockly.Procedures, Procedures);
|
||||
|
||||
Object.assign(Blockly.Lang.ZhHans, MicroPythonZhHans);
|
||||
Object.assign(Blockly.Lang.ZhHant, MicroPythonZhHant);
|
||||
Object.assign(Blockly.Lang.En, MicroPythonEn);
|
||||
|
||||
Blockly.Python = Python;
|
||||
Blockly.generator = Python;
|
||||
|
||||
Profile.default = {};
|
||||
Object.assign(Profile, MicropythonESP32C5Pins);
|
||||
Object.assign(Profile.default, MicropythonESP32C5Pins['元控自立(SOWL)']);
|
||||
|
||||
Object.assign(
|
||||
Blockly.Blocks,
|
||||
PythonVariablesBlocks,
|
||||
PythonControlBlocks,
|
||||
PythonMathBlocks,
|
||||
PythonTextBlocks,
|
||||
PythonListsBlocks,
|
||||
PythonDictsBlocks,
|
||||
PythonLogicBlocks,
|
||||
PythonStorageBlocks,
|
||||
PythonProceduresBlocks,
|
||||
PythonTupleBlocks,
|
||||
PythonSetBlocks,
|
||||
PythonHtmlBlocks,
|
||||
PythonUtilityBlocks,
|
||||
MicroPythonInputBlocks,
|
||||
MicroPythonSystemBlocks,
|
||||
MicroPythonSerialBlocks,
|
||||
MicroPythonCommunicateBlocks,
|
||||
MicroPythonIotBlocks,
|
||||
MicroPythonWeatherBlocks,
|
||||
MicroPythonAISensorBlocks,
|
||||
MicroPythonAILocalBlocks,
|
||||
MicroPythonSensorOnBoardBlocks,
|
||||
MicroPythonSensorExternBlocks,
|
||||
MicroPythonPeG1Blocks,
|
||||
MicroPythonNetworkBlocks,
|
||||
MicroPythonAIBlocks,
|
||||
MicroPythonActuatorOnBoardBlocks,
|
||||
MicroPythonActuatorExternBlocks,
|
||||
MicroPythonDisplayOnBoardBlocks,
|
||||
MicroPythonDisplayExternBlocks,
|
||||
MicroPythonFactoryBlocks,
|
||||
MicroPythonBlynkBlocks,
|
||||
MicroPythonNovaG1Blocks,
|
||||
MicropythonESP32C5InoutBlocks,
|
||||
MicropythonESP32C5PinsBlocks
|
||||
);
|
||||
|
||||
Object.assign(
|
||||
Blockly.Python.forBlock,
|
||||
PythonVariablesGenerators,
|
||||
PythonControlGenerators,
|
||||
PythonMathGenerators,
|
||||
PythonTextGenerators,
|
||||
PythonListsGenerators,
|
||||
PythonDictsGenerators,
|
||||
PythonLogicGenerators,
|
||||
PythonStorageGenerators,
|
||||
PythonProceduresGenerators,
|
||||
PythonTupleGenerators,
|
||||
PythonSetGenerators,
|
||||
PythonHtmlGenerators,
|
||||
PythonUtilityGenerators,
|
||||
MicroPythonInputGenerators,
|
||||
MicroPythonSystemGenerators,
|
||||
MicroPythonSerialGenerators,
|
||||
MicroPythonCommunicateGenerators,
|
||||
MicroPythonIotGenerators,
|
||||
MicroPythonWeatherGenerators,
|
||||
MicroPythonAISensorGenerators,
|
||||
MicroPythonAILocalGenerators,
|
||||
MicroPythonSensorOnBoardGenerators,
|
||||
MicroPythonSensorExternGenerators,
|
||||
MicroPythonPeG1Generators,
|
||||
MicroPythonNetworkGenerators,
|
||||
MicroPythonAIGenerators,
|
||||
MicroPythonActuatorOnBoardGenerators,
|
||||
MicroPythonActuatorExternGenerators,
|
||||
MicroPythonDisplayOnBoardGenerators,
|
||||
MicroPythonDisplayExternGenerators,
|
||||
MicroPythonFactoryGenerators,
|
||||
MicroPythonBlynkGenerators,
|
||||
MicroPythonNovaG1Generators,
|
||||
MicropythonESP32C5InoutGenerators,
|
||||
MicropythonESP32C5PinsGenerators
|
||||
);
|
||||
18
mixly/boards/default_src/micropython_esp32c5/jsconfig.json
Normal file
18
mixly/boards/default_src/micropython_esp32c5/jsconfig.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"experimentalDecorators": true,
|
||||
"baseUrl": "./",
|
||||
"paths": {
|
||||
"@mixly/python": [
|
||||
"../python"
|
||||
],
|
||||
"@mixly/micropython": [
|
||||
"../micropython"
|
||||
]
|
||||
}
|
||||
},
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"dist"
|
||||
]
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,263 @@
|
||||
"""
|
||||
mixgo_sowl Onboard resources(v1.3)
|
||||
|
||||
Micropython library for the mixgo_sant Onboard resources
|
||||
=======================================================
|
||||
@dahanzimin From the Mixly Team
|
||||
"""
|
||||
import gc
|
||||
import time
|
||||
import math
|
||||
from machine import *
|
||||
from music import MIDI
|
||||
from ws2812x import NeoPixel
|
||||
|
||||
'''RTC'''
|
||||
rtc_clock = RTC()
|
||||
|
||||
'''I2C-onboard'''
|
||||
# onboard_i2c = I2C(0)
|
||||
onboard_i2c = SoftI2C(scl=Pin(27), sda=Pin(26), freq=400000)
|
||||
|
||||
'''SPI-onboard'''
|
||||
onboard_spi = SPI(1, baudrate=80000000, polarity=0, phase=0)
|
||||
|
||||
'''BOT035-Sensor'''
|
||||
try:
|
||||
import sowl_bot
|
||||
onboard_bot = sowl_bot.BOT035(onboard_i2c)
|
||||
except Exception as e:
|
||||
print("Warning: Failed to communicate with BOT035 (Coprocessor) or", e)
|
||||
|
||||
'''TFT/128*128'''
|
||||
import st7735_cf
|
||||
onboard_tft = st7735_cf.ST7735(onboard_spi, 128, 128, dc_pin=23, reset=onboard_bot.tft_reset, backlight=onboard_bot.tft_brightness, font_address=0x700000)
|
||||
|
||||
'''BPS-Sensor'''
|
||||
try:
|
||||
import spl06_001
|
||||
onboard_bps = spl06_001.SPL06(onboard_i2c)
|
||||
except Exception as e:
|
||||
print("Warning: Failed to communicate with SPL06-001 (BPS) or", e)
|
||||
|
||||
'''ACC-Sensor'''
|
||||
try:
|
||||
import sc7a20
|
||||
onboard_acc = sc7a20.SC7A20(onboard_i2c)
|
||||
except Exception as e:
|
||||
print("Warning: Failed to communicate with SC7A20H (ACC) or", e)
|
||||
|
||||
'''ALS_PS-Sensor'''
|
||||
try:
|
||||
import ltr553als
|
||||
onboard_als = ltr553als.LTR_553ALS(onboard_i2c)
|
||||
except Exception as e:
|
||||
print("Warning: Failed to communicate with LTR_553ALS (ALS&PS) or", e)
|
||||
|
||||
'''THS-Sensor'''
|
||||
try:
|
||||
import shtc3
|
||||
onboard_ths = shtc3.SHTC3(onboard_i2c)
|
||||
except Exception as e:
|
||||
print("Warning: Failed to communicate with GXHTC3 (THS) or", e)
|
||||
|
||||
'''MGS-Sensor'''
|
||||
try:
|
||||
import mmc5603
|
||||
onboard_mgs = mmc5603.MMC5603(onboard_i2c)
|
||||
except Exception as e:
|
||||
print("Warning: Failed to communicate with MMC5603 (MGS) or", e)
|
||||
|
||||
'''RFID_Sensor'''
|
||||
try :
|
||||
import rc522
|
||||
onboard_rfid = rc522.RC522(onboard_i2c)
|
||||
except Exception as e:
|
||||
print("Warning: Failed to communicate with SI522 (RFID) or",e)
|
||||
|
||||
'''ASR-Sensor'''
|
||||
try:
|
||||
from ci130x import CI130X
|
||||
onboard_asr = CI130X(onboard_i2c)
|
||||
except Exception as e:
|
||||
print("Warning: Failed to communicate with CI1316XP (ASR) or", e)
|
||||
|
||||
'''2RGB_WS2812'''
|
||||
onboard_rgb = NeoPixel(onboard_bot.rgb_sync, 2)
|
||||
|
||||
'''1Buzzer-Music'''
|
||||
onboard_music = MIDI(0, pa_ctrl=onboard_asr.pa_ctrl)
|
||||
|
||||
'''5KEY_Sensor'''
|
||||
class KEYSensor:
|
||||
def __init__(self, pin, range):
|
||||
self.pin = pin
|
||||
self.adc = ADC(Pin(pin))
|
||||
self.adc.atten(ADC.ATTN_0DB)
|
||||
self.range = range
|
||||
self.flag = True
|
||||
|
||||
def _value(self):
|
||||
values = []
|
||||
for _ in range(25):
|
||||
values.append(self.adc.read())
|
||||
time.sleep_us(5)
|
||||
return (self.range-200) < min(values) < (self.range+200)
|
||||
|
||||
def get_presses(self, delay=1):
|
||||
last_time, presses = time.time(), 0
|
||||
while time.time() < last_time + delay:
|
||||
time.sleep_ms(50)
|
||||
if self.was_pressed():
|
||||
presses += 1
|
||||
return presses
|
||||
|
||||
def is_pressed(self):
|
||||
return self._value()
|
||||
|
||||
def was_pressed(self):
|
||||
if (self._value() != self.flag):
|
||||
self.flag = self._value()
|
||||
if self.flag:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def irq(self, handler, trigger):
|
||||
Pin(self.pin, Pin.IN).irq(handler=handler, trigger=trigger)
|
||||
|
||||
'''1KEY_Button'''
|
||||
class Button(KEYSensor):
|
||||
def __init__(self, pin):
|
||||
self.pin = pin
|
||||
self.key = Pin(pin, Pin.IN)
|
||||
self.flag = True
|
||||
|
||||
def _value(self):
|
||||
return not self.key.value()
|
||||
|
||||
B1key = Button(28)
|
||||
B2key = KEYSensor(5, 0)
|
||||
A1key = KEYSensor(5, 800)
|
||||
A2key = KEYSensor(5, 2050)
|
||||
A3key = KEYSensor(5, 2600)
|
||||
A4key = KEYSensor(5, 1450)
|
||||
|
||||
'''2-LED'''
|
||||
class LED:
|
||||
def __init__(self, func):
|
||||
self._func = func
|
||||
|
||||
def setbrightness(self, index, val):
|
||||
self._func(index, val)
|
||||
|
||||
def getbrightness(self, index):
|
||||
return self._func(index)
|
||||
|
||||
def setonoff(self, index, val):
|
||||
if val == -1:
|
||||
self.setbrightness(index, 100) if self.getbrightness(index) < 50 else self.setbrightness(index, 0)
|
||||
elif val == 1:
|
||||
self.setbrightness(index, 100)
|
||||
elif val == 0:
|
||||
self.setbrightness(index, 0)
|
||||
|
||||
def getonoff(self, index):
|
||||
return True if self.getbrightness(index) > 50 else False
|
||||
|
||||
onboard_led = LED(onboard_bot.led_pwm)
|
||||
|
||||
'''MIC_Sensor'''
|
||||
class MICSensor:
|
||||
def __init__(self,pin):
|
||||
self.adc=ADC(Pin(pin), atten=ADC.ATTN_11DB)
|
||||
|
||||
def read(self):
|
||||
maxloudness = 0
|
||||
for i in range(5):
|
||||
loudness = self.sample()
|
||||
if loudness > maxloudness:
|
||||
maxloudness = loudness
|
||||
return maxloudness
|
||||
|
||||
def sample(self):
|
||||
values = []
|
||||
for i in range(50):
|
||||
val = self.adc.read_u16()
|
||||
values.append(val)
|
||||
return max(values) - min(values)
|
||||
|
||||
onboard_sound = MICSensor(6)
|
||||
|
||||
class Clock:
|
||||
def __init__(self, x, y, radius, color, oled=onboard_tft): # 定义时钟中心点和半径
|
||||
self.display = oled
|
||||
self.xc = x
|
||||
self.yc = y
|
||||
self.r = radius
|
||||
self.color = color
|
||||
self.hour = 0
|
||||
self.min = 0
|
||||
self.sec = 0
|
||||
|
||||
def set_time(self, h, m, s): # 设定时间
|
||||
self.hour = h
|
||||
self.min = m
|
||||
self.sec = s
|
||||
|
||||
def set_rtctime(self): # 设定时间
|
||||
t = rtc_clock.datetime()
|
||||
self.hour = t[4]
|
||||
self.min = t[5]
|
||||
self.sec = t[6]
|
||||
|
||||
def drawDial(self, color): # 画钟表刻度
|
||||
r_tic1 = self.r - 1
|
||||
r_tic2 = self.r - 2
|
||||
self.display.ellipse(self.xc, self.yc, self.r, self.r, color)
|
||||
self.display.ellipse(self.xc, self.yc, 2, 2, color, True)
|
||||
|
||||
for h in range(12):
|
||||
at = math.pi * 2.0 * h / 12.0
|
||||
x1 = round(self.xc + r_tic1 * math.sin(at))
|
||||
x2 = round(self.xc + r_tic2 * math.sin(at))
|
||||
y1 = round(self.yc - r_tic1 * math.cos(at))
|
||||
y2 = round(self.yc - r_tic2 * math.cos(at))
|
||||
self.display.line(x1, y1, x2, y2, color)
|
||||
|
||||
def drawHour(self, color): # 画时针
|
||||
r_hour = int(self.r / 10.0 * 5)
|
||||
ah = math.pi * 2.0 * ((self.hour % 12) + self.min / 60.0) / 12.0
|
||||
xh = int(self.xc + r_hour * math.sin(ah))
|
||||
yh = int(self.yc - r_hour * math.cos(ah))
|
||||
self.display.line(self.xc, self.yc, xh, yh, color)
|
||||
|
||||
def drawMin(self, color): # 画分针
|
||||
r_min = int(self.r / 10.0 * 7)
|
||||
am = math.pi * 2.0 * self.min / 60.0
|
||||
xm = round(self.xc + r_min * math.sin(am))
|
||||
ym = round(self.yc - r_min * math.cos(am))
|
||||
self.display.line(self.xc, self.yc, xm, ym, color)
|
||||
|
||||
def drawSec(self, color): # 画秒针
|
||||
r_sec = int(self.r / 10.0 * 9)
|
||||
asec = math.pi * 2.0 * self.sec / 60.0
|
||||
xs = round(self.xc + r_sec * math.sin(asec))
|
||||
ys = round(self.yc - r_sec * math.cos(asec))
|
||||
self.display.line(self.xc, self.yc, xs, ys, color)
|
||||
|
||||
def draw_clock(self, bg_color=0): # 画完整钟表
|
||||
self.drawDial(self.color)
|
||||
self.drawHour(self.color)
|
||||
self.drawMin(self.color)
|
||||
self.drawSec(self.color)
|
||||
self.display.show()
|
||||
self.drawHour(bg_color)
|
||||
self.drawMin(bg_color)
|
||||
self.drawSec(bg_color)
|
||||
|
||||
def clear(self, color=0): # 清除
|
||||
self.display.ellipse(self.xc, self.yc, self.r, self.r, color, True)
|
||||
|
||||
'''Reclaim memory'''
|
||||
gc.collect()
|
||||
@@ -0,0 +1,121 @@
|
||||
"""
|
||||
SOWL_WCH
|
||||
|
||||
Micropython library for the SOWL_WCH(--V1.0--)
|
||||
=======================================================
|
||||
@dahanzimin From the Mixly Team
|
||||
"""
|
||||
import time
|
||||
from micropython import const
|
||||
|
||||
_BOT035_ADDRESS = const(0x13)
|
||||
_BOT5_TOUCH = const(0x01)
|
||||
_BOT035_PHZ = const(0x05)
|
||||
_BOT035_PWM = const(0x09)
|
||||
_BOT035_LED = const(0x0D)
|
||||
_BOT035_STA = const(0x10)
|
||||
_BOT035_RGB = const(0x11)
|
||||
_BOT035_KB = const(0x1A)
|
||||
_BOT035_MS = const(0xAE)
|
||||
_BOT035_STR = const(0x22)
|
||||
|
||||
class BOT035:
|
||||
def __init__(self, i2c_bus):
|
||||
self._i2c = i2c_bus
|
||||
self._touchs = [self.touch(0), self.touch(1)]
|
||||
self.reset()
|
||||
|
||||
def _wreg(self, reg, val, digit=1):
|
||||
'''Write memory address'''
|
||||
self._i2c.writeto_mem(_BOT035_ADDRESS, reg, val.to_bytes(digit, 'little'))
|
||||
|
||||
def _rreg(self, reg, nbytes=1):
|
||||
'''Read memory address'''
|
||||
self._i2c.writeto(_BOT035_ADDRESS, reg.to_bytes(1, 'little'))
|
||||
return int.from_bytes(self._i2c.readfrom(_BOT035_ADDRESS, nbytes), 'little')
|
||||
|
||||
def _bits(self, offset, mask, value=None, delay=100, reg=_BOT035_STA):
|
||||
if value is None:
|
||||
return (self._rreg(reg) & mask) >> offset
|
||||
else:
|
||||
self._wreg(reg, (self._rreg(reg) & (~ mask & 0xFF)) | (value << offset))
|
||||
time.sleep_ms(delay)
|
||||
|
||||
def reset(self):
|
||||
self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_PHZ, b' N Nddddd\x00\x00\x0c')
|
||||
|
||||
def touch(self, index, value=None):
|
||||
index = max(min(index, 1), 0)
|
||||
touch = 4095 - self._rreg(_BOT5_TOUCH + index * 2, 2)
|
||||
return touch > value if value else touch
|
||||
|
||||
def touched(self, index, value=600):
|
||||
return self.touch(index, value)
|
||||
|
||||
def touch_slide(self):
|
||||
values = []
|
||||
for i in range(20):
|
||||
values.append((self.touch(1) - self._touchs[1]) - (self.touch(0) - self._touchs[0]))
|
||||
return round(sorted(values)[10] / 10)
|
||||
|
||||
def usben(self, index=1, duty=None, freq=None):
|
||||
if index not in (1, 2, 4, 5):
|
||||
raise ValueError("USB port must be a number in (1, 2, 4, 5)")
|
||||
if duty is not None:
|
||||
self._wreg(_BOT035_PWM + index - (1 if index < 3 else 2), int(max(min(duty, 100), 0)))
|
||||
if freq is not None:
|
||||
self._wreg(_BOT035_PHZ + (0 if index < 3 else 2) , max(min(freq, 65535), 10), 2)
|
||||
if freq is None and duty is None:
|
||||
return self._rreg(_BOT035_PWM + index - (1 if index < 3 else 2)), self._rreg(_BOT035_PHZ + (0 if index < 3 else 2), 2)
|
||||
|
||||
def tft_brightness(self, brightness=None):
|
||||
"""PMOS inverting level driver"""
|
||||
if brightness is None:
|
||||
return 100 - self._rreg(_BOT035_LED)
|
||||
else:
|
||||
self._wreg(_BOT035_LED, max(min(100 - brightness, 100), 0))
|
||||
|
||||
def led_pwm(self, index=1, duty=None):
|
||||
index = max(min(index, 2), 1)
|
||||
if duty is None:
|
||||
return self._rreg(_BOT035_LED + index)
|
||||
else:
|
||||
self._wreg(_BOT035_LED + index, max(min(duty, 100), 0))
|
||||
|
||||
def tft_reset(self, value=None, delay=50):
|
||||
return self._bits(7, 0x80, value, delay)
|
||||
|
||||
def mcu_reset(self, value=None, delay=10):
|
||||
return self._bits(2, 0x04, value, delay)
|
||||
|
||||
def rgb_sync(self, buffer, n=9):
|
||||
self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_RGB, buffer if len(buffer) < n else buffer[:n])
|
||||
|
||||
def hid_keyboard(self, special=0, general=0, release=True):
|
||||
self._buf = bytearray(4)
|
||||
self._buf[0] = special
|
||||
if type(general) in (tuple, list):
|
||||
for i in range(len(general)):
|
||||
if i > 2: break
|
||||
self._buf[i + 1] = general[i]
|
||||
else:
|
||||
self._buf[1] = general
|
||||
self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_KB, self._buf)
|
||||
if release:
|
||||
time.sleep_ms(10)
|
||||
self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_KB, bytes(4))
|
||||
|
||||
def hid_keyboard_str(self, string, delay=0):
|
||||
for char in str(string):
|
||||
self._wreg(_BOT035_STR, ord(char) & 0xFF)
|
||||
time.sleep_ms(20 + delay)
|
||||
|
||||
def hid_keyboard_state(self):
|
||||
state = self._rreg(_BOT035_STA)
|
||||
return bool(state & 0x10), bool(state & 0x20), bool(state & 0x40)
|
||||
|
||||
def hid_mouse(self, keys=0, move=(0, 0), wheel=0, release=True):
|
||||
self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_MS, bytes([keys & 0x0F, move[0] & 0xFF, move[1] & 0xFF, wheel & 0xFF]))
|
||||
if release:
|
||||
time.sleep_ms(10)
|
||||
self._i2c.writeto_mem(_BOT035_ADDRESS, _BOT035_MS, bytes(4))
|
||||
@@ -0,0 +1,32 @@
|
||||
"""
|
||||
SOWL-TTS
|
||||
|
||||
MicroPython library for the SOWL-TTS(暂行)
|
||||
=======================================================
|
||||
@dahanzimin From the Mixly Team
|
||||
"""
|
||||
import gc,time
|
||||
from esp_tts import TTS
|
||||
from machine import Pin
|
||||
from pdm_i2s import PDMTX
|
||||
from mixgo_sowl import onboard_asr
|
||||
|
||||
audio = PDMTX(dout_pin=Pin(0), sample_rate=16000, buffer_size=1024)
|
||||
tts = TTS()
|
||||
|
||||
def play(text, speed=3):
|
||||
try:
|
||||
onboard_asr.pa_ctrl(1, 100)
|
||||
if tts.parse_chinese(text):
|
||||
audio.start()
|
||||
while True:
|
||||
data = tts.stream_play(speed)
|
||||
if not data:
|
||||
break
|
||||
else:
|
||||
xx= audio.write(data)
|
||||
#time.sleep(0.2)
|
||||
finally:
|
||||
onboard_asr.pa_ctrl(0)
|
||||
audio.stop()
|
||||
gc.collect()
|
||||
@@ -0,0 +1,100 @@
|
||||
"""
|
||||
ST7735/FrameBuffer
|
||||
|
||||
MicroPython library for the ST7735(TFT-SPI)
|
||||
=======================================================
|
||||
@dahanzimin From the Mixly Team
|
||||
"""
|
||||
import time
|
||||
import uframebuf
|
||||
from machine import Pin
|
||||
from image import Image, IMG
|
||||
|
||||
class ST7735(uframebuf.FrameBuffer_Uincode):
|
||||
def __init__(self, spi, width, height, dc_pin=None, backlight=None, reset=None, font_address=0x700000):
|
||||
self.spi = spi
|
||||
self.dc = Pin(dc_pin, Pin.OUT, value=1)
|
||||
self._buffer = bytearray(width * height * 2)
|
||||
super().__init__(self._buffer, width, height, uframebuf.RGB565)
|
||||
if reset: reset(1, 100)
|
||||
self.font(font_address)
|
||||
self._init()
|
||||
self._oneclight = True
|
||||
self._backlight = backlight
|
||||
|
||||
def _write(self, cmd, dat=None):
|
||||
"""Write command or data"""
|
||||
self.dc.off()
|
||||
self.spi.write(bytearray([cmd]))
|
||||
if dat is not None:
|
||||
self.dc.on()
|
||||
self.spi.write(dat)
|
||||
|
||||
def _init(self):
|
||||
"""Display initialization configuration"""
|
||||
for cmd, data, delay in [
|
||||
(0x11, None, 120000),
|
||||
(0xB1, b'\x01\x2C\x2D', 10),
|
||||
(0xB2, b'\x01\x2C\x2D', 10),
|
||||
(0xB3, b'\x01\x2C\x2D', 10),
|
||||
(0xB4, b'\x07', 10),
|
||||
(0xC0, b'\xA2\x02\x84', 10),
|
||||
(0xC1, b'\xC5', 10),
|
||||
(0xC2, b'\x0A\x00', 10),
|
||||
(0xC3, b'\x8A\x2A', 10),
|
||||
(0xC4, b'\x8A\xEE', 10),
|
||||
(0xC5, b'\x0E', 10),
|
||||
(0x36, b'\xC8', 10),
|
||||
(0xE0, b'\x02\x1C\x07\x12\x37\x32\x29\x2D\x29\x25\x2B\x39\x00\x01\x03\x10', 10),
|
||||
(0xE1, b'\x03\x1D\x07\x06\x2E\x2C\x29\x2D\x2E\x2E\x37\x3F\x00\x00\x02\x10', 10),
|
||||
(0x3A, b'\x05', 10),
|
||||
(0x29, None, 10),
|
||||
(0x2A, b'\x00\x02\x00\x81', 10),
|
||||
(0x2B, b'\x00\x03\x00\x82', 10)
|
||||
]:
|
||||
self._write(cmd, data)
|
||||
if delay:
|
||||
time.sleep_us(delay)
|
||||
|
||||
def display(self, data=None, x=None, y=None, scale_width=None, scale_height=None, rotation=0, sync=True):
|
||||
'''data is a string, display the path image; otherwise, display the image of data'''
|
||||
if type(data) is str:
|
||||
data = Image.open(data, scale_width, scale_height, self.width, self.height, rotation=rotation)
|
||||
if sync: self.fill(0x0, sync=False)
|
||||
self.blit_rgb565(data.image, data.width, data.height, x, y)
|
||||
if sync: self.show()
|
||||
|
||||
def screenshot(self, data=None, x=0, y=0, w=None, h=None, **kwargs):
|
||||
'''data is a string, save the path image; otherwise, return the image of data'''
|
||||
if (w is None and h is None):
|
||||
_img = IMG(memoryview(self._buffer), self.width, self.height)
|
||||
else:
|
||||
_img = IMG(memoryview(self.crop_rgb565(x,y,w,h)), w, h)
|
||||
if type(data) is str:
|
||||
Image.save(_img, data, **kwargs)
|
||||
return _img
|
||||
|
||||
def get_brightness(self):
|
||||
return self._backlight() / 100
|
||||
|
||||
def set_brightness(self, brightness):
|
||||
if not 0.0 <= brightness <= 1.0:
|
||||
raise ValueError(
|
||||
"Brightness must be a decimal number in the range: 0.0~1.0")
|
||||
self._backlight(int(brightness * 100))
|
||||
|
||||
def color(self, red, green=None, blue=None):
|
||||
""" Convert red, green and blue values (0-255) into a 16-bit 565 encoding."""
|
||||
if green is None or blue is None:
|
||||
return red
|
||||
else:
|
||||
return (red & 0xf8) << 8 | (green & 0xfc) << 3 | blue >> 3
|
||||
|
||||
def show(self):
|
||||
"""Refresh the display and show the changes."""
|
||||
self._write(0x2C, self._buffer)
|
||||
if self._oneclight:
|
||||
self._oneclight = False
|
||||
for i in range(60): #slow down display
|
||||
self.set_brightness(i / 100)
|
||||
time.sleep_ms(5)
|
||||
@@ -0,0 +1,66 @@
|
||||
"""
|
||||
WS2812 RGB(x035)
|
||||
|
||||
Micropython library for the WS2812 NeoPixel-RGB(method inheritance)
|
||||
=======================================================
|
||||
@dahanzimin From the Mixly Team
|
||||
"""
|
||||
from time import sleep
|
||||
|
||||
class NeoPixel:
|
||||
def __init__(self, func, n, bpp=3, ORDER=(0, 1, 2, 3), status=(0, 10 ,0)):
|
||||
self.func = func
|
||||
self.bpp = bpp
|
||||
self.rgbs = n
|
||||
self.ORDER = ORDER
|
||||
self.rgb_buf = bytearray(self.rgbs * bpp) + bytes(status)
|
||||
self.write()
|
||||
|
||||
def __len__(self):
|
||||
return self.rgbs
|
||||
|
||||
def __setitem__(self, n, v):
|
||||
for i in range(self.bpp):
|
||||
self.rgb_buf[n * self.bpp + self.ORDER[i]] = v[i]
|
||||
|
||||
def __getitem__(self, n):
|
||||
return tuple(self.rgb_buf[n * self.bpp + self.ORDER[i]] for i in range(self.bpp))
|
||||
|
||||
def fill(self, v):
|
||||
for i in range(self.bpp):
|
||||
j = self.ORDER[i]
|
||||
while j < self.rgbs * self.bpp:
|
||||
self.rgb_buf[j] = v[i]
|
||||
j += self.bpp
|
||||
|
||||
def write(self):
|
||||
self.func(self.rgb_buf)
|
||||
|
||||
def color_chase(self, R, G, B, wait):
|
||||
for i in range(self.rgbs):
|
||||
self.__setitem__(i, (R, G, B))
|
||||
self.write()
|
||||
sleep(wait/1000)
|
||||
|
||||
def rainbow_cycle(self, wait, clear=True):
|
||||
for j in range(255):
|
||||
for i in range(self.rgbs):
|
||||
rc_index = (i * 256 // self.rgbs) + j
|
||||
self.__setitem__(i, self.wheel(rc_index & 255))
|
||||
self.write()
|
||||
sleep(wait / 1000 / 256)
|
||||
if clear:
|
||||
self.fill((0, 0, 0))
|
||||
self.write()
|
||||
|
||||
def wheel(self, pos):
|
||||
if pos < 0 or pos > 255:
|
||||
return (0, 0, 0)
|
||||
elif pos < 85:
|
||||
return (pos * 3, 255 - pos * 3, 0)
|
||||
elif pos < 170:
|
||||
pos -= 85
|
||||
return (255 - pos * 3, 0, pos * 3)
|
||||
else:
|
||||
pos -= 170
|
||||
return (0, pos * 3, 255 - pos * 3)
|
||||
153
mixly/boards/default_src/micropython_esp32c5/origin/config.json
Normal file
153
mixly/boards/default_src/micropython_esp32c5/origin/config.json
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"board": {
|
||||
"元控自立(SOWL)": {
|
||||
"key": "micropython:esp32c5:mixgo_sowl",
|
||||
"config": [
|
||||
{
|
||||
"key": "BurnSpeed",
|
||||
"label": "Burn Speed",
|
||||
"messageId": "MICROPYTHON_CONFIG_MESSAGE_BURN_SPEED",
|
||||
"options": [
|
||||
{
|
||||
"key": "921600",
|
||||
"label": "921600"
|
||||
},
|
||||
{
|
||||
"key": "460800",
|
||||
"label": "460800"
|
||||
},
|
||||
{
|
||||
"key": "230400",
|
||||
"label": "230400"
|
||||
},
|
||||
{
|
||||
"key": "115200",
|
||||
"label": "115200"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"C5_generic": {
|
||||
"key": "micropython:esp32c5:generic",
|
||||
"config": [
|
||||
{
|
||||
"key": "BurnSpeed",
|
||||
"label": "Burn Speed",
|
||||
"messageId": "MICROPYTHON_CONFIG_MESSAGE_BURN_SPEED",
|
||||
"options": [
|
||||
{
|
||||
"key": "921600",
|
||||
"label": "921600"
|
||||
},
|
||||
{
|
||||
"key": "460800",
|
||||
"label": "460800"
|
||||
},
|
||||
{
|
||||
"key": "230400",
|
||||
"label": "230400"
|
||||
},
|
||||
{
|
||||
"key": "115200",
|
||||
"label": "115200"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"language": "MicroPython",
|
||||
"burn": {
|
||||
"type": "command",
|
||||
"portSelect": "all",
|
||||
"micropython:esp32c5:mixgo_sowl": {
|
||||
"command": "\"{esptool}\" --chip esp32c5 --port {com} --baud {baudrate} --after hard_reset write_flash -e 0x2000 \"{indexPath}/build/Mixgo_Sowl_lib-v1.27.0.bin\" 0x700000 \"{indexPath}/../micropython/build/HZK12.bin\" 0x400000 \"{indexPath}/../micropython/build/esp_tts_voice_data_xiaole.dat\""
|
||||
},
|
||||
"micropython:esp32c5:generic": {
|
||||
"command": "\"{esptool}\" --chip esp32c5 --port {com} --baud {baudrate} --after=no_reset write_flash -e 0x2000 \"{indexPath}/build/Generic_C5_lib-v1.27.0.bin\" 0x3A0000 \"{indexPath}/../micropython/build/HZK12.bin\""
|
||||
}
|
||||
},
|
||||
"upload": {
|
||||
"type": "command",
|
||||
"portSelect": "all",
|
||||
"libPath": [
|
||||
"{indexPath}/build/lib",
|
||||
"{indexPath}/../micropython/build/lib"
|
||||
],
|
||||
"command": "\"{ampy}\" -p {com} -d 1 -r \"{reset}\" put \"{indexPath}/build/upload\"",
|
||||
"filePath": "{indexPath}/build/upload/main.py",
|
||||
"copyLib": false,
|
||||
"reset": []
|
||||
},
|
||||
"nav": {
|
||||
"burn": true,
|
||||
"upload": true,
|
||||
"save": {
|
||||
"py": true
|
||||
},
|
||||
"setting": {
|
||||
"thirdPartyLibrary": true
|
||||
}
|
||||
},
|
||||
"serial": {
|
||||
"ctrlCBtn": true,
|
||||
"ctrlDBtn": true,
|
||||
"baudRates": 115200,
|
||||
"yMax": 100,
|
||||
"yMin": 0,
|
||||
"pointNum": 100,
|
||||
"rts": true,
|
||||
"dtr": true
|
||||
},
|
||||
"lib": {
|
||||
"mixly": {
|
||||
"url": [
|
||||
"http://download.mixlylibs.cloud/mixly3-packages/cloud-libs/micropython_esp32c5/libs.json"
|
||||
]
|
||||
}
|
||||
},
|
||||
"pythonToBlockly": false,
|
||||
"web": {
|
||||
"devices": {
|
||||
"serial": true,
|
||||
"hid": true,
|
||||
"usb":true
|
||||
},
|
||||
"burn": {
|
||||
"erase": true,
|
||||
"micropython:esp32c5:mixgo_sowl": {
|
||||
"binFile": [
|
||||
{
|
||||
"offset": "0x2000",
|
||||
"path": "./build/Mixgo_Sowl_lib-v1.27.0.bin"
|
||||
}, {
|
||||
"offset": "0x700000",
|
||||
"path": "../micropython/build/HZK12.bin"
|
||||
}, {
|
||||
|
||||
"offset": "0x400000",
|
||||
|
||||
"path": "../micropython/build/esp_tts_voice_data_xiaole.dat"
|
||||
|
||||
}
|
||||
|
||||
]
|
||||
},
|
||||
"micropython:esp32c5:generic": {
|
||||
"binFile": [
|
||||
{
|
||||
"offset": "0x2000",
|
||||
"path": "./build/Generic_C5_lib-v1.27.0.bin"
|
||||
}, {
|
||||
"offset": "0x3A0000",
|
||||
"path": "../micropython/build/HZK12.bin"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"upload": {
|
||||
"reset": []
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="display_scroll_string" id="ccrf+~^g:R=fFo;4Iu[Z" x="-1486" y="-273"><value name="data"><shadow type="text" id="`5$qmWK^g#d;8*ClJQ{E"><field name="TEXT">你好,米思齐!</field></shadow></value><next><block type="display_show_image" id="C3:}leQl}B99HsWP.QxX"><value name="data"><shadow type="pins_builtinimg" id="wP-dTsW_7/eum#y0l#cA"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="}t(z8D4uq!s^iW_*_OXu"><field name="BOOL">TRUE</field></shadow></value></block></next></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3RmdApmcm9tIGV4cHJlc3Npb25fcGljdHVyZSBpbXBvcnQgSGVhcnQKCgpvbmJvYXJkX3RmdC5zY3JvbGwoJ+S9oOWlve+8jOexs+aAnem9kO+8gScsIGNvbG9yPTB4ZmZmZikKb25ib2FyZF90ZnQuaW1hZ2UoSGVhcnQsIGNvbG9yPTB4ZmZmZixzeW5jPVRydWUpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="IfZ5LYUao.lY!VGpqo=5" x="-739" y="234"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="OG[CeVGg^+]u,1ile0;*"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="c|:h{??5kThj.:Hhg:(@"><value name="data"><shadow type="pins_builtinimg" id="6N@:+0FvbM}uj!{W[m5w"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="6R~kHrk@PSXAwB05a9V5"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="Tz[WJ3Lgvt@Zf31S4q5z"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="GkN1]7bd.v_~(Cn44^^h"><field name="NUM">1</field></shadow></value><next><block type="display_show_image" id=",Uu}6*Tx6#6b`3qSqM/w"><value name="data"><shadow type="pins_builtinimg" id="`uQ-S3?k=+IKJKw|e2l$"><field name="PIN">expression_picture.Small_heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="_8TrKG,pZW`61*PNd-V["><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="fOOom;o?5!?(t}wJr[G,"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="FJPz.uk|Poq2QOtD~0?K"><field name="NUM">1</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IEhlYXJ0CmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF90ZnQKaW1wb3J0IHRpbWUKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IFNtYWxsX2hlYXJ0CgoKd2hpbGUgVHJ1ZToKICAgIG9uYm9hcmRfdGZ0LmltYWdlKEhlYXJ0LCBjb2xvcj0weGZmZmYsc3luYz1UcnVlKQogICAgdGltZS5zbGVlcCgxKQogICAgb25ib2FyZF90ZnQuaW1hZ2UoU21hbGxfaGVhcnQsIGNvbG9yPTB4ZmZmZixzeW5jPVRydWUpCiAgICB0aW1lLnNsZWVwKDEpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="display_scroll_string" id="*{J7{u=(OurJE8oyI}zK" x="-883" y="151"><value name="data"><shadow type="text" id="sQm2#.e2H!s^4YHm/68_"><field name="TEXT">我爱米思齐!</field></shadow></value><next><block type="controls_whileUntil" id="WV=We$]ab`y$MOpk$vSJ"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="@o$f@#Sr;:T3TDiEYcS#"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="c!dz*IYT3pU-6l2VbHCc"><value name="data"><shadow type="pins_builtinimg" id="ckEA0=p0N_ua9mH=Sm4P"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="xXox~vWHg.@fl3{3t2Z4"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="0$hi$:Al78-a}?/fvwRl"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="B(.V?BwosaM+U^8|e@m5"><field name="NUM">1</field></shadow></value><next><block type="display_show_image" id="B$s;xwxnL;,?w0NSe6iL"><value name="data"><shadow type="pins_builtinimg" id="BF(7G,xDMg]tnS{s98tH"><field name="PIN">expression_picture.Small_heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="S!-bP#]L1zT:x+@.sWnI"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="k1O)SdlRT{w}s:,SjDxV"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="vj=;5hl){I!:=#0WQ65O"><field name="NUM">1</field></shadow></value></block></next></block></next></block></next></block></statement></block></next></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3RmdApmcm9tIGV4cHJlc3Npb25fcGljdHVyZSBpbXBvcnQgSGVhcnQKaW1wb3J0IHRpbWUKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IFNtYWxsX2hlYXJ0CgoKb25ib2FyZF90ZnQuc2Nyb2xsKCfmiJHniLHnsbPmgJ3pvZDvvIEnLCBjb2xvcj0weGZmZmYpCndoaWxlIFRydWU6CiAgICBvbmJvYXJkX3RmdC5pbWFnZShIZWFydCwgY29sb3I9MHhmZmZmLHN5bmM9VHJ1ZSkKICAgIHRpbWUuc2xlZXAoMSkKICAgIG9uYm9hcmRfdGZ0LmltYWdlKFNtYWxsX2hlYXJ0LCBjb2xvcj0weGZmZmYsc3luYz1UcnVlKQogICAgdGltZS5zbGVlcCgxKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id=";ftd6.3Dn=*lXk|1,Coj" x="-752" y="165"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="[DnHkFLx|lRJuO]3sP?{"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="dOV-eV2W5G|!R1Parb8m"><value name="IF0"><block type="sensor_mixgo_button_is_pressed" id="q`(]/LJWm(4aH16_6/7L"><value name="btn"><shadow type="pins_button" id="U_N}T[BJ)-yw^p:46;NY"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="display_show_image" id="Vq(Ak5jN~L6S+|Nkx^Zm"><value name="data"><shadow type="pins_builtinimg" id="spPmP^4s)pzi|fs}xA11"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="o~gd_tjPR(N*oG`5f[rd"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="Is6zjxF#M|]9::zV_HV)"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="Z4:(r[LY;GOcx*~.BUs+"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id="yOKQ_;Fu[v$;24;]Gn8|"><value name="data"><shadow type="pins_builtinimg" id="U#57{f.L4ivAwUjG?8o]"><field name="PIN">expression_picture.Small_heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="h}HN$mKL$#-4zcxqy6PE"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id=".BX1ji`/o?]Tv(aFZ1yx"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="s:6!_K{aa9TzS@jwV#]m"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></statement></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IEhlYXJ0CmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF90ZnQKaW1wb3J0IHRpbWUKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IFNtYWxsX2hlYXJ0CgoKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX3Nvd2wuQjFrZXkuaXNfcHJlc3NlZCgpOgogICAgICAgIG9uYm9hcmRfdGZ0LmltYWdlKEhlYXJ0LCBjb2xvcj0weGZmZmYsc3luYz1UcnVlKQogICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgICAgIG9uYm9hcmRfdGZ0LmltYWdlKFNtYWxsX2hlYXJ0LCBjb2xvcj0weGZmZmYsc3luYz1UcnVlKQogICAgICAgIHRpbWUuc2xlZXAoMC4xKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="a4W]hO*)K/.IDvlZDdI," x="-651" y="184"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="6}rjajE*r7tf{!H!tu!3"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="bb/.PEg~9bO2]MR_FHve"><value name="IF0"><block type="sensor_mixgo_button_is_pressed" id="VCTJo/#qn`MVQ3|LmQLo"><value name="btn"><shadow type="pins_button" id="m6i3cb1GoG$u{yg@Q]l@"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="display_show_image" id="op7pL=Vn/wE3YVamzwAk"><value name="data"><shadow type="pins_builtinimg" id="4pNoi0u^_GOalFTD1}9z"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="|n7JzxPBUIK,u=*hNXNg"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="48UB^X;CZE5TUooqe$#^"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="tt9ZC12{GQsvg`*)iDXb"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id="1nOM:yD+(yDNEFg1[3X~"><value name="data"><shadow type="pins_builtinimg" id="^$a4`_-~qqIBMVQs][Fr"><field name="PIN">expression_picture.Small_heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="#jg]yUI`jDKDS#tH)3xG"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="8z0$qC{F]B^7C|MggYhD"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="D#p0UX/zQs[*]l0s!TXH"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></statement><next><block type="controls_if" id="FhmGUIt~1@xQBd*0misj"><value name="IF0"><block type="sensor_mixgo_button_is_pressed" id="X+v/AjPS[.cs@R#fv^.~"><value name="btn"><shadow type="pins_button" id="v]G)j5-35F1XX95e9.[f"><field name="PIN">B2key</field></shadow></value></block></value><statement name="DO0"><block type="display_show_image" id="+XFitd6EvU_WGkD7724O"><value name="data"><shadow type="pins_builtinimg" id="*Ob+j/Mf`iB36ZA!I1.y"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="vv44t8|J/E8NmJ0[?XG+"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="@j(;|b9$6fTgx^!w4Yw:"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="3}|}+VRLa}L@bC1cMx.e"><field name="NUM">0.5</field></shadow></value><next><block type="display_show_image" id="A|UE0n(Z8IzP/[C+C^az"><value name="data"><shadow type="pins_builtinimg" id="?06*=?[U#u!DIA7Q!cJW"><field name="PIN">expression_picture.Small_heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="!N0UfQsr{+`U.R+#lQb1"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="W:h^l-iIo!5=02u=O:s]"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="J$5!!Wr^FhLtO~u+QTF;"><field name="NUM">0.5</field></shadow></value></block></next></block></next></block></next></block></statement></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IEhlYXJ0CmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF90ZnQKaW1wb3J0IHRpbWUKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IFNtYWxsX2hlYXJ0CgoKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX3Nvd2wuQjFrZXkuaXNfcHJlc3NlZCgpOgogICAgICAgIG9uYm9hcmRfdGZ0LmltYWdlKEhlYXJ0LCBjb2xvcj0weGZmZmYsc3luYz1UcnVlKQogICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgICAgIG9uYm9hcmRfdGZ0LmltYWdlKFNtYWxsX2hlYXJ0LCBjb2xvcj0weGZmZmYsc3luYz1UcnVlKQogICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgaWYgbWl4Z29fc293bC5CMmtleS5pc19wcmVzc2VkKCk6CiAgICAgICAgb25ib2FyZF90ZnQuaW1hZ2UoSGVhcnQsIGNvbG9yPTB4ZmZmZixzeW5jPVRydWUpCiAgICAgICAgdGltZS5zbGVlcCgwLjUpCiAgICAgICAgb25ib2FyZF90ZnQuaW1hZ2UoU21hbGxfaGVhcnQsIGNvbG9yPTB4ZmZmZixzeW5jPVRydWUpCiAgICAgICAgdGltZS5zbGVlcCgwLjUpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="=F)]XnQgjKoF*faAw*R." x="-773" y="183"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="s~]8paPgFr6(J*(T-^)`"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="bVoM(#i1Wa!#g8=(gBYl"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="Uie^BBgJr]Lg^]-lvSR-"><value name="btn"><shadow type="pins_button" id="Z$-Z9:kQ0U292-BAu6]#"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="controls_whileUntil" id="m#|V9|IV|D9c786vl/LI"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="tw:y2`wv55gN**z{V40,"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="{H7mlsOo4J!2J{3$X*1s"><value name="data"><shadow type="pins_builtinimg" id=")T^^_P$SKQX?eG1gj5L~"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="6rXH2DKtm(}69FSYzIV|"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="b$?`z`kqY#Ex#rD=:l_H"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="x`;2G;Z)k;Eu=(EN__Rl"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id=",t!IqtUjTW5Bw4;~C@]p"><value name="data"><shadow type="pins_builtinimg" id="}U9ueUN6L;t^.Jj2q9CO"><field name="PIN">expression_picture.Small_heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="r$|RgnXT^jYTKL~lX{$K"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="d#P0z}h.ob:F^!V!G-,1"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="t~ZV?!eLY4YwAbv2N{37"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></statement></block></statement></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IEhlYXJ0CmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF90ZnQKaW1wb3J0IHRpbWUKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IFNtYWxsX2hlYXJ0CgoKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX3Nvd2wuQjFrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBvbmJvYXJkX3RmdC5pbWFnZShIZWFydCwgY29sb3I9MHhmZmZmLHN5bmM9VHJ1ZSkKICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAgICAgICAgICAgIG9uYm9hcmRfdGZ0LmltYWdlKFNtYWxsX2hlYXJ0LCBjb2xvcj0weGZmZmYsc3luYz1UcnVlKQogICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="tSkSyPqWmN!FriV0QT97" x="-773" y="183"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="4KVFT~J?Jh{-EDqO#xN]"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="UjJ$15UOH#0=n`02w]V8"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="l|m3{Aet3NX9zVXKb]3J"><value name="btn"><shadow type="pins_button" id="j~3EAa8nnjiCgN7O9(+u"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="controls_whileUntil" id="z9hPvl{X^w#@d4JIR`xt"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="D{lqNXfR{5pp^((^C1+n"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="O^tS90o=s7:VUIBSd+!N"><value name="data"><shadow type="pins_builtinimg" id="bxX#acHf?B6MK9tk7~mw"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="8TpSx:IO+`U|Hgmy5`jb"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="T#A!8T|wLfUt[U-WS6qQ"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="Qvcb/;{1uYw^E@0v;tT`"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id="Mzwj5{m,|Kt]#D7}eKlX"><value name="data"><shadow type="pins_builtinimg" id="q@nongCl1za#ho6Ol[`T"><field name="PIN">expression_picture.Small_heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="F6chzKWP^ovaG(G^R*v`"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="e=nXPzM_*g|.#BO+9]/a"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="m:O#FhFft?MyJ-:~VK#="><field name="NUM">0.1</field></shadow></value><next><block type="controls_if" id="{27Wv4k{bApVYeDO;v87"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="F-)gy(BGstMAL0s8sRm{"><value name="btn"><shadow type="pins_button" id="m5[Wr}4x@Ebc*u6a0=Q_"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="controls_flow_statements" id="Tv`D|HCC]Ye}rI36B0*|"><field name="FLOW">BREAK</field></block></statement></block></next></block></next></block></next></block></next></block></statement></block></statement></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IEhlYXJ0CmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF90ZnQKaW1wb3J0IHRpbWUKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IFNtYWxsX2hlYXJ0CgoKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX3Nvd2wuQjFrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBvbmJvYXJkX3RmdC5pbWFnZShIZWFydCwgY29sb3I9MHhmZmZmLHN5bmM9VHJ1ZSkKICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAgICAgICAgICAgIG9uYm9hcmRfdGZ0LmltYWdlKFNtYWxsX2hlYXJ0LCBjb2xvcj0weGZmZmYsc3luYz1UcnVlKQogICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKICAgICAgICAgICAgaWYgbWl4Z29fc293bC5CMWtleS53YXNfcHJlc3NlZCgpOgogICAgICAgICAgICAgICAgYnJlYWsK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="{z|)g~5{2QyXfm[$wUlJ" x="-651" y="147"><field name="VAR">心跳</field><value name="VALUE"><block type="logic_boolean" id="6ue1}eLAAWkv#1q*{!;X"><field name="BOOL">FALSE</field></block></value><next><block type="controls_whileUntil" id="):[pdy.nF$sOvYkhbC1s"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="yf;9ILicO(t^Z/]?/eNm"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="edH[]_Od(:W=V:NGn$FV"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="+jr]TIi;gykUk.0#fG]]"><value name="btn"><shadow type="pins_button" id="^hX[3/DZcGoIJ8YmB`_W"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="variables_set" id="{74}h$cVyu|:h;xHt`2x"><field name="VAR">心跳</field><value name="VALUE"><block type="logic_boolean" id="4i(tCFtAR8)YApJ$#W2}"><field name="BOOL">FALSE</field></block></value></block></statement><next><block type="controls_if" id="f)ZH~v@`0CVys=!_8cA0"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="0tRQGgTSpp0lSB6bHm^g"><value name="btn"><shadow type="pins_button" id="y*dSp!)@0kWrj7)Ax#fV"><field name="PIN">B2key</field></shadow></value></block></value><statement name="DO0"><block type="variables_set" id="b4:QX!_pC4s,))$.LFj="><field name="VAR">心跳</field><value name="VALUE"><block type="logic_boolean" id="|CiqMdd7aqbC+X]Mv#.0"><field name="BOOL">TRUE</field></block></value></block></statement><next><block type="controls_if" id="W_](F_T*;V{Ep-j=@u0X"><value name="IF0"><block type="variables_get" id="8g*4egAuG:jPGrxF-V;c"><field name="VAR">心跳</field></block></value><statement name="DO0"><block type="display_show_image" id="c|TC=x;GyJZ+fSJ6bds4"><value name="data"><shadow type="pins_builtinimg" id="HYxUFj)(bNH)p]xL]UvC"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="xNsXC_9:Y:XtfgEv)_[b"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="1V0`D8G@aA/Wf1-d{N:2"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="rm,F89,Lw)r,Yco7S6]z"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id="Zk:P@:u*f6)O4ZAh7m+b"><value name="data"><shadow type="pins_builtinimg" id="me|g7D^?PXNPH^+|*:a6"><field name="PIN">expression_picture.Small_heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="hQbZ:SdV!J~J;(BQ7[?$"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="85!ASkX;~Zw,ljMJh)w!"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="|m-W/0D3Tt(lxvFW8J3_"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></statement></block></next></block></next></block></statement></block></next></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IEhlYXJ0CmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF90ZnQKaW1wb3J0IHRpbWUKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IFNtYWxsX2hlYXJ0CgoK5b+D6LezID0gRmFsc2UKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX3Nvd2wuQjFrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICDlv4Pot7MgPSBGYWxzZQogICAgaWYgbWl4Z29fc293bC5CMmtleS53YXNfcHJlc3NlZCgpOgogICAgICAgIOW/g+i3syA9IFRydWUKICAgIGlmIOW/g+i3szoKICAgICAgICBvbmJvYXJkX3RmdC5pbWFnZShIZWFydCwgY29sb3I9MHhmZmZmLHN5bmM9VHJ1ZSkKICAgICAgICB0aW1lLnNsZWVwKDAuMSkKICAgICAgICBvbmJvYXJkX3RmdC5pbWFnZShTbWFsbF9oZWFydCwgY29sb3I9MHhmZmZmLHN5bmM9VHJ1ZSkKICAgICAgICB0aW1lLnNsZWVwKDAuMSkK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="i27me5(7547L|Eog}l59" x="-651" y="147"><field name="VAR">心跳</field><value name="VALUE"><block type="logic_boolean" id="ng~7MdByeT0))jtnfMv/"><field name="BOOL">FALSE</field></block></value><next><block type="controls_whileUntil" id="N~?^x0*)[@Ft;lmR`+Xx"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="sCq(!e!mc)EA^igdTXp="><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="$:L,nMluS;mioN$QH,z)"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="Qfy21o_s6;T[2xq~/9EU"><value name="btn"><shadow type="pins_button" id="pYzb|DMrt30k[#|#B2.i"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="variables_set" id="oC{uWnP6aEA@|D8uhu#y"><field name="VAR">心跳</field><value name="VALUE"><block type="logic_negate" id="iL-|[GJlfF?USb2j75Pm"><value name="BOOL"><block type="variables_get" id="Nc(GSEP+jX=|rT)m|*g("><field name="VAR">心跳</field></block></value></block></value></block></statement><next><block type="controls_if" id="5RjII*[z|WVeEo(4Q!Dn"><value name="IF0"><block type="variables_get" id="*ii3+WX417S[n|1fIE[X"><field name="VAR">心跳</field></block></value><statement name="DO0"><block type="display_show_image" id=")ub/0un!kcg7tmAT#=7."><value name="data"><shadow type="pins_builtinimg" id="IYR-NLe-X:{W{)q5[u;f"><field name="PIN">expression_picture.Heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="|N{J@3Jz[*FCsIAST-ud"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="o/GFYO[Os/9R1(,2|52["><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="?P5pzRQXsvz@3*C-|:g-"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id="aZySB)hq#XIQ$bHG/n.{"><value name="data"><shadow type="pins_builtinimg" id="}Vu6z^1q}WK6o].G9JL~"><field name="PIN">expression_picture.Small_heart</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="1#UVC|@pnK4?hCfKL_73"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="bWh_B-JGJe{(C_[tR{Qs"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="cAV*~[M(D*|BbitT{U8n"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></statement></block></next></block></statement></block></next></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IEhlYXJ0CmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF90ZnQKaW1wb3J0IHRpbWUKZnJvbSBleHByZXNzaW9uX3BpY3R1cmUgaW1wb3J0IFNtYWxsX2hlYXJ0CgoK5b+D6LezID0gRmFsc2UKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX3Nvd2wuQjFrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICDlv4Pot7MgPSBub3Qg5b+D6LezCiAgICBpZiDlv4Pot7M6CiAgICAgICAgb25ib2FyZF90ZnQuaW1hZ2UoSGVhcnQsIGNvbG9yPTB4ZmZmZixzeW5jPVRydWUpCiAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAgICAgICAgb25ib2FyZF90ZnQuaW1hZ2UoU21hbGxfaGVhcnQsIGNvbG9yPTB4ZmZmZixzeW5jPVRydWUpCiAgICAgICAgdGltZS5zbGVlcCgwLjEpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="MQ:s]T|`[d`/Y/a~s5nu" x="-716" y="132"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="-|ylUsH+eM(U$!BBc.8]"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="vcz/GIMm=]yuBEq|NWM$"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="DaWmA@FW.b2z*$QRJB[}"><value name="btn"><shadow type="pins_button" id="NH.|}Z6miJFIB.8]4F!q"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="actuator_led_bright" id="#YxI4N@mv{UPhzaZ~!0g"><value name="led"><shadow type="number" id="g*}8IFl;p|q`[#+ch[4k"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="L62+w=|}vWv`fRN32Idh"><field name="flag">1</field></shadow></value><next><block type="actuator_led_bright" id="aVluY#B#YlV6(M8^lucL"><value name="led"><shadow type="number" id="GPN?cvDtFB.;KV@=u25K"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id="jy,TgBrQ~l,7!=id2.iZ"><field name="flag">1</field></shadow></value></block></next></block></statement><next><block type="controls_if" id="3Iycln9IZYNU;_Gj{Z5L"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="15H$GZ+0~b/8oMhCNN-x"><value name="btn"><shadow type="pins_button" id="sLcaFRqydR/4xW=P$K}:"><field name="PIN">B2key</field></shadow></value></block></value><statement name="DO0"><block type="actuator_led_bright" id="T=E_DqQzT@1X6hrXOb`4"><value name="led"><shadow type="number" id="zwxzz/1p_~(9mzk=SORR"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="^u+:=_!/kHg55yB=MvY1"><field name="flag">0</field></shadow></value><next><block type="actuator_led_bright" id="K|/^fc^r!Zm#uqqdMVCT"><value name="led"><shadow type="number" id="wQ^bBp$vx?l6fc9y[]dw"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id="k:l:hu2Pr|L^tQ{/Ts/G"><field name="flag">0</field></shadow></value></block></next></block></statement></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2xlZAoKCndoaWxlIFRydWU6CiAgICBpZiBtaXhnb19zb3dsLkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMSwxKQogICAgICAgIG9uYm9hcmRfbGVkLnNldG9ub2ZmKDIsMSkKICAgIGlmIG1peGdvX3Nvd2wuQjJrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigxLDApCiAgICAgICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMiwwKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="qjiHuua@_A{AaAnkZ{me" x="-715" y="83"><field name="VAR">亮灯</field><value name="VALUE"><block type="logic_boolean" id="x?W)EP3k@h:W!ri]ndnB"><field name="BOOL">FALSE</field></block></value><next><block type="controls_whileUntil" id="3Gl1Rm+Z].-RnM?hmt]("><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="!,{wm1Pj,I5s(.`=As_c"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="dh.!f*^AC]{9v-z0LVym"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="CZ/PJOpCZCj@Hi]Yt-J9"><value name="btn"><shadow type="pins_button" id="QI6fvIi2|7C5qwRh:d!n"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="variables_set" id="XEMtpDpEnaq_4WI_P,1v"><field name="VAR">亮灯</field><value name="VALUE"><block type="logic_negate" id="Ft!KLt[[kVEa/.7ZD[2?"><value name="BOOL"><block type="variables_get" id="U~P}AJNz_0Yfv^TH-Pzj"><field name="VAR">亮灯</field></block></value></block></value></block></statement><next><block type="actuator_led_bright" id="c[B8hlU2;`MCJbFj2$Vd"><value name="led"><shadow type="number" id="=!p^cu^pB]]^_YFGNFG,"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="NNN0-GETjjx,*(P4aOjY"><field name="flag">0</field></shadow><block type="variables_get" id="tS?CdeU^nG0OY,e]azsL"><field name="VAR">亮灯</field></block></value><next><block type="actuator_led_bright" id="M_YDR2egr)l$U#z}t9zx"><value name="led"><shadow type="number" id="AA~wp=:~JJ/@A2rKe0!]"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id="x!vLc6K|~#{4N,xsi1k/"><field name="flag">0</field></shadow><block type="variables_get" id="C)+b?v]~aHrl8*p]+}l3"><field name="VAR">亮灯</field></block></value></block></next></block></next></block></statement></block></next></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2xlZAoKCuS6rueBryA9IEZhbHNlCndoaWxlIFRydWU6CiAgICBpZiBtaXhnb19zb3dsLkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAg5Lqu54GvID0gbm90IOS6rueBrwogICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMSzkuq7nga8pCiAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigyLOS6rueBrykK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="n-P2UWqsfR5ub+wHbuU`" x="-725" y="181"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="u*.Z+q@_[hQA0N}Z}MHl"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="qM9sOVF(|i}b!@W?@pIS"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="y9ODZ=ekAm@_lLIP_qOi"><value name="btn"><shadow type="pins_button" id="4)i_@]Xl9@JVq=aQgf,8"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="actuator_led_bright" id="YR.[7{9_VkxI.Y:dYuWv"><value name="led"><shadow type="number" id="~@iru)uy;sjhOOBAYOO|"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="jO)evR88WSC@QF|?UZEz"><field name="flag">1</field></shadow></value><next><block type="controls_delay_new" id="M0V+Pi]-CmR=OeO07l@~"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="qa)~yvxiV-[pVC0)1mLg"><field name="NUM">2</field></shadow></value><next><block type="actuator_led_bright" id="o7Awpd4Wj1MkRNB-W,4;"><value name="led"><shadow type="number" id="DpO:c^1bvB,;4Kbi!3K9"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="l{-T=2^/h4tk6Gi~s3No"><field name="flag">0</field></shadow></value></block></next></block></next></block></statement></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2xlZAppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICBpZiBtaXhnb19zb3dsLkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMSwxKQogICAgICAgIHRpbWUuc2xlZXAoMikKICAgICAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigxLDApCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="b(Phl]`H4o-IxKz|K?bw" x="-725" y="181"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="]Bo^Hsm7tOGQ!sztoA9m"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="4M=eg]Ru9BSj{cZP}2}^"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="4e8ynP:o|tu;P{[DO71)"><value name="btn"><shadow type="pins_button" id="V;L:~)llh@,560@K1Q.7"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="actuator_led_bright" id="mpC)z:hgf:);KfG{Fm:*"><value name="led"><shadow type="number" id="x7EI]fW2-ZRI,{?+MQHO"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="ZgKM|LPp$BSc[-m^}7ft"><field name="flag">1</field></shadow></value></block></statement><next><block type="controls_if" id="he,+WcD+mmdf8$2+G6-o"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="A12[_!l~=lNtL]Ze25e#"><value name="btn"><shadow type="pins_button" id=".GP_myIb]KR22m;!_,Eg"><field name="PIN">B2key</field></shadow></value></block></value><statement name="DO0"><block type="controls_delay_new" id="ub-MF;-VHBe3lM_,FEe|"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="e1ZRhexX2tZi^@np[B*y"><field name="NUM">2</field></shadow></value><next><block type="actuator_led_bright" id="`reNdr-#dknWE`*1LX.`"><value name="led"><shadow type="number" id="$1Vvx3k82z5Oczi)z?7b"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="7ErOYN3J`{O$A/kW|(6j"><field name="flag">0</field></shadow></value></block></next></block></statement></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2xlZAppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICBpZiBtaXhnb19zb3dsLkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMSwxKQogICAgaWYgbWl4Z29fc293bC5CMmtleS53YXNfcHJlc3NlZCgpOgogICAgICAgIHRpbWUuc2xlZXAoMikKICAgICAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigxLDApCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="m@V@(Sa{hL7ql$gsxQCt" x="-725" y="181"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="/Vx[h=lt(G,zLMctSGLZ"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="system_print" id="FLF1zy]i);Y1lpJRHHM7"><value name="VAR"><shadow type="text" id="`Cb@2=(,cOG+!Wnrq,L4"><field name="TEXT">Mixly</field></shadow><block type="sensor_sound" id="!Gx8[:7!x~l!QpoM2J[6"></block></value><next><block type="controls_delay_new" id="[UQmceZojz4{${ilsaXT"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="+G-z}X_y#tKFEeV#tGk6"><field name="NUM">1</field></shadow></value></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3NvdW5kCmltcG9ydCB0aW1lCgoKd2hpbGUgVHJ1ZToKICAgIHByaW50KG9uYm9hcmRfc291bmQucmVhZCgpKQogICAgdGltZS5zbGVlcCgxKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="J{Z,uj@td|QXa{kzd)As" x="-875" y="152"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="S@Rn-}wf1[pX4#:9AE/^"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="Qb-.c*40zg|h,2B[$})H"><field name="VAR">声音</field><value name="VALUE"><block type="sensor_sound" id="/v9k:.az/7O00}6U).dd"></block></value><next><block type="system_print" id="`0QoNy)c,(2g75=Yw|}6"><value name="VAR"><shadow type="text" id="++DxZ[KP-`31/yppbQDp"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="9v?f4te5Z[;h-lh*do=T"><field name="VAR">声音</field></block></value><next><block type="controls_if" id="=A1b:DzJl)mmgB9KP-*m"><value name="IF0"><block type="logic_compare" id="7EXp3s!8d_WaR3).x`3/"><field name="OP">GT</field><value name="A"><block type="variables_get" id="lb|a6ikMz(Qy9P[`N.=L"><field name="VAR">声音</field></block></value><value name="B"><block type="math_number" id="r(4QH=z}/;|/ZP5:=i,n"><field name="NUM">2000</field></block></value></block></value><statement name="DO0"><block type="actuator_led_bright" id="dt7Fu_k$1A5Z0+Kvex16"><value name="led"><shadow type="number" id="-Uy,M0c^kEKq@(eZArQ_"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id=";VjhJ0T*Jsn:ndIU.(Da"><field name="flag">-1</field></shadow></value><next><block type="controls_delay_new" id=",v)Ze|vF|t;!0w6L;Ucl"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="Q@xx[Lj){Z$(VvkwzP4M"><field name="NUM">0.5</field></shadow></value></block></next></block></statement><next><block type="controls_delay_new" id=",1WI~bUn/OxU+WTgvnho"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="8|37GNO_vo6D+6_BGdjs"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3NvdW5kCmltcG9ydCBtYWNoaW5lCmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF9sZWQKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAg5aOw6Z+zID0gb25ib2FyZF9zb3VuZC5yZWFkKCkKICAgIHByaW50KOWjsOmfsykKICAgIGlmIOWjsOmfsyA+IDIwMDA6CiAgICAgICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMSwtMSkKICAgICAgICB0aW1lLnNsZWVwKDAuNSkKICAgIHRpbWUuc2xlZXAoMC4xKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="AI|$Ik2eUvZC3-X@w2E5" x="-1129" y="200"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="Nt3!4eU/5BjrwDfc4,}9"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="Z^/z)AIUrB$b$ZG_?83x"><field name="VAR">声音</field><value name="VALUE"><block type="sensor_sound" id="cHWCTy^0h/3*rBhosFWc"></block></value><next><block type="system_print" id="|I[iWSD(~xZl[GN@#f3$"><value name="VAR"><shadow type="text" id="fZ5$PpPtQ!2Al61:A!md"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="J/dsZl7Sut:(7+sc_.|$"><field name="VAR">声音</field></block></value><next><block type="controls_if" id="*Zz]-8d7U32l|.]~]1a}"><value name="IF0"><block type="logic_compare" id=";.6M;E.$gxtqfknTN20W"><field name="OP">GT</field><value name="A"><block type="variables_get" id="{)fj@B#O)C|I#p~ZsvBa"><field name="VAR">声音</field></block></value><value name="B"><block type="math_number" id="]$?`+FdPW!qyBQ}w#IVm"><field name="NUM">2000</field></block></value></block></value><statement name="DO0"><block type="actuator_led_bright" id="(;!BcX5e3!0[.](^|AO-"><value name="led"><shadow type="number" id="Dx8h(VuH)QFiFUx.LdP8"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="o5s|Vex7mRj^nPiP=e2O"><field name="flag">1</field></shadow></value><next><block type="controls_delay_new" id="p6OwIm=-l(ooecQJ]}Pm"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="z_I@AAmg`lbnp4hFER:7"><field name="NUM">3</field></shadow></value><next><block type="actuator_led_bright" id="gFa,G-6m6UJ_VXZtX*j$"><value name="led"><shadow type="number" id="W#9yry5Fm^F6od)@l4|I"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="CD2DiJc8KP,;Ic_=|b@?"><field name="flag">0</field></shadow></value></block></next></block></next></block></statement><next><block type="controls_delay_new" id="z1N^du}ymNi,1+iB,if#"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="oFCuv9b(I]6O}0.W4Oc7"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3NvdW5kCmltcG9ydCBtYWNoaW5lCmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF9sZWQKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAg5aOw6Z+zID0gb25ib2FyZF9zb3VuZC5yZWFkKCkKICAgIHByaW50KOWjsOmfsykKICAgIGlmIOWjsOmfsyA+IDIwMDA6CiAgICAgICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMSwxKQogICAgICAgIHRpbWUuc2xlZXAoMykKICAgICAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigxLDApCiAgICB0aW1lLnNsZWVwKDAuMSkK</code>gICBvbmJvYXJkX2xlZC5zZXRvbm9mZigxLDEpCiAgICAgICAgdGltZS5zbGVlcCgzKQogICAgICAgIG9uYm9hcmRfbGVkLnNldG9ub2ZmKDEsMCkKICAgIHRpbWUuc2xlZXAoMC4xKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="GB0@lyFJOC?Tm1WA/m=V" x="-1318" y="196"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id=",|sLDr26TD#T;]UQj98p"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="V]7;{=ctBC|~30p=LvY1"><field name="VAR">声音</field><value name="VALUE"><block type="sensor_sound" id="rAkS~U];Jsb/r4x1$wj1"></block></value><next><block type="variables_set" id="(yNQfP*cuiL;f~Yb??*m"><field name="VAR">光照</field><value name="VALUE"><block type="sensor_LTR308" id="VR/(4/!Rx)QI0z6=m-J;"></block></value><next><block type="system_print_many" id="wP22x9xHqp/(ZFMxoga)"><mutation items="2"></mutation><value name="ADD0"><block type="variables_get" id="T1(_NgJ$5S-*b]ZEkWR?"><field name="VAR">声音</field></block></value><value name="ADD1"><block type="variables_get" id="R(g5e4V$M-.E8^WknZEA"><field name="VAR">光照</field></block></value><next><block type="controls_if" id="wVwN9vm@^^.q@6^Do4z~"><value name="IF0"><block type="logic_operation" id="?IHnn_,l)V2#je_A*gYW" inline="false"><field name="OP">AND</field><value name="A"><block type="logic_compare" id="Um*2i#B)betF741+g+8;"><field name="OP">GT</field><value name="A"><block type="variables_get" id="94$n,H6~ulsnNHc}4P!t"><field name="VAR">声音</field></block></value><value name="B"><block type="math_number" id="G4CfM0EuVli*LRFd*#o_"><field name="NUM">2000</field></block></value></block></value><value name="B"><block type="logic_compare" id="!rzVzNDh0}J?_Z9u19,O"><field name="OP">LT</field><value name="A"><block type="variables_get" id="@q6p,abrPY/JL#81[5i4"><field name="VAR">光照</field></block></value><value name="B"><block type="math_number" id="!$4`N$6VkXmSGmE1/@!H"><field name="NUM">10</field></block></value></block></value></block></value><statement name="DO0"><block type="actuator_led_bright" id="awc@!W8:^8PH6y8~ZO$*"><value name="led"><shadow type="number" id="}pL!2!22(!O$(.ksd5Qz"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="w.65oMVX3w-]/rSro#kp"><field name="flag">1</field></shadow></value><next><block type="controls_delay_new" id="mJ(OtYk|_mH4DX)*KD!@"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="VhY+FML0XmJqX(q|JpF2"><field name="NUM">3</field></shadow></value><next><block type="actuator_led_bright" id=",9B_Jo7UozRZL^i/SwX`"><value name="led"><shadow type="number" id="8fpyoga-z?a((9m#IjEJ"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="bfZ6`N5egHlNyEHfjon8"><field name="flag">0</field></shadow></value></block></next></block></next></block></statement><next><block type="controls_delay_new" id="{(dAgwOYMT6u?h_uGT;C"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="-pl;)Y?]iNn6dOr@i});"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3NvdW5kCmZyb20gbWl4Z29fc293bCBpbXBvcnQgb25ib2FyZF9hbHMKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2xlZAppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICDlo7Dpn7MgPSBvbmJvYXJkX3NvdW5kLnJlYWQoKQogICAg5YWJ54WnID0gb25ib2FyZF9hbHMuYWxzX3ZpcygpCiAgICBwcmludCjlo7Dpn7MsIOWFieeFpykKICAgIGlmIOWjsOmfsyA+IDIwMDAgYW5kIOWFieeFpyA8IDEwOgogICAgICAgIG9uYm9hcmRfbGVkLnNldG9ub2ZmKDEsMSkKICAgICAgICB0aW1lLnNsZWVwKDMpCiAgICAgICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMSwwKQogICAgdGltZS5zbGVlcCgwLjEpCg==</code>e>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="r1oAQLvM#yd5)YdfKXx|" x="-838" y="236"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="1]d7bg;VwtV,k~(0PSkb"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="system_print" id="+|@-Gb}3[Q]Yu`R;//(h"><value name="VAR"><shadow type="text" id="?9kq,90v?)9=AUtO|7k$"><field name="TEXT">Mixly</field></shadow><block type="sensor_mixgo_touch_slide" id="N6Fr~+`owJgHLI~fju)3"></block></value><next><block type="controls_delay_new" id="5KS3fTy(uutp|wYQT0Nc"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="D)+H`Q_X6rJ:(v3A1mJ|"><field name="NUM">0.1</field></shadow></value></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2JvdAppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICBwcmludChvbmJvYXJkX2JvdC50b3VjaF9zbGlkZSgpKQogICAgdGltZS5zbGVlcCgwLjEpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="o|,nl,{3|yM1*:wsClwR" x="-844" y="165"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="x-?m*`2su}+((1{P;XHz"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="tFV]-+##M!Ukh3sWFS!^"><field name="VAR">亮度</field><value name="VALUE"><block type="math_to_int" id="iY}@Csn@JJ3m$T!b@UOs"><field name="OP">ceil</field><value name="A"><shadow type="math_number" id="zoa$._}Ix@?ZRe-sx8.h"><field name="NUM">0.998</field></shadow><block type="math_map" id="9f#7w1mc.h{IeC$p;6jn" inline="false"><value name="NUM"><shadow type="math_number" id="=1O^)]`Ir_Dxv};G.rne"><field name="NUM">50</field></shadow><block type="sensor_mixgo_touch_slide" id="2!00e3YwRaj#s*.N:ryp"></block></value><value name="fromLow"><shadow type="math_number" id="Aq@JUEsSI*^!n?NA)+jY"><field name="NUM">-100</field></shadow></value><value name="fromHigh"><shadow type="math_number" id="H/^wQ=ap?EO1chgSB0un"><field name="NUM">100</field></shadow></value><value name="toLow"><shadow type="math_number" id="?OG!FuUO[Y!uPVAB^Or3"><field name="NUM">0</field></shadow></value><value name="toHigh"><shadow type="math_number" id="FQd)pQB|#{v[nSJ$2B[t"><field name="NUM">100</field></shadow></value></block></value></block></value><next><block type="actuator_led_brightness" id="e`2t.sO,G}k8+o]O*A|Y"><value name="led"><shadow type="number" id="JO8lAu}L)Z4buP41.(U`"><field name="op">2</field></shadow></value><value name="bright"><shadow type="math_number" id="tD+HYXE5]@R;bz8pOH!N"><field name="NUM">100</field></shadow><block type="variables_get" id="E6X!vm.Y|8E[Wu,YX{MF"><field name="VAR">亮度</field></block></value></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2JvdApmcm9tIG1peHB5IGltcG9ydCBtYXRoX21hcAppbXBvcnQgbWF0aApmcm9tIG1peGdvX3Nvd2wgaW1wb3J0IG9uYm9hcmRfbGVkCgoKd2hpbGUgVHJ1ZToKICAgIOS6ruW6piA9IG1hdGguY2VpbChtYXRoX21hcChvbmJvYXJkX2JvdC50b3VjaF9zbGlkZSgpLCAoLTEwMCksIDEwMCwgMCwgMTAwKSkKICAgIG9uYm9hcmRfbGVkLnNldGJyaWdodG5lc3MoMiwg5Lqu5bqmKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="]#ItU^bsimcA*MsR;G9X" x="-844" y="165"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="p*@?zU}FBExKXHdoL6b5"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="uK3C_]4$nX[(7;?hjQUV"><mutation else="1"></mutation><value name="IF0"><block type="logic_negate" id="~Dghot/R{C-R.S)]]Hm,"><value name="BOOL"><block type="logic_compare_continous" id="i*zN;PBhfytb?Simv,nZ"><field name="OP1">LT</field><field name="OP2">LT</field><value name="A"><shadow type="math_number" id="ACF6w|^+mjaJ7~pzil$0"><field name="NUM">-5</field></shadow></value><value name="B"><shadow type="variables_get" id="cxeP42[~VTJZB2oSvhnI"><field name="VAR">x</field></shadow><block type="sensor_mixgo_touch_slide" id="BRq{prTYS+mBwN]5=.k1"></block></value><value name="C"><shadow type="math_number" id="h9/B)kL)kxBIq-qiMm*J"><field name="NUM">5</field></shadow></value></block></value></block></value><statement name="DO0"><block type="variables_set" id="Ug3?FPEl5dcq.,F4[y:F"><field name="VAR">亮度</field><value name="VALUE"><block type="math_to_int" id="O8wfxVw@DOT8tf7l}y8/"><field name="OP">ceil</field><value name="A"><shadow type="math_number" id="ow;i:rXP`Iah15ex+9?l"><field name="NUM">0.998</field></shadow><block type="math_map" id=")84127D[Qn:K@J{8/pvo" inline="false"><value name="NUM"><shadow type="math_number" id="0tUhM(JeAO8_hh!JSh~m"><field name="NUM">50</field></shadow><block type="sensor_mixgo_touch_slide" id="`4mUUlA1pY-Hn#W0(T;r"></block></value><value name="fromLow"><shadow type="math_number" id="pj5UX7iiMhA)`_#J]G-:"><field name="NUM">-100</field></shadow></value><value name="fromHigh"><shadow type="math_number" id="9=,Ss36z@8/-/VHm?8O|"><field name="NUM">100</field></shadow></value><value name="toLow"><shadow type="math_number" id="n{iu{tz1LSC`~MnChS]@"><field name="NUM">0</field></shadow></value><value name="toHigh"><shadow type="math_number" id="4zz3wDZ~I6w0y|aDR=/B"><field name="NUM">100</field></shadow></value></block></value></block></value><next><block type="actuator_led_brightness" id="~iL:qtNfG/tpXU+)#ljf"><value name="led"><shadow type="number" id="PKsQ*`7*LpiK`I7s=A+x"><field name="op">2</field></shadow></value><value name="bright"><shadow type="math_number" id="bkkh{ZvvJKROI]~Yp6($"><field name="NUM">100</field></shadow><block type="variables_get" id="l^jx88Vpmn{wkDBS=B^p"><field name="VAR">亮度</field></block></value><next><block type="controls_delay_new" id="uXf]bw2p|1d3Cm;M)9fH"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="H)8r2sw9LdGgI44[f|v/"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></statement><statement name="ELSE"><block type="actuator_led_brightness" id="TDvbJ@G(O5qnDn:f79|Z"><value name="led"><shadow type="number" id="JoSvT,]Kv$-ElkE1jKS="><field name="op">2</field></shadow></value><value name="bright"><shadow type="math_number" id="rV|FU6eX[]5h?j.(aXna"><field name="NUM">0</field></shadow></value></block></statement></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2JvdApmcm9tIG1peHB5IGltcG9ydCBtYXRoX21hcAppbXBvcnQgbWF0aApmcm9tIG1peGdvX3Nvd2wgaW1wb3J0IG9uYm9hcmRfbGVkCmltcG9ydCB0aW1lCgoKd2hpbGUgVHJ1ZToKICAgIGlmIG5vdCAoLTUgPCBvbmJvYXJkX2JvdC50b3VjaF9zbGlkZSgpIDwgNSk6CiAgICAgICAg5Lqu5bqmID0gbWF0aC5jZWlsKG1hdGhfbWFwKG9uYm9hcmRfYm90LnRvdWNoX3NsaWRlKCksICgtMTAwKSwgMTAwLCAwLCAxMDApKQogICAgICAgIG9uYm9hcmRfbGVkLnNldGJyaWdodG5lc3MoMiwg5Lqu5bqmKQogICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgZWxzZToKICAgICAgICBvbmJvYXJkX2xlZC5zZXRicmlnaHRuZXNzKDIsIDApCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="9BS[!A-S,t5#z?/T_R`," x="-844" y="165"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="!U$l]K)Sk#exwiKQw)d*"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="MT`OPE3~]b|TX,?klXNu"><mutation else="1"></mutation><value name="IF0"><block type="logic_negate" id="x`Lavj-;ij!#ZzhUfYU_"><value name="BOOL"><block type="logic_compare_continous" id="Xj!*LQTb+pRi(2du5x_{"><field name="OP1">LT</field><field name="OP2">LT</field><value name="A"><shadow type="math_number" id="UE(YSO$eR4,H-O8HA|O:"><field name="NUM">-5</field></shadow></value><value name="B"><shadow type="variables_get" id="liRUV)-YD}A/~NQi@ss1"><field name="VAR">x</field></shadow><block type="sensor_mixgo_touch_slide" id="s`ZMGhss-ZjF5C=YQo52"></block></value><value name="C"><shadow type="math_number" id="E6oOA+uXL-tl33e^1JHp"><field name="NUM">5</field></shadow></value></block></value></block></value><statement name="DO0"><block type="variables_set" id="Npz^FPOgHdJek(?;26sE"><field name="VAR">亮度</field><value name="VALUE"><block type="math_to_int" id="[L;`X?Zc3+iu5|H28IC$"><field name="OP">ceil</field><value name="A"><shadow type="math_number" id="ay;c2u-r!acj9[adk7kS"><field name="NUM">0.998</field></shadow><block type="math_map" id="cd,DZ4#MCel2nCr+d`D+" inline="false"><value name="NUM"><shadow type="math_number" id="xM6$hhkw1X.gbq.ID~|q"><field name="NUM">50</field></shadow><block type="sensor_mixgo_touch_slide" id="!R7i6`e5L}9hsN]Qj8t1"></block></value><value name="fromLow"><shadow type="math_number" id="rvgMS*e0q,JR?:B5W[VB"><field name="NUM">-100</field></shadow></value><value name="fromHigh"><shadow type="math_number" id="bze$=/7|ur}T6G-#M^n3"><field name="NUM">100</field></shadow></value><value name="toLow"><shadow type="math_number" id="yX!RQ=DKM9F]qp!8[Z(`"><field name="NUM">0</field></shadow></value><value name="toHigh"><shadow type="math_number" id="0!=,4dY!et7]s7CX7@NY"><field name="NUM">100</field></shadow></value></block></value></block></value><next><block type="actuator_led_brightness" id="[#:!YF:4AkWTiss:@~l!"><value name="led"><shadow type="number" id="G9t+^sDleD;a2H[m=V.k"><field name="op">2</field></shadow></value><value name="bright"><shadow type="math_number" id="7Coww+c_9}E9M7zH[1F0"><field name="NUM">100</field></shadow><block type="variables_get" id="eX:1_TN};IG^4NJnb:t)"><field name="VAR">亮度</field></block></value><next><block type="controls_delay_new" id="dbY|8OpWO*~8n[_Cdy7,"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="B^bFuy]|AAA^e93-/Ff]"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></statement><statement name="ELSE"><block type="actuator_led_brightness" id="(j~3tCp7((Mf3KJOj#yO" disabled-reasons="MANUALLY_DISABLED"><value name="led"><shadow type="number" id="9dqx~qdF*gbW##}8vbHy"><field name="op">2</field></shadow></value><value name="bright"><shadow type="math_number" id="DKD4uNx6TMd[JpXF)ay$"><field name="NUM">0</field></shadow></value></block></statement></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2JvdApmcm9tIG1peHB5IGltcG9ydCBtYXRoX21hcAppbXBvcnQgbWF0aApmcm9tIG1peGdvX3Nvd2wgaW1wb3J0IG9uYm9hcmRfbGVkCmltcG9ydCB0aW1lCgoKd2hpbGUgVHJ1ZToKICAgIGlmIG5vdCAoLTUgPCBvbmJvYXJkX2JvdC50b3VjaF9zbGlkZSgpIDwgNSk6CiAgICAgICAg5Lqu5bqmID0gbWF0aC5jZWlsKG1hdGhfbWFwKG9uYm9hcmRfYm90LnRvdWNoX3NsaWRlKCksICgtMTAwKSwgMTAwLCAwLCAxMDApKQogICAgICAgIG9uYm9hcmRfbGVkLnNldGJyaWdodG5lc3MoMiwg5Lqu5bqmKQogICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgZWxzZToKICAgICAgICBwYXNzCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="uSlRgAF.zdFeX-J(}RWt" x="-1160" y="-583"><field name="VAR">亮度目标</field><value name="VALUE"><block type="math_number" id="KdRT2P@]|N.U_(kpsc~P"><field name="NUM">40</field></block></value><next><block type="variables_set" id="La1?muQbEgqhx7*VSPy|"><field name="VAR">RGB亮度</field><value name="VALUE"><block type="math_number" id=")GjwFLY(;yBN@~pSS*NB"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="MfmMaXJ=NL83Pb-t(Yi~"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="kGX{75r6yFJ[c.cM7BsX"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="actuator_onboard_neopixel_rgb_all" id="ZuC`+HKayh:|OCJ7L8L`"><value name="RVALUE"><shadow type="math_number" id="lOo3]eCxlugyZlW{YeQc"><field name="NUM">0</field></shadow><block type="variables_get" id="7c3R3~glIbbtD@EHo3a6"><field name="VAR">RGB亮度</field></block></value><value name="GVALUE"><shadow type="math_number" id="QS=NTb~Arp3/p]Z|;Y|D"><field name="NUM">0</field></shadow><block type="variables_get" id="P@bi.,QQ8A@xcAERgC9}"><field name="VAR">RGB亮度</field></block></value><value name="BVALUE"><shadow type="math_number" id="eu=M$G.PSh86GX42WI4;"><field name="NUM">0</field></shadow><block type="variables_get" id="QpI~r_YH{l1E?14[I=+$"><field name="VAR">RGB亮度</field></block></value><next><block type="actuator_onboard_neopixel_write" id="hKd1CI[(;Z0Tv_o6Ax`;"><next><block type="variables_set" id="Z|ek0#KYuf]v@z;RWZT["><field name="VAR">当前亮度</field><value name="VALUE"><block type="sensor_LTR308" id="L05Np,x!;2pW]/,;;)D:"></block></value><next><block type="system_print" id="vqb2H|Sq|M2jzYS|E?81"><value name="VAR"><shadow type="text" id="faaTq,hA0vZjvM*DZ|4l"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="3VcG}sa+wCGVc,lkIy;J"><field name="VAR">当前亮度</field></block></value><next><block type="controls_if" id="h81(TIKfUJVP@_`{9W+N"><mutation elseif="1" else="1"></mutation><value name="IF0"><block type="logic_compare" id="^k+k]}Ez}PHp$^iYtDpN"><field name="OP">LT</field><value name="A"><block type="variables_get" id="*JVbM8jwKYCSwtdja5a3"><field name="VAR">当前亮度</field></block></value><value name="B"><block type="variables_get" id="Q~[@RDSRFLJ/vUzw7QVq"><field name="VAR">亮度目标</field></block></value></block></value><statement name="DO0"><block type="math_selfcalcu" id="BsGsQ7e)B_nVt/qX*fjb"><field name="OP">ADD</field><value name="A"><shadow type="variables_get" id="Qyn11i.2TR1?U9X@yT+]"><field name="VAR">a</field></shadow><block type="variables_get" id="5P|s8+!*$7`V.-CwObe1"><field name="VAR">RGB亮度</field></block></value><value name="B"><shadow type="math_number" id="O[2y3XYkM.nU3bDsOTSt"><field name="NUM">1</field></shadow></value></block></statement><value name="IF1"><block type="logic_compare" id="J1bt)C{98I6~+c?M|6v]"><field name="OP">GT</field><value name="A"><block type="variables_get" id="=hB{1`n(!6p_p1Y`sh*f"><field name="VAR">当前亮度</field></block></value><value name="B"><block type="variables_get" id="`Dt!72FK|2r@(kEQibPx"><field name="VAR">亮度目标</field></block></value></block></value><statement name="DO1"><block type="math_selfcalcu" id="94LS0fCx0)uHaP~Yz7qi"><field name="OP">MINUS</field><value name="A"><shadow type="variables_get" id="]L5,_qnAd4^FLE^Clknk"><field name="VAR">a</field></shadow><block type="variables_get" id="YfXnz-z]oOA(ZzdB.c={"><field name="VAR">RGB亮度</field></block></value><value name="B"><shadow type="math_number" id="C[l9Eh@c9hcio*MxdbBc"><field name="NUM">1</field></shadow></value></block></statement><next><block type="controls_delay_new" id="}YA)^[fo31{nY4J{rsw*"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="h4_Qz.W|,Zb8x*?c5|5A"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3JnYgpmcm9tIG1peGdvX3Nvd2wgaW1wb3J0IG9uYm9hcmRfYWxzCmltcG9ydCBtYWNoaW5lCmltcG9ydCB0aW1lCgoK5Lqu5bqm55uu5qCHID0gNDAKUkdC5Lqu5bqmID0gMAp3aGlsZSBUcnVlOgogICAgb25ib2FyZF9yZ2IuZmlsbCgoUkdC5Lqu5bqmLCBSR0Lkuq7luqYsIFJHQuS6ruW6pikpCiAgICBvbmJvYXJkX3JnYi53cml0ZSgpCiAgICDlvZPliY3kuq7luqYgPSBvbmJvYXJkX2Fscy5hbHNfdmlzKCkKICAgIHByaW50KOW9k+WJjeS6ruW6pikKICAgIGlmIOW9k+WJjeS6ruW6piA8IOS6ruW6puebruaghzoKICAgICAgICBSR0Lkuq7luqYgKz0gMQogICAgZWxpZiDlvZPliY3kuq7luqYgPiDkuq7luqbnm67moIc6CiAgICAgICAgUkdC5Lqu5bqmIC09IDEKICAgIGVsc2U6CiAgICAgICAgcGFzcwogICAgdGltZS5zbGVlcCgwLjEpCg==</code>de>>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="nCO3[u)sFG5j9VDn@_Wv" x="-2112" y="-573"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="Y.!,6XIL.cEHy+vZ(oXx"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="actuator_led_bright" id="s-Ek}?O*B8*u[1zoB*:e"><value name="led"><shadow type="number" id="RU]1M?~jt5A{34]aOWx/"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id="G_(@I^uBlVpM7[wFvFto"><field name="flag">1</field></shadow></value><next><block type="do_while" id="P7[?l~wq~Pd6[$0JFmcM"><field name="type">true</field><value name="select_data"><block type="sensor_mixgo_button_is_pressed" id="=D$efPMX!F;vwCekaEx8"><value name="btn"><shadow type="pins_button" id="1`MKNZTre8^Cjzt45JOZ"><field name="PIN">B1key</field></shadow></value></block></value><next><block type="actuator_led_bright" id="sN!RpfO{D,F@`-:J$Zhi"><value name="led"><shadow type="number" id="j^s8f[spR,a5B|k=)yLV"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id="VD]HC?$CmZzwvzp-{YLY"><field name="flag">0</field></shadow></value><next><block type="controls_delay_new" id="grOuBDNBqXsHupS:*RY("><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="2@OkYLru4N+t[54i8,1x"><field name="NUM">1</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2xlZAppbXBvcnQgbWl4Z29fc293bAppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigyLDEpCiAgICB3aGlsZSBUcnVlOgogICAgICAgIGlmIChtaXhnb19zb3dsLkIxa2V5LmlzX3ByZXNzZWQoKSk6CiAgICAgICAgICAgIGJyZWFrCiAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigyLDApCiAgICB0aW1lLnNsZWVwKDEpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="$y.JnpJA6nz`0z6MFD9," x="-1808" y="-548"><field name="VAR">亮灯时刻</field><value name="VALUE"><block type="math_number" id="y!SNggme=qE[v=XI=p@b"><field name="NUM">0</field></block></value><next><block type="variables_set" id="*nhUD?w9$q.6Z4rq@t*d"><field name="VAR">按下时刻</field><value name="VALUE"><block type="math_number" id="5#aMRPJGzDxH_i!=ZSDV"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="|pIs`mx0~QgXI1|pE+qg"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="/6eLWGCWmq?^7TtT4K}1"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="actuator_led_bright" id="4Sa*3VlS1V$tEN~]XwL{"><value name="led"><shadow type="number" id="])M-U,{6KQVNK`!I;u|#"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id=",bJ_b_?y/y2ixeCmrX-B"><field name="flag">1</field></shadow></value><next><block type="variables_set" id="l3poV`[ZajCTo(P.@M*9"><field name="VAR">亮灯时刻</field><value name="VALUE"><block type="controls_millis" id="eEX7Bu$~MyZDT(kSL#fG"><field name="Time">ms</field></block></value><next><block type="do_while" id="P=Wh;U3,Tw6n/jK+z98/"><field name="type">true</field><value name="select_data"><block type="sensor_mixgo_button_is_pressed" id="g=rHVY_d:Ch2w[mA3K:q"><value name="btn"><shadow type="pins_button" id="~iDIq.[SNviER(h=hB/Z"><field name="PIN">B1key</field></shadow></value></block></value><next><block type="actuator_led_bright" id="i_D@5v_W|~vHCOc@hsv1"><value name="led"><shadow type="number" id="~{Ea/P-!h*BE^xrj-Fs,"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id="|v-KLxgtK+]$tw6QK#JL"><field name="flag">0</field></shadow></value><next><block type="variables_set" id="Uo4F$aUEg~DhUzKtGl5s"><field name="VAR">按下时刻</field><value name="VALUE"><block type="controls_millis" id="di|WIW6dkC1J*PcO.q`l"><field name="Time">ms</field></block></value><next><block type="controls_delay_new" id="H6JI^$`C?wOWoB2+_[ON"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="Ke=~hBkJG`e|3H9]b:75"><field name="NUM">1</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2xlZAppbXBvcnQgdGltZQppbXBvcnQgbWl4Z29fc293bAoKCuS6rueBr+aXtuWIuyA9IDAK5oyJ5LiL5pe25Yi7ID0gMAp3aGlsZSBUcnVlOgogICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMiwxKQogICAg5Lqu54Gv5pe25Yi7ID0gdGltZS50aWNrc19tcygpCiAgICB3aGlsZSBUcnVlOgogICAgICAgIGlmIChtaXhnb19zb3dsLkIxa2V5LmlzX3ByZXNzZWQoKSk6CiAgICAgICAgICAgIGJyZWFrCiAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigyLDApCiAgICDmjInkuIvml7bliLsgPSB0aW1lLnRpY2tzX21zKCkKICAgIHRpbWUuc2xlZXAoMSkK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="t8h-*dSbo:W5;C4hDpM}" x="-1645" y="-513"><field name="VAR">亮灯时刻</field><value name="VALUE"><block type="math_number" id="R}Ub1r}}#Q#.sByBZd0D"><field name="NUM">0</field></block></value><next><block type="variables_set" id="S_ztH?4Ce!4wcx!geuhf"><field name="VAR">按下时刻</field><value name="VALUE"><block type="math_number" id="b|_c*6RtuRp-`jxdq]eh"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="?Ku6D3jjJWMI7}j,_[*t"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="_,u8e-AUbVWEq5^?X,7:"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="actuator_led_bright" id="PI[k24]*c75_s[taBAHS"><value name="led"><shadow type="number" id="+L]|G4NUMH|/0zy/,Z(5"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id="HxY(;m*FSY{uCxV]Q7vH"><field name="flag">1</field></shadow></value><next><block type="variables_set" id="rI0yoKb+y0nMb[1QX9MC"><field name="VAR">亮灯时刻</field><value name="VALUE"><block type="controls_millis" id="uE^ST+o4mPz`.7A|226D"><field name="Time">ms</field></block></value><next><block type="do_while" id="IwTZmV}.Bz]Z9Kjt!eY|"><field name="type">true</field><value name="select_data"><block type="sensor_mixgo_button_is_pressed" id="PrSS4Q*nah9oc9_P8X$Q"><value name="btn"><shadow type="pins_button" id="1Y+6^eJ3@AwDl9dUV9iE"><field name="PIN">B1key</field></shadow></value></block></value><next><block type="actuator_led_bright" id="d{8)CPiQ3s8B=2UAM:+}"><value name="led"><shadow type="number" id="zP):I;s,eNpg8A!3d.v="><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id="Gq*HmXKy]IT9TtTxL0-E"><field name="flag">0</field></shadow></value><next><block type="variables_set" id="gRZ/*^;XSRGT[$S`//2("><field name="VAR">按下时刻</field><value name="VALUE"><block type="controls_millis" id="-.Rb!MSHOU`ClsTjS*#}"><field name="Time">ms</field></block></value><next><block type="display_show_image_or_string_delay" id="p4N`t[[DaoB5qKTo1mf5"><field name="center">True</field><value name="data"><shadow type="text" id="6-,5#k?we(PLcA$smz+F"><field name="TEXT">Mixly</field></shadow><block type="math_arithmetic" id="eZh^x@Bya-j_z#|;etkx"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="KqHPZ0U||#tEHkUS(Tn9"><field name="NUM">1</field></shadow><block type="variables_get" id="zb^QT|o;/jzwwEEVy-9N"><field name="VAR">按下时刻</field></block></value><value name="B"><shadow type="math_number" id="D*L76znQSUV*JQEfNwz."><field name="NUM">1</field></shadow><block type="variables_get" id="cqE`uB*;_t1qP[.Xk1/j"><field name="VAR">亮灯时刻</field></block></value></block></value><value name="space"><shadow type="math_number" id="*m`Q~@nfe`M3x.MQXwzK"><field name="NUM">0</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="c2!1KJ0XoEwTd,U7=vm5"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="HlijgxVt*]r+=JWU$8$f"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="i-SBsPQl-!`N1DY,0+L5"><field name="NUM">1</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2xlZAppbXBvcnQgdGltZQppbXBvcnQgbWl4Z29fc293bApmcm9tIG1peGdvX3Nvd2wgaW1wb3J0IG9uYm9hcmRfdGZ0CgoK5Lqu54Gv5pe25Yi7ID0gMArmjInkuIvml7bliLsgPSAwCndoaWxlIFRydWU6CiAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigyLDEpCiAgICDkuq7nga/ml7bliLsgPSB0aW1lLnRpY2tzX21zKCkKICAgIHdoaWxlIFRydWU6CiAgICAgICAgaWYgKG1peGdvX3Nvd2wuQjFrZXkuaXNfcHJlc3NlZCgpKToKICAgICAgICAgICAgYnJlYWsKICAgIG9uYm9hcmRfbGVkLnNldG9ub2ZmKDIsMCkKICAgIOaMieS4i+aXtuWIuyA9IHRpbWUudGlja3NfbXMoKQogICAgb25ib2FyZF90ZnQuc2hvd3Mo5oyJ5LiL5pe25Yi7IC0g5Lqu54Gv5pe25Yi7LCBzcGFjZT0wLCBjZW50ZXI9VHJ1ZSxzeW5jPVRydWUpCiAgICB0aW1lLnNsZWVwKDEpCg==</code>/code>uc2hvd3Moc3RyKChfRTZfOENfODlfRTRfQjhfOEJfRTZfOTdfQjZfRTVfODhfQkIgLSBfRTRfQkFfQUVfRTdfODFfQUZfRTZfOTdfQjZfRTVfODhfQkIpKSxzcGFjZSA9IDAsY2VudGVyID0gVHJ1ZSkKICAgIHRpbWUuc2xlZXAoMSkK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="hl.{|##QyCannq?e/w#p" x="-1787" y="-538"><field name="VAR">亮灯时刻</field><value name="VALUE"><block type="math_number" id="bAA:*,Uayiok@*b]HrJ;"><field name="NUM">0</field></block></value><next><block type="variables_set" id="b)`Lr~NCfnJwa}lodrhn"><field name="VAR">按下时刻</field><value name="VALUE"><block type="math_number" id="H0^Rzo83$dW=p,p0:-LG"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="8xfqQ*h$pDn_1K~jN-R3"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="`DFZVe$1dce6mg#0L{q`"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_delay_new" id="EH+[9r,xcg7c1LT5w=zc"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="38X7*K1.3~WX_*X^tbCa"><field name="NUM">1</field></shadow><block type="math_random" id="BRaWj`rg(^99ZHibz?e-"><field name="TYPE">float</field><value name="FROM"><shadow type="math_number" id=".,LRA7re;8oX@`I?W2ZR"><field name="NUM">1</field></shadow></value><value name="TO"><shadow type="math_number" id="r2LkG`G|i+D6C*BJ`?ud"><field name="NUM">2</field></shadow></value></block></value><next><block type="actuator_led_bright" id="bR$1sF~[k-sc_Q//_;.]"><value name="led"><shadow type="number" id="MQ(3vfq)9aXQJ-wZl*7R"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id=",=Vv)0A,VYvhHEXu,sY|"><field name="flag">1</field></shadow></value><next><block type="variables_set" id="zAn3|Q]:Sno!NTc_$VeF"><field name="VAR">亮灯时刻</field><value name="VALUE"><block type="controls_millis" id="B|75Kky^w:pd:05+`P=x"><field name="Time">ms</field></block></value><next><block type="do_while" id="#v=_-pfyyag*[^u?Gvs{"><field name="type">true</field><value name="select_data"><block type="sensor_mixgo_button_is_pressed" id="tBf[wS-C#!iC.(`2nopx"><value name="btn"><shadow type="pins_button" id=",,3ld~4(t9J#D~wjfUZ3"><field name="PIN">B1key</field></shadow></value></block></value><next><block type="actuator_led_bright" id="KooBl/^VhHF=$)JnqBEl"><value name="led"><shadow type="number" id="=i8xp?O:jp8z|/Rba3lh"><field name="op">2</field></shadow></value><value name="bright"><shadow type="ledswitch" id="ujyS1$h4J*J#f$_ubKJ8"><field name="flag">0</field></shadow></value><next><block type="variables_set" id="0*`P7b*SUEv=z[G@a[1J"><field name="VAR">按下时刻</field><value name="VALUE"><block type="controls_millis" id="H2}[S*pyMq7t@4odKNlq"><field name="Time">ms</field></block></value><next><block type="display_show_image_or_string_delay" id="!+gEx*YK}rPoITg]3)YA"><field name="center">True</field><value name="data"><shadow type="text" id="sfy8/]nRQ-p(gN+{hXn5"><field name="TEXT">Mixly</field></shadow><block type="math_arithmetic" id="vyUUI)a?2E6?Rxj|:c=q"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="nC3ChJWLK-[ilI7ocCx-"><field name="NUM">1</field></shadow><block type="variables_get" id="G7`2^^Du;T,@L$#)oGV}"><field name="VAR">按下时刻</field></block></value><value name="B"><shadow type="math_number" id="wjuq;ybC^.wwSd[HhB.L"><field name="NUM">1</field></shadow><block type="variables_get" id="kE{Ft*=@8;!kg7FRtz(q"><field name="VAR">亮灯时刻</field></block></value></block></value><value name="space"><shadow type="math_number" id=")upH#@7BBcVO45FEHaL]"><field name="NUM">0</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id=":HepRkBeu@B$7A|q;qzw"><field name="BOOL">TRUE</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IHRpbWUKaW1wb3J0IHJhbmRvbQpmcm9tIG1peGdvX3NhbnQgaW1wb3J0IG9uYm9hcmRfbGVkCmltcG9ydCBtaXhnb19zYW50CmZyb20gbWl4Z29fc2FudCBpbXBvcnQgb25ib2FyZF90ZnQKCuS6rueBr+aXtuWIuyA9IDAK5oyJ5LiL5pe25Yi7ID0gMAp3aGlsZSBUcnVlOgogICAgdGltZS5zbGVlcCgocmFuZG9tLnVuaWZvcm0oMSwgMikpKQogICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMiwxKQogICAg5Lqu54Gv5pe25Yi7ID0gdGltZS50aWNrc19tcygpCiAgICB3aGlsZSBUcnVlOgogICAgICAgIGlmIChtaXhnb19zYW50LkIxa2V5LmlzX3ByZXNzZWQoKSk6CiAgICAgICAgICAgIGJyZWFrCiAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZigyLDApCiAgICDmjInkuIvml7bliLsgPSB0aW1lLnRpY2tzX21zKCkKICAgIG9uYm9hcmRfdGZ0LnNob3dzKOaMieS4i+aXtuWIuyAtIOS6rueBr+aXtuWIuywgc3BhY2U9MCwgY2VudGVyPVRydWUsc3luYz1UcnVlKQo=</code>fODFfQUZfRTZfOTdfQjZfRTVfODhfQkIpKSkK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="8w.=n:yu0iH({x@H#Gp/" x="-2000" y="-625"><field name="VAR">亮灯时刻</field><value name="VALUE"><block type="math_number" id="su}+mz3ccDOC~XfAv~B="><field name="NUM">0</field></block></value><next><block type="variables_set" id="@2VRaWx@@qR(XDJjA*J-"><field name="VAR">按下时刻</field><value name="VALUE"><block type="math_number" id="`}e7sQ?S9`i}OzF31x=6"><field name="NUM">0</field></block></value><next><block type="variables_set" id="(EK9*,MDWxg#!42~7iYf"><field name="VAR">亮灯编号</field><value name="VALUE"><block type="math_number" id=".mYV7x0d-?u;Eh}IKFx4"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id=";x|S;=(UCd(0#58GAkq`"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="LzQboOBnxnnUZGXuaM=z"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="0~x:05X5Zc_uJ$:i/b9b"><field name="VAR">亮灯编号</field><value name="VALUE"><block type="math_random" id="H~sytfd*k@*v)qU4A}2t"><field name="TYPE">int</field><value name="FROM"><shadow type="math_number" id="WMTx(.W0U//C2Cu(s*|("><field name="NUM">1</field></shadow></value><value name="TO"><shadow type="math_number" id="L_,{Nu3_n]#fBs942W_w"><field name="NUM">2</field></shadow></value></block></value><next><block type="controls_delay_new" id="e?BUKIv_qyyT=}n8r(dm"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="Ur3=*P6ZWr2Uj{`|LJlQ"><field name="NUM">1</field></shadow><block type="math_random" id="Y9FJdysWZW`7-bqAEW^t"><field name="TYPE">float</field><value name="FROM"><shadow type="math_number" id="nW{?QS{6cvO_9HBkv]D;"><field name="NUM">1</field></shadow></value><value name="TO"><shadow type="math_number" id="_y:MW9GmaM,bM]yyvi`Y"><field name="NUM">2</field></shadow></value></block></value><next><block type="actuator_led_bright" id="r:}N@,rzR^YWD|Up:vu;"><value name="led"><shadow type="number" id="_*5;X+#Pb0l/0zp@O3jT"><field name="op">1</field></shadow><block type="variables_get" id="?ZOXoosjnMHx^EO[`6)p"><field name="VAR">亮灯编号</field></block></value><value name="bright"><shadow type="ledswitch" id="rfoU$Yi9U^RE)Zvx~G[="><field name="flag">1</field></shadow></value><next><block type="variables_set" id="y3GKXoixsTK!sc7c.1/H"><field name="VAR">亮灯时刻</field><value name="VALUE"><block type="controls_millis" id="*NgwP}5=?Qr+[v{Dh{#*"><field name="Time">ms</field></block></value><next><block type="controls_delay_new" id="vkvu_NZ6lU*(*n3:n*PB"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="PX~.$m;x[$mHJy_kjkJT"><field name="NUM">1</field></shadow></value><next><block type="actuator_led_bright" id="[wyH,av$|vo3$wEIMJLH"><value name="led"><shadow type="number" id="_*5;X+#Pb0l/0zp@O3jT"><field name="op">1</field></shadow><block type="variables_get" id="i`2k[a+ez:;r9eJN`{qr"><field name="VAR">亮灯编号</field></block></value><value name="bright"><shadow type="ledswitch" id="TVF}RpeEb(4@_^Fm^D:P"><field name="flag">0</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IHJhbmRvbQppbXBvcnQgdGltZQpmcm9tIG1peGdvX3NhbnQgaW1wb3J0IG9uYm9hcmRfbGVkCgoK5Lqu54Gv5pe25Yi7ID0gMArmjInkuIvml7bliLsgPSAwCuS6rueBr+e8luWPtyA9IDAKd2hpbGUgVHJ1ZToKICAgIOS6rueBr+e8luWPtyA9IHJhbmRvbS5yYW5kaW50KDEsIDIpCiAgICB0aW1lLnNsZWVwKChyYW5kb20udW5pZm9ybSgxLCAyKSkpCiAgICBvbmJvYXJkX2xlZC5zZXRvbm9mZijkuq7nga/nvJblj7csMSkKICAgIOS6rueBr+aXtuWIuyA9IHRpbWUudGlja3NfbXMoKQogICAgdGltZS5zbGVlcCgxKQogICAgb25ib2FyZF9sZWQuc2V0b25vZmYo5Lqu54Gv57yW5Y+3LDApCg==</code>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="ft=Vq0(0CCngaWogssjS" x="-1405" y="-729"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="*dNmezeEs(^6thRVFw}-"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="system_print" id="I]2S#r7r_*iDi}8fIL`4"><value name="VAR"><shadow type="text" id="$waXA.6Nu|odi_zEu439"><field name="TEXT">Mixly</field></shadow><block type="sensor_get_acceleration" id="6f5:?JzNTnp67P,Bq,r0"><field name="key"></field></block></value><next><block type="controls_delay_new" id="fw#:04O(;H$#^IVqeQz#"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id=".a2:f]+2Y0=lU~YcsRd="><field name="NUM">0.1</field></shadow></value></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19zYW50IGltcG9ydCBvbmJvYXJkX2FjYwppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICBwcmludChvbmJvYXJkX2FjYy5hY2NlbGVyYXRpb24oKSkKICAgIHRpbWUuc2xlZXAoMC4xKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="`?N8`B=S[H-Z8_$,jG#v" x="-1911" y="-1213"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="+mB(.)jXkP^fa#K.Vud="><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_forEach" id="a#nJgI,8}E|OgR]+l[+:"><value name="LIST"><shadow type="list_many_input" id="hupoX!b!lzMWLzyvXtec"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="FT|yWMM2lHnrY`?;YBp/"><value name="FROM"><shadow type="math_number" id="z/J[|48y=|pDBDa{P!;`"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="t#{jQ!xTb$4F]x+K`Nsn"><field name="NUM">12</field></shadow></value><value name="STEP"><shadow type="math_number" id="RB7RoGsw{(}OV.|bDA*5"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="$9zsROxSGDC;zGVHZJ9T"><field name="VAR">x</field></shadow></value><statement name="DO"><block type="controls_delay_new" id="[56n7Ska*=@}}SCT41#+"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="UKV0TEAU(:S(OQ$Q:Fx2"><field name="NUM">0.1</field></shadow></value><next><block type="display_clear" id="QnXz1}+ND(H;wz9fbgBP"><value name="boolean"><shadow type="logic_boolean" id=";=)Y{,g,$jEo.}r+)eR^"><field name="BOOL">FALSE</field></shadow></value><next><block type="onboard_tft_display_shape_rect" id="lBaTz?^g0!)!jj;36E9D"><field name="shape">fill_rect</field><value name="x"><shadow type="math_number" id="S.LseKVC8g#VMeEKGX$V"><field name="NUM">20</field></shadow><block type="math_arithmetic" id=";`@+R6vJ2xs8,8G)nL:4"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="EU`o,4.!^pVJt5j7dnvP"><field name="NUM">10</field></shadow><block type="variables_get" id=",A#Ux1$77)TP*dl5_g8s"><field name="VAR">x</field></block></value><value name="B"><shadow type="math_number" id="71j)nkvoU:gJ:vCFNaEt"><field name="NUM">8</field></shadow></value></block></value><value name="y"><shadow type="math_number" id=";_ilaT@NDFKSV)JQ@;IB"><field name="NUM">120</field></shadow></value><value name="w"><shadow type="math_number" id="|81q/_!Pdm00Lq:?k_S:"><field name="NUM">8</field></shadow></value><value name="h"><shadow type="math_number" id="~].}9*H**K{iKIjBa_~S"><field name="NUM">8</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="^}{)jQ5EYiL`cSJmQk4$"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="@OPQ5~DE0UN24$Z/`Y[^"><field name="COLOR">#ffffff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="M4}1qbiQ;W:l!rsoSxj="><field name="BOOL">TRUE</field></shadow></value></block></next></block></next></block></statement></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IHRpbWUKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3RmdAoKCndoaWxlIFRydWU6CiAgICBmb3IgeCBpbiByYW5nZSgwLCAxMiwgMSk6CiAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAgICAgICAgb25ib2FyZF90ZnQuZmlsbCgwLHN5bmM9RmFsc2UpCiAgICAgICAgb25ib2FyZF90ZnQuZmlsbF9yZWN0KCh4ICogOCksIDEyMCwgOCwgOCwgMHhmZmZmLHN5bmM9VHJ1ZSkK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="A1M{C=oR.FCa+{9.JDds" x="-1644" y="-960"><field name="VAR">x</field><value name="VALUE"><block type="math_number" id="5Lc*$*`ubi9i.#3EYt2g"><field name="NUM">8</field></block></value><next><block type="controls_whileUntil" id="{8=X[JZmY(6LLJoib!1`"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="p}QvtUcLcZixw3NUu6b:"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="{Gfa1g3sEPc5QmL^y(Tu"><value name="IF0"><block type="logic_compare" id="a[-jdUS6IuNjYV1Fz|2#"><field name="OP">LT</field><value name="A"><block type="sensor_get_acceleration" id="PU4@~)`Cml|p{uEZVTFR"><field name="key">[0]</field></block></value><value name="B"><block type="math_number" id="_,cu#{VO=8.=3=w)V~JK"><field name="NUM">0</field></block></value></block></value><statement name="DO0"><block type="math_selfcalcu" id="Q3Qaa^Suti}^nJMFT1Cs"><field name="OP">MINUS</field><value name="A"><shadow type="variables_get" id="L(:2Gi:`BZYe!in@O18h"><field name="VAR">x</field></shadow></value><value name="B"><shadow type="math_number" id="ZR/~U#UwwXl5Bd_;jsq}"><field name="NUM">1</field></shadow></value></block></statement><next><block type="controls_if" id=",8089uc$TTH|SV8BLX++"><value name="IF0"><block type="logic_compare" id="RcMH-~u~V=RZ`ppgvf;l"><field name="OP">GT</field><value name="A"><block type="sensor_get_acceleration" id="[qvV;A1Da4ci==)$r#B5"><field name="key">[0]</field></block></value><value name="B"><block type="math_number" id="nTOfsx8~7}M7H#q0{)XM"><field name="NUM">0</field></block></value></block></value><statement name="DO0"><block type="math_selfcalcu" id="~}YP;0Qli!{)^EV^u6+R"><field name="OP">ADD</field><value name="A"><shadow type="variables_get" id="tr4,x#z}0Eb4/zZjsYjH"><field name="VAR">x</field></shadow></value><value name="B"><shadow type="math_number" id="wetda3ALoXMw0gSV:Taw"><field name="NUM">1</field></shadow></value></block></statement><next><block type="display_clear" id="my4qmgZDQs6,64||(Xn#"><value name="boolean"><shadow type="logic_boolean" id="t=O3STmx9FX4cOf2ZTN["><field name="BOOL">FALSE</field></shadow></value><next><block type="onboard_tft_display_shape_rect" id="b(EHG=qTDcdS;i-C8y8R"><field name="shape">fill_rect</field><value name="x"><shadow type="math_number" id="VJr=Ei3zE|$XTYuu!NP^"><field name="NUM">20</field></shadow><block type="math_arithmetic" id="Y?CgRi)R3KpfQT?)AR9g"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="837J7!g{ZD/4x^}C+{Mc"><field name="NUM">1</field></shadow><block type="variables_get" id="6#O63[W;ui@SI_}V?#bq"><field name="VAR">x</field></block></value><value name="B"><shadow type="math_number" id="X42TFtgQEJnkp$0zzjsA"><field name="NUM">8</field></shadow></value></block></value><value name="y"><shadow type="math_number" id="A^1;Zb(afoc!91o5j2O@"><field name="NUM">120</field></shadow></value><value name="w"><shadow type="math_number" id="U|5^!L(ZORRj?~P:c$lU"><field name="NUM">8</field></shadow></value><value name="h"><shadow type="math_number" id="NlM5/}E(t)WCm,H-[SOz"><field name="NUM">8</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="(Gq8/9d7wSoSlo$=hn?Q"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="l`gonA_0tAZkprow-[=|"><field name="COLOR">#ffffff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="!_..rFv{Ek/|P#|lBY;c"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="78utu79Fi7oY@Kxn:kJ2"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id=".8mBXuG0rM*^e=jtQ1dS"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></next></block></statement></block></next></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX2FjYwpmcm9tIG1peGdvX3Nvd2wgaW1wb3J0IG9uYm9hcmRfdGZ0CmltcG9ydCB0aW1lCgoKeCA9IDgKd2hpbGUgVHJ1ZToKICAgIGlmIG9uYm9hcmRfYWNjLmFjY2VsZXJhdGlvbigpWzBdIDwgMDoKICAgICAgICB4IC09IDEKICAgIGlmIG9uYm9hcmRfYWNjLmFjY2VsZXJhdGlvbigpWzBdID4gMDoKICAgICAgICB4ICs9IDEKICAgIG9uYm9hcmRfdGZ0LmZpbGwoMCxzeW5jPUZhbHNlKQogICAgb25ib2FyZF90ZnQuZmlsbF9yZWN0KCh4ICogOCksIDEyMCwgOCwgOCwgMHhmZmZmLHN5bmM9VHJ1ZSkKICAgIHRpbWUuc2xlZXAoMC4xKQo=</code>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="B~p)EdlJTeMF4@koZ]UG" x="-3763" y="-845"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="(vmv0^9KkB#G{.Ji5/$m"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_delay_new" id="G!NQ:q;XJwG.AY*bm10}"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="/aFS9]sB^5:5r.8Q|aHK"><field name="NUM">1</field></shadow></value><next><block type="system_print" id="ko2[Z5ynRhoW*YTF;`/M"><value name="VAR"><shadow type="text" id="^165iIe~972e0U_@fpC3"><field name="TEXT">Mixly</field></shadow><block type="controls_millis" id="x+gZU45ID)5CB45zGU3~"><field name="Time">ms</field></block></value></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IHRpbWUKaW1wb3J0IG1hY2hpbmUKCndoaWxlIFRydWU6CiAgICB0aW1lLnNsZWVwKDEpCiAgICBwcmludCh0aW1lLnRpY2tzX21zKCkpCg==</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><variables><variable id="ok:ro0iEW(eJAtg/iAsj">tim</variable></variables><block type="set_system_timer" id="?t)3,7YgcL|^bYrRB(f^" x="-3794" y="-1120"><field name="mode">PERIODIC</field><value name="VAR"><shadow type="variables_get" id="ya`O|nFkMNg=Vw(h!Tmm"><field name="VAR">tim</field></shadow></value><value name="PIN"><shadow type="timer_id_pin" id="l2SeRka2N11Dys/zJA0-"><field name="PIN">0</field></shadow></value><value name="period"><shadow type="math_number" id="atz`qR}EKX}PSfTj$~?w"><field name="NUM">1000</field></shadow></value><value name="callback"><shadow type="factory_block_return" id="VtF3(8`8J`i,.@dS2NCE"><field name="VALUE">tim_callback</field></shadow></value><next><block type="controls_whileUntil" id="MaBVWy_qHpU+{*66n/~:"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="mZ0Amq+iT#eXmDeo1Z4g"><field name="BOOL">TRUE</field></shadow></value></block></next></block><block type="procedures_defnoreturn" id="6_^^4bec`m!x93f*U#4F" x="-3791" y="-986"><mutation><arg name="tim" varid="ok:ro0iEW(eJAtg/iAsj"></arg></mutation><field name="NAME">tim_callback</field><statement name="STACK"><block type="system_print" id=",rlph@]LzeCCeu8bP=)4"><value name="VAR"><block type="controls_millis" id="BA.3ud/05p(i8*/zw{LE"><field name="Time">ms</field></block></value></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1hY2hpbmUKaW1wb3J0IHRpbWUKCgpkZWYgdGltX2NhbGxiYWNrKHRpbSk6CiAgICBwcmludCh0aW1lLnRpY2tzX21zKCkpCgoKCnRpbSA9IG1hY2hpbmUuVGltZXIoMCxwZXJpb2QgPSAxMDAwLCBtb2RlPW1hY2hpbmUuVGltZXIuUEVSSU9ESUMsIGNhbGxiYWNrPXRpbV9jYWxsYmFjaykKd2hpbGUgVHJ1ZToKICAgIHBhc3MK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><variables><variable id="ok:ro0iEW(eJAtg/iAsj">tim</variable></variables><block type="variables_set" id="Z#@4MiP]IJsN;MWZ3b/3" x="-3803" y="-1108"><field name="VAR">计时</field><value name="VALUE"><block type="math_number" id="EvN);BtL3s!lwZX9GlbZ"><field name="NUM">0</field></block></value><next><block type="set_system_timer" id="S3;-{y,]bF.L@+$MkLu2"><field name="mode">PERIODIC</field><value name="VAR"><shadow type="variables_get" id="WfTuRKsrS=`ORHlvaR-Q"><field name="VAR">tim</field></shadow></value><value name="PIN"><shadow type="timer_id_pin" id="D|tHDzEmsA*K3fFZ:7.8"><field name="PIN">0</field></shadow></value><value name="period"><shadow type="math_number" id="PF}mQResRslQS[;=ZhW~"><field name="NUM">100</field></shadow></value><value name="callback"><shadow type="factory_block_return" id="ZkMG7**r,)s[xWfJluTv"><field name="VALUE">tim_callback</field></shadow></value><next><block type="controls_whileUntil" id=".aQ`;0E1U;:kU+?V!G7H"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="CzW^rWi3)G8Qv7GFXTv)"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image_or_string_delay" id="vvp|c]1Q0~r$ZTM[1w)v"><field name="center">True</field><value name="data"><shadow type="text" id="-9C4+FCjtTM;A`{2bG]-"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="aBfRk@$^(Ml4x^Ge2Bed"><field name="VAR">计时</field></block></value><value name="space"><shadow type="math_number" id="hcC2DO;[B8:lGV!YI#[/"><field name="NUM">0</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="xAiwshhX1^wJb_@;jf{H"><field name="BOOL">TRUE</field></shadow></value></block></statement></block></next></block></next></block><block type="procedures_defnoreturn" id="U0[o#[?]N`,N]|Qru;jO" x="-3791" y="-856"><mutation><arg name="tim" varid="ok:ro0iEW(eJAtg/iAsj"></arg></mutation><field name="NAME">tim_callback</field><statement name="STACK"><block type="variables_global" id="CUL]C193+yCJuPWB3TjA"><value name="VAR"><block type="variables_get" id="S!oR#yAO@n|=^=xq)a_$"><field name="VAR">计时</field></block></value><next><block type="math_selfcalcu" id="M(p;`ZXv/MR#=w,v/9cD"><field name="OP">ADD</field><value name="A"><shadow type="variables_get" id="i*QoepeX-3lmRBZLGzB("><field name="VAR">计时</field></shadow></value><value name="B"><shadow type="math_number" id="uc/`Xtep!kSgGjq(q1b{"><field name="NUM">1</field></shadow></value></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3RmdAoKCmRlZiB0aW1fY2FsbGJhY2sodGltKToKICAgIGdsb2JhbCDorqHml7YKICAgIOiuoeaXtiArPSAxCgoKCuiuoeaXtiA9IDAKdGltID0gbWFjaGluZS5UaW1lcigwLHBlcmlvZCA9IDEwMCwgbW9kZT1tYWNoaW5lLlRpbWVyLlBFUklPRElDLCBjYWxsYmFjaz10aW1fY2FsbGJhY2spCndoaWxlIFRydWU6CiAgICBvbmJvYXJkX3RmdC5zaG93cyjorqHml7YsIHNwYWNlPTAsIGNlbnRlcj1UcnVlLHN5bmM9VHJ1ZSkK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><variables><variable id="ok:ro0iEW(eJAtg/iAsj">tim</variable></variables><block type="variables_set" id="pBuAsbQ4/x,(4OlSGIBx" x="-2908" y="-1031"><field name="VAR">开始</field><value name="VALUE"><block type="logic_boolean" id="T|*bh48QHg;ATay;!?yN"><field name="BOOL">FALSE</field></block></value><next><block type="variables_set" id="XNeFz^BvI{;lmp*g!LL;"><field name="VAR">计时</field><value name="VALUE"><block type="math_number" id="#Z(ns.3C3t}!`rvxaD8x"><field name="NUM">0</field></block></value><next><block type="set_system_timer" id="[u+zCz_+y:=I;T$)}#BX"><field name="mode">PERIODIC</field><value name="VAR"><shadow type="variables_get" id="^Mt5L2sHyKjl1`{Dn}yW"><field name="VAR">tim</field></shadow></value><value name="PIN"><shadow type="timer_id_pin" id="jbmX=3JvjQ-Xp,x-/Co["><field name="PIN">0</field></shadow></value><value name="period"><shadow type="math_number" id="s]j!oSF-2QQAHP_4z3jx"><field name="NUM">100</field></shadow></value><value name="callback"><shadow type="factory_block_return" id="hs$^;-Vn;(pRDkggAR?r"><field name="VALUE">tim_callback</field></shadow></value><next><block type="controls_whileUntil" id="aQVpUQm,M*bCpJ1|9_yC"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="DAB~/$_ep}5yNle!~QH`"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="U{a=hn-Lt:D4:x-Z.oQ`"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="{ISR4m`[m+g0l1GSIK2."><value name="btn"><shadow type="pins_button" id="O#bz142N`XMDhA=umw{w"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="variables_set" id="rmn_ah;H+TA^BR},aeBf"><field name="VAR">开始</field><value name="VALUE"><block type="logic_negate" id="L`D9q$NWUN#Om(.JSGG{"><value name="BOOL"><block type="variables_get" id="zh_c4T9dQ,|llbUUZn|z"><field name="VAR">开始</field></block></value></block></value></block></statement><next><block type="display_show_image_or_string_delay" id="d.LCD;.5S.Np4`l~H8@w"><field name="center">True</field><value name="data"><shadow type="text" id="rtUxu17fB[WTlhBtyM}e"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="$x#tZ0JEde.*},/*}?X0"><field name="VAR">计时</field></block></value><value name="space"><shadow type="math_number" id="?)y6ygi.|[o)jzqQcj-V"><field name="NUM">0</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="$`MNo)`mt?8!|aAwvj+]"><field name="BOOL">TRUE</field></shadow></value></block></next></block></statement></block></next></block></next></block></next></block><block type="procedures_defnoreturn" id="V}kcMbROYm+yg`Bmyn9R" x="-2902" y="-690"><mutation><arg name="tim" varid="ok:ro0iEW(eJAtg/iAsj"></arg></mutation><field name="NAME">tim_callback</field><statement name="STACK"><block type="variables_global" id="u^7vbq0nizF![{yjM{YQ"><value name="VAR"><block type="variables_get" id="8._4/y^fPPrFhf~x,Gsz"><field name="VAR">计时</field></block></value><next><block type="variables_global" id="]Z|]:*B3#0dnZx_,!1PK"><value name="VAR"><block type="variables_get" id="+#T[|/4cpT5lP#?XZg3L"><field name="VAR">开始</field></block></value><next><block type="controls_if" id="Al#ix!qnrs?GI1M^)F6i"><value name="IF0"><block type="variables_get" id="yuD2wdiq4AyHK^S*w}4d"><field name="VAR">开始</field></block></value><statement name="DO0"><block type="math_selfcalcu" id="{sw*Ack5K}[9s,H)qPtO"><field name="OP">ADD</field><value name="A"><shadow type="variables_get" id="rj(}jTh{uwj1y(06Qk_)"><field name="VAR">a</field></shadow><block type="variables_get" id="vV4)z7l!ZBwWsnCFbEE3"><field name="VAR">计时</field></block></value><value name="B"><shadow type="math_number" id="US$jVDx@#xG=mgi=gE4v"><field name="NUM">1</field></shadow></value></block></statement></block></next></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>aW1wb3J0IG1hY2hpbmUKaW1wb3J0IG1peGdvX3Nvd2wKZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3RmdAoKCmRlZiB0aW1fY2FsbGJhY2sodGltKToKICAgIGdsb2JhbCDorqHml7YKICAgIGdsb2JhbCDlvIDlp4sKICAgIGlmIOW8gOWnizoKICAgICAgICDorqHml7YgKz0gMQoKCgrlvIDlp4sgPSBGYWxzZQrorqHml7YgPSAwCnRpbSA9IG1hY2hpbmUuVGltZXIoMCxwZXJpb2QgPSAxMDAsIG1vZGU9bWFjaGluZS5UaW1lci5QRVJJT0RJQywgY2FsbGJhY2s9dGltX2NhbGxiYWNrKQp3aGlsZSBUcnVlOgogICAgaWYgbWl4Z29fc293bC5CMWtleS53YXNfcHJlc3NlZCgpOgogICAgICAgIOW8gOWniyA9IG5vdCDlvIDlp4sKICAgIG9uYm9hcmRfdGZ0LnNob3dzKOiuoeaXtiwgc3BhY2U9MCwgY2VudGVyPVRydWUsc3luYz1UcnVlKQo=</code>0wLCBjZW50ZXI9VHJ1ZSxzeW5jPVRydWUpCg==</code>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="ydZO{g34gntRDIPf(u=D" x="-1568" y="51"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="XSw/*StYt_cw;.Vn1-2B"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="actuator_onboard_neopixel_rgb" id="Om*scc(hl)g*jA?F#f1K"><value name="_LED_"><shadow type="math_number" id="VDc@69vH:W_t@JdAo:fu"><field name="NUM">0</field></shadow></value><value name="RVALUE"><shadow type="math_number" id="q#g/6AK[e_Sl!u4Ps]t2"><field name="NUM">0</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="zBWBaV[.TO?Wa/=1q[jE"><field name="NUM">30</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="Wv*$@$/eSqeWl;Y9/lhD"><field name="NUM">0</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id=";Jp3Tbr:-{{keoouH^(O"><next><block type="controls_delay_new" id="O[oa+38C(j0jw#t|T0hu"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="lCClZQ#*!9glJK]/i/[s"><field name="NUM">2</field></shadow></value><next><block type="actuator_onboard_neopixel_rgb" id=";~9~9(klMuJGuvOyV4)!"><value name="_LED_"><shadow type="math_number" id="n)Ok$$29ks^TnziOnTQR"><field name="NUM">0</field></shadow></value><value name="RVALUE"><shadow type="math_number" id="1#@wI?TL-Ed`Xi-o9@:$"><field name="NUM">30</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="Kc+K0HO$PNh(vV{mt;D,"><field name="NUM">30</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="/ywj.~MZ8N*2b5cyf0Hd"><field name="NUM">0</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id="ONgM}$/!(?r+5IukX/@Q"><next><block type="controls_delay_new" id="ucNh|@HpM|x.K9~[ZX[;"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="dDZg@K!mnM?;`*7YI]3f"><field name="NUM">0.5</field></shadow></value><next><block type="actuator_onboard_neopixel_rgb" id="bI_lO4F~my4#3Wq`)Pyb"><value name="_LED_"><shadow type="math_number" id="oylLvA+LCeXC?.gh=^L1"><field name="NUM">0</field></shadow></value><value name="RVALUE"><shadow type="math_number" id="g1zr+iL*5Lb4zBq|Mxik"><field name="NUM">30</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="Y=kuCm1a4IFAB*Q$7YlY"><field name="NUM">0</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="Dbna)ZXyFxb;KyTsnw)~"><field name="NUM">0</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id="~G=`,vyiROBuF9fagj}8"><next><block type="controls_delay_new" id="[mb`vE(!k1},KFRss2L~"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="KN3uhKhte?g:[zR6+yF,"><field name="NUM">2</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19zYW50IGltcG9ydCBvbmJvYXJkX3JnYgppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICBvbmJvYXJkX3JnYlswXSA9ICgwLCAzMCwgMCkKICAgIG9uYm9hcmRfcmdiLndyaXRlKCkKICAgIHRpbWUuc2xlZXAoMikKICAgIG9uYm9hcmRfcmdiWzBdID0gKDMwLCAzMCwgMCkKICAgIG9uYm9hcmRfcmdiLndyaXRlKCkKICAgIHRpbWUuc2xlZXAoMC41KQogICAgb25ib2FyZF9yZ2JbMF0gPSAoMzAsIDAsIDApCiAgICBvbmJvYXJkX3JnYi53cml0ZSgpCiAgICB0aW1lLnNsZWVwKDIpCg==</code>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="l._MyHoL#DWZt$t2!y:=" x="-715" y="-199"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="vEwyvx9$dd=Ui@5C5tZb"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="onboard_tft_display_line" id="oo)j]GM-dWAi6#@YrdCJ"><value name="x1"><shadow type="math_number" id="kVt_g*`}g^3sFtzTsQmL"><field name="NUM">127</field></shadow></value><value name="y1"><shadow type="math_number" id="l$Bb^B-a4yvoL]{IT?Q}"><field name="NUM">0</field></shadow></value><value name="x2"><shadow type="math_number" id="^/P,l}0Dj0dn5^5+~.0:"><field name="NUM">127</field></shadow></value><value name="y2"><shadow type="math_number" id="I-ic5cZ/dLD^g/TZzgpw"><field name="NUM">50</field></shadow><block type="text_to_number" id="s0e@G;WHhgmt4?+1OajR"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="Phf`zw=ng/h|;W=#O5nC"><field name="VAR">x</field></shadow><block type="math_map" id="DG42PR:f[Pg;JA]xMUPp" inline="false"><value name="NUM"><shadow type="math_number" id=")PD;]Pm5*p91N[ERoVcT"><field name="NUM">50</field></shadow><block type="sensor_sound" id="7RZL10wlga-W8[9~U)N_"></block></value><value name="fromLow"><shadow type="math_number" id="O=-Z-!8P?SxG|T7vP|vZ"><field name="NUM">0</field></shadow></value><value name="fromHigh"><shadow type="math_number" id="Q{?d{q$-)+)I$BbaTT?v"><field name="NUM">18000</field></shadow></value><value name="toLow"><shadow type="math_number" id="rR.D95uTZnV{/Wi6rh|h"><field name="NUM">0</field></shadow></value><value name="toHigh"><shadow type="math_number" id="Tu:i{;29L:+Ie}mRGatZ"><field name="NUM">127</field></shadow></value></block></value></block></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="V^0E+iH?_93Q9D.~2q/X"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="Q}wPf$[]MdXZ3)ZxY(?l"><field name="COLOR">#3366ff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="9E-~h6!3ji|1~sA,Pok~"><field name="BOOL">FALSE</field></shadow></value><next><block type="display_shift" id="5r2ZAZVrQ0tPpn,iaI?="><field name="OP">shift_left</field><value name="val"><shadow type="math_number" id="s[AqD5bnh8PRTf*@zHpa"><field name="NUM">1</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="Ro[L;H$Bzz:*a`LJQ|`L"><field name="BOOL">TRUE</field></shadow></value></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3RmdApmcm9tIG1peGdvX3Nvd2wgaW1wb3J0IG9uYm9hcmRfc291bmQKZnJvbSBtaXhweSBpbXBvcnQgbWF0aF9tYXAKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF90ZnQubGluZSgxMjcsIDAsIDEyNywgaW50KChtYXRoX21hcChvbmJvYXJkX3NvdW5kLnJlYWQoKSwgMCwgMTgwMDAsIDAsIDEyNykpKSwgMHgzMzNmLHN5bmM9RmFsc2UpCiAgICBvbmJvYXJkX3RmdC5zaGlmdF9sZWZ0KDEsc3luYz1UcnVlKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="q@5Y(o;+3:g)0P)2Wlfn" x="-655" y="-304"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="cz`DuK]dW5lRkU^cmokR"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="onboard_tft_display_line" id="cH?).FvZ4^ZHiPh^P.1s"><value name="x1"><shadow type="math_number" id="SHp3Fprb/`oI,PWGOnNP"><field name="NUM">127</field></shadow></value><value name="y1"><shadow type="math_number" id="Uj4;Dw,jN^)=gwmq9s(`"><field name="NUM">127</field></shadow></value><value name="x2"><shadow type="math_number" id="5y99fK7u^pv6)W~);a:e"><field name="NUM">127</field></shadow></value><value name="y2"><shadow type="math_number" id="j-XxH3N9~9{,hbEHh@5+"><field name="NUM">50</field></shadow><block type="math_arithmetic" id="rxyxAbdG,`0(7:AC?/2a"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="H|fpuMuKf@/X$CNW9_lR"><field name="NUM">127</field></shadow></value><value name="B"><shadow type="math_number" id="e15P9z3r?U4tUC{xH@v-"><field name="NUM">1</field></shadow><block type="text_to_number" id="2oA24Q7=(,bo015apRGo"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id=")VjJnS!`*-_z_f=sgjn1"><field name="VAR">x</field></shadow><block type="math_map" id="g3zOvSyQ8Oj{n]s?2]qO" inline="false"><value name="NUM"><shadow type="math_number" id="p@iXw27mS-D2jlY!3pUC"><field name="NUM">50</field></shadow><block type="sensor_sound" id="-9G9;8f$shO(EP7u3ra."></block></value><value name="fromLow"><shadow type="math_number" id="L4(Jh2b|V5:U/WtZ`3GK"><field name="NUM">0</field></shadow></value><value name="fromHigh"><shadow type="math_number" id="Y?VC8Y24}s77gRBii,V."><field name="NUM">18000</field></shadow></value><value name="toLow"><shadow type="math_number" id="Z[1r3~rlTA{!Xtt.3vZM"><field name="NUM">0</field></shadow></value><value name="toHigh"><shadow type="math_number" id="r3|LW].TR,NTTnIx4PUm"><field name="NUM">127</field></shadow></value></block></value></block></value></block></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="a2ax,d9$kzSS:T)IF7C("><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="Q;_0#@2S5A~YQYl22Q`("><field name="COLOR">#ffffff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="r|p7M-`MWzNdeeQ5.P`W"><field name="BOOL">FALSE</field></shadow></value><next><block type="display_shift" id=",!Xrygh9ft[56]*1M~oL"><field name="OP">shift_left</field><value name="val"><shadow type="math_number" id="wF99l`QC3*54G1f3!o*h"><field name="NUM">1</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="TKgu2?WD~vf[cWL[7jy0"><field name="BOOL">TRUE</field></shadow></value></block></next></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3RmdApmcm9tIG1peGdvX3Nvd2wgaW1wb3J0IG9uYm9hcmRfc291bmQKZnJvbSBtaXhweSBpbXBvcnQgbWF0aF9tYXAKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF90ZnQubGluZSgxMjcsIDEyNywgMTI3LCAoMTI3IC0gaW50KChtYXRoX21hcChvbmJvYXJkX3NvdW5kLnJlYWQoKSwgMCwgMTgwMDAsIDAsIDEyNykpKSksIDB4ZmZmZixzeW5jPUZhbHNlKQogICAgb25ib2FyZF90ZnQuc2hpZnRfbGVmdCgxLHN5bmM9VHJ1ZSkK</code>ld></block></value></block></statement></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19zYW50IGltcG9ydCBvbmJvYXJkX3RmdApmcm9tIG1peGdvX3NhbnQgaW1wb3J0IG9uYm9hcmRfc291bmQKZnJvbSBtaXhweSBpbXBvcnQgbWF0aF9tYXAKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF90ZnQuZmlsbCgwKQogICAgb25ib2FyZF90ZnQuc2hvdygpCiAgICBmb3IgeCBpbiByYW5nZSgwLCAyMzksIDEpOgogICAgICAgIG9uYm9hcmRfdGZ0LmxpbmUoeCwgMjM5LCB4LCAoMjM5IC0gaW50KChtYXRoX21hcChvbmJvYXJkX3NvdW5kLnJlYWQoKSwgMCwgNjAwMCwgMCwgMjM5KSkpKSwgMHhmZmZmKQogICAgICAgIG9uYm9hcmRfdGZ0LnNob3coKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="#Ce:eJqCbgca(^~7WDOb" x="-2151" y="-697"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="kl@(5XpIQ$~!kD8NYj@B"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="c=jyEx.H(q|`}pgovs.]"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id=":HB]x?YTml6TS0i@vu8^"><value name="btn"><shadow type="pins_button" id="+;P4U4~=S;;md,tGZ0;w"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="actuator_led_bright" id="t=[lxG4tIabs0CQGA16."><value name="led"><shadow type="number" id="y#u/8S8+IXzSd(6|Yzfi"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="Z45atzi4cq{OEZpw^#f("><field name="flag">1</field></shadow></value><next><block type="storage_fileopen" id="7Y[{5u~!J*(FH;ON_ofp"><field name="MODE">w</field><value name="FILENAME"><shadow type="text" id="o8W[7{k1q|NH/=ojhvBc"><field name="TEXT">/test.txt</field></shadow></value><value name="FILE"><shadow type="variables_get" id="n:Xn=}Xo|C!gSCqEF#k="><field name="VAR">f</field></shadow></value><next><block type="controls_forEach" id="Acm1j7*[C(O1sqmk9xtk"><value name="LIST"><shadow type="list_many_input" id="IQW::,W4~S@zW`5oFoyJ"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="OYlF9dU|^qlb8{,_B:p="><value name="FROM"><shadow type="math_number" id="@2P)mjWl0=(zk,dKYH`G"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="@x?/!PWX!L$juWYx$(f2"><field name="NUM">1000</field></shadow></value><value name="STEP"><shadow type="math_number" id="E9NIcQ*1k3-4{MTzshWT"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="xHQ7`eUae[QxIw3KBCOx"><field name="VAR">i</field></shadow></value><statement name="DO"><block type="storage_file_write" id="GC[,=:AUk(0j$3dn=y/O"><value name="data"><shadow type="text" id="Z@M+XiKiUz1Y{=(0Gr.x"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="t~m8o[:^h5+Dtny7WGf,"><value name="VAR"><shadow type="variables_get" id="j49O_Y_[!x=p{`dI0HUG"><field name="VAR">x</field></shadow><block type="variables_get" id=",NV_Miv2cY2~d+WAveKn"><field name="VAR">i</field></block></value></block></value><value name="FILE"><shadow type="variables_get" id="MyA/rlnP!9`:;@s7KQff"><field name="VAR">f</field></shadow></value><next><block type="storage_file_write" id="AQUZ1`@}?p=7z[Z4pNuO"><value name="data"><shadow type="text" id="VNJK,M4sHDc5nmTt-_H_"><field name="TEXT">Mixly</field></shadow><block type="ascii_to_char" id="4IR:GrS7WdJcW;WIvO?}"><value name="VAR"><shadow type="math_number" id="!hJ6h.I6Ng=YUCK5ZQfD"><field name="NUM">10</field></shadow></value></block></value><value name="FILE"><shadow type="variables_get" id="H3:7QY9[(Tm6Z_8WkeR`"><field name="VAR">f</field></shadow></value></block></next></block></statement><next><block type="storage_close_file" id="Ee.ibRhAdKP}qZJDbx-d"><value name="FILE"><shadow type="variables_get" id="YUmkfBcx*G68@!Pk`F-#"><field name="VAR">f</field></shadow></value><next><block type="actuator_led_bright" id="n}1JruCnF}~;1^J6[qcr"><value name="led"><shadow type="number" id="`KC*5V6^S*7cXAy1V_k:"><field name="op">1</field></shadow></value><value name="bright"><shadow type="ledswitch" id="b|),,FZLg8QFBO|2!nrv"><field name="flag">0</field></shadow></value></block></next></block></next></block></next></block></next></block></statement></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1peGdvX3NhbnQKZnJvbSBtaXhnb19zYW50IGltcG9ydCBvbmJvYXJkX2xlZAoKCndoaWxlIFRydWU6CiAgICBpZiBtaXhnb19zYW50LkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMSwxKQogICAgICAgIGYgPSBvcGVuKCcvdGVzdC50eHQnLCAndycpCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMTAwMCwgMSk6CiAgICAgICAgICAgIGYud3JpdGUoc3RyKGkpKQogICAgICAgICAgICBmLndyaXRlKGNocigxMCkpCiAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgb25ib2FyZF9sZWQuc2V0b25vZmYoMSwwKQo=</code>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="controls_whileUntil" id="Y/{bZ3gaLQiR3b:GI?ff" x="-1059" y="-650"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="6g[.P-PJa#_!k5/~uh{#"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_forEach" id="5Za6!;2b[ON+j4.9azI3"><value name="LIST"><shadow type="list_many_input" id="@@HQ/O3||-6!/HN]t`N/"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="}`QaZwC)S4PB#VBF-tyf"><value name="FROM"><shadow type="math_number" id="I[le17vrNv|YYnloRJDL"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="NK]YS7W_VBoUfseq.S)|"><field name="NUM">14</field></shadow></value><value name="STEP"><shadow type="math_number" id="UdV5a2Fzl1,IF?wt-~)N"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="Yf8T1GqkRBP)pgfQ4fb~"><field name="VAR">篮子位置</field></shadow></value><statement name="DO"><block type="display_clear" id="9~=pL$^nYw$yqsgOsw~`"><value name="boolean"><shadow type="logic_boolean" id="*10{?7_UAXu,N(#yeWkF"><field name="BOOL">FALSE</field></shadow></value><next><block type="onboard_tft_display_shape_rect" id="~aSlxxztjmX/J|2u@N5l"><field name="shape">fill_rect</field><value name="x"><shadow type="math_number" id="+:Oy,9v#jFyh!^p3,`pK"><field name="NUM">20</field></shadow><block type="math_arithmetic" id="UTT!#*Qq$w]5dPP?dgEn"><field name="OP">MULTIPLY</field><value name="A"><shadow type="math_number" id="p=q}-_J+Enz(d=6DF`*m"><field name="NUM">1</field></shadow><block type="variables_get" id="H!1{EsI9~CKkW}tFPse9"><field name="VAR">篮子位置</field></block></value><value name="B"><shadow type="math_number" id="}~`6F(APG`XL}WwhW5v-"><field name="NUM">8</field></shadow></value></block></value><value name="y"><shadow type="math_number" id="AE?8V}HyZV?C:9Tq;2At"><field name="NUM">120</field></shadow></value><value name="w"><shadow type="math_number" id="G^{U}Tw3JW0xaokZW-MZ"><field name="NUM">24</field></shadow></value><value name="h"><shadow type="math_number" id="|S+b)Av|^C,:5sYch2-n"><field name="NUM">8</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="mCA?y62@?SuYQ6jC0N$}"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="LdBTwmN^5^?q;Q:DUa*j"><field name="COLOR">#ffffff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="fN2@cB4R*l9$0mmoYsbj"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="YYmbl+,vIKPY,=]T|^81"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="z:5DA?:$Iq#SNu~)4Y^A"><field name="NUM">0.2</field></shadow></value></block></next></block></next></block></statement></block></statement></block></xml><config>{"BurnSpeed":{"key":"921600","label":"921600"}}</config><code>ZnJvbSBtaXhnb19zb3dsIGltcG9ydCBvbmJvYXJkX3RmdAppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICBmb3Ig56+u5a2Q5L2N572uIGluIHJhbmdlKDAsIDE0LCAxKToKICAgICAgICBvbmJvYXJkX3RmdC5maWxsKDAsc3luYz1GYWxzZSkKICAgICAgICBvbmJvYXJkX3RmdC5maWxsX3JlY3QoKOevruWtkOS9jee9riAqIDgpLCAxMjAsIDI0LCA4LCAweGZmZmYsc3luYz1UcnVlKQogICAgICAgIHRpbWUuc2xlZXAoMC4yKQo=</code>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="onboard_RTC_settime_string" id="?W^z`,zjnu`7+0Qz!`WI" x="-3318" y="-1048"><value name="CONTENT"><shadow type="tuple_input" id="Si`rs}Wutdl-pgGQX#c{"><field name="CONTENT">2025,5,27,16,49,58</field></shadow></value><next><block type="controls_whileUntil" id="JVY2t-`scMX$Ac0*|f,F"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="jC]7iXEw0h~r;u;bDS^Q"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image_or_string_delay" id="J`*Za(_a/1OmJ4x{U.ss"><field name="center">True</field><value name="data"><shadow type="text" id=":L/aK2rroxcfxpnPLDxT"><field name="TEXT">Mixly</field></shadow><block type="onboard_RTC_get_time_str" id="5hPXe7f^{+KxM;!1qH$="></block></value><value name="space"><shadow type="math_number" id="i$TDs#}Af5,t{M6sM,y,"><field name="NUM">0</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="M,u!{beJ;CyM.H,?)TgL"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="#r`]jF!3?i}58nw|zDjd"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="aHNjUn9!xFzR`GN]ZB9V"><field name="NUM">1</field></shadow></value></block></next></block></statement></block></next></block></xml><config>{}</config><code>aW1wb3J0IHJ0Y3RpbWUKZnJvbSBtaXhnb19zYW50IGltcG9ydCBvbmJvYXJkX3RmdAppbXBvcnQgdGltZQoKcnRjdGltZS5zZXR0aW1lKCgyMDI1LDUsMjcsMTYsNDksNTgpKQp3aGlsZSBUcnVlOgogICAgb25ib2FyZF90ZnQuc2hvd3MocnRjdGltZS5zdHJ0aW1lKCksIHNwYWNlPTAsIGNlbnRlcj1UcnVlLHN5bmM9VHJ1ZSkKICAgIHRpbWUuc2xlZXAoMSkK</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="onboard_RTC_settime_string" id="?W^z`,zjnu`7+0Qz!`WI" x="-3318" y="-1048"><value name="CONTENT"><shadow type="tuple_input" id="Si`rs}Wutdl-pgGQX#c{"><field name="CONTENT">2025,5,27,16,49,58</field></shadow></value><next><block type="controls_whileUntil" id="JVY2t-`scMX$Ac0*|f,F"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="jC]7iXEw0h~r;u;bDS^Q"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="onboard_tft_show_texts" id=",BAr8jS.H[XA2fL/)O.)"><value name="data"><shadow type="text" id="9n[cf4Qn9@Ixbs:yFY_D"><field name="TEXT">Mixly</field></shadow><block type="onboard_RTC_get_time_str" id="5hPXe7f^{+KxM;!1qH$="></block></value><value name="x"><shadow type="math_number" id="wGnXiPs`_mz1nl/zLYv~"><field name="NUM">0</field></shadow></value><value name="y"><shadow type="math_number" id="3q,|(Ql2~[yTA1ouDK5C"><field name="NUM">60</field></shadow></value><value name="size"><shadow type="math_number" id="z4^1UK1tt8FO]kk.gd.Q"><field name="NUM">3</field></shadow></value><value name="VAR"><shadow type="tuple_create_with_text_return" id="58Wadg-`M3hW]yx4tvnP"><field name="TEXT">255,255,0</field></shadow><block type="display_color_seclet" id="/Hr$G2?B9ND!f#{!xVe^"><field name="COLOR">#ffffff</field></block></value><value name="boolean"><shadow type="logic_boolean" id="MVEJ4$j:*uOXnqS3|!)+"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="#r`]jF!3?i}58nw|zDjd"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="aHNjUn9!xFzR`GN]ZB9V"><field name="NUM">1</field></shadow></value></block></next></block></statement></block></next></block></xml><config>{}</config><code>aW1wb3J0IHJ0Y3RpbWUKZnJvbSBtaXhnb19zYW50IGltcG9ydCBvbmJvYXJkX3RmdAppbXBvcnQgdGltZQoKcnRjdGltZS5zZXR0aW1lKCgyMDI1LDUsMjcsMTYsNDksNTgpKQp3aGlsZSBUcnVlOgogICAgb25ib2FyZF90ZnQudGV4dHMocnRjdGltZS5zdHJ0aW1lKCksIHg9MCwgeT02MCwgc2l6ZT0zLCBjb2xvcj0weGZmZmYsc3luYz1UcnVlKQogICAgdGltZS5zbGVlcCgxKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="onboard_RTC_settime_string" id="?W^z`,zjnu`7+0Qz!`WI" x="-3318" y="-1048"><value name="CONTENT"><shadow type="tuple_input" id="Si`rs}Wutdl-pgGQX#c{"><field name="CONTENT">2025,5,27,16,49,58</field></shadow></value><next><block type="controls_whileUntil" id="JVY2t-`scMX$Ac0*|f,F"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="jC]7iXEw0h~r;u;bDS^Q"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="2m/^f=vq@,b!Rn#sQjuj"><field name="VAR">mytup</field><value name="VALUE"><block type="onboard_RTC_get_time" id=".XS-VTFQUT*WE=;ad=TV"></block></value><next><block type="display_show_image_or_string_delay" id="J`*Za(_a/1OmJ4x{U.ss"><field name="center">True</field><value name="data"><shadow type="text" id=":L/aK2rroxcfxpnPLDxT"><field name="TEXT">Mixly</field></shadow><block type="text_format_noreturn" id="9v*Wl`)+W;AgY_`v?gQR" inline="false"><mutation items="3"></mutation><value name="VAR"><shadow type="text" id="a0#9ykhPD*rvT?LRy2;?"><field name="TEXT">{}:{}:{}</field></shadow></value><value name="ADD0"><block type="number_to_text" id="KhR.Zok/!3yxq6cJe@d)"><value name="VAR"><shadow type="variables_get" id="n[{C5QSrW0pn+vC[#KkE"><field name="VAR">x</field></shadow><block type="tuple_getIndex" id="Q+1wqbCIni4Y:4F9A[.|"><value name="TUP"><shadow type="variables_get" id="]ZJk`(h}D;uHABIpkIur"><field name="VAR">mytup</field></shadow></value><value name="AT"><shadow type="math_number" id="9$bR{(rLRpYc0Jp$qp3;"><field name="NUM">3</field></shadow></value></block></value></block></value><value name="ADD1"><block type="number_to_text" id="V4(jq3WVNJ#f+.GD?3q="><value name="VAR"><shadow type="variables_get" id="2l(8}B10Vj_O{lvqT!S6"><field name="VAR">x</field></shadow><block type="tuple_getIndex" id="kPjcwASMi6Tr[.6DJ_8`"><value name="TUP"><shadow type="variables_get" id="It^Q-XZ`r+,cKm?BI7{9"><field name="VAR">mytup</field></shadow></value><value name="AT"><shadow type="math_number" id="0it!c-q66*l(Rb:h}GqZ"><field name="NUM">4</field></shadow></value></block></value></block></value><value name="ADD2"><block type="number_to_text" id="B@:PwgY{5JGkWwZ=+Lmn"><value name="VAR"><shadow type="variables_get" id="_K1KeH-3wA77WgY3R]yX"><field name="VAR">x</field></shadow><block type="tuple_getIndex" id="D@}0{a~$:P/3C=VFJ?)i"><value name="TUP"><shadow type="variables_get" id="l8X$jqZMfW5uP+9*)]|w"><field name="VAR">mytup</field></shadow></value><value name="AT"><shadow type="math_number" id="Sm9(;Iqx1_4ugzYsHPaZ"><field name="NUM">5</field></shadow></value></block></value></block></value></block></value><value name="space"><shadow type="math_number" id="i$TDs#}Af5,t{M6sM,y,"><field name="NUM">0</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id="M,u!{beJ;CyM.H,?)TgL"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="#r`]jF!3?i}58nw|zDjd"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="aHNjUn9!xFzR`GN]ZB9V"><field name="NUM">1</field></shadow></value></block></next></block></next></block></statement></block></next></block></xml><config>{}</config><code>aW1wb3J0IHJ0Y3RpbWUKaW1wb3J0IHRpbWUKZnJvbSBtaXhnb19zYW50IGltcG9ydCBvbmJvYXJkX3RmdAoKcnRjdGltZS5zZXR0aW1lKCgyMDI1LDUsMjcsMTYsNDksNTgpKQp3aGlsZSBUcnVlOgogICAgbXl0dXAgPSB0aW1lLmxvY2FsdGltZSgpCiAgICBvbmJvYXJkX3RmdC5zaG93cygne306e306e30nLmZvcm1hdChzdHIobXl0dXBbM10pLCBzdHIobXl0dXBbNF0pLCBzdHIobXl0dXBbNV0pKSwgc3BhY2U9MCwgY2VudGVyPVRydWUsc3luYz1UcnVlKQogICAgdGltZS5zbGVlcCgxKQo=</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 3.0 rc0" board="Python ESP32-C5@元控自立(SOWL)" shown="block"><block type="variables_set" id="z{/SSs]9,Rx9y+jn2==E" x="-2535" y="-935"><field name="VAR">settime</field><value name="VALUE"><block type="system_input" id="]N:i?OCxY{O(OgTsSn+7"><value name="VAR"><shadow type="text" id="nK3t@#6*,Sr#i1UB;R$r"><field name="TEXT">请输入当时时间,格式如下(2023,1,1,12,0,0):</field></shadow></value></block></value><next><block type="onboard_RTC_settime_string" id="u|^*)}XVt|54ZDJuMM,]"><value name="CONTENT"><shadow type="text" id="(F*.ZkuL`)N)R;L-J)dA"><field name="TEXT">2023,1,1,12,0,0</field></shadow><block type="variables_get" id="Mn`P^hT{;G5Pfh|*;c@!"><field name="VAR">settime</field></block></value><next><block type="controls_whileUntil" id="O2oo+8/ABb9E)7;~b}i?"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="M2EMBix*~HAQJeH=[1`]"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="M_UFK[rI*oqx=D9H(/+I"><field name="VAR">mytup</field><value name="VALUE"><block type="onboard_RTC_get_time" id=":Z)Rq1qnuZr!`l2#uYAi"></block></value><next><block type="display_show_image_or_string_delay" id="+@;^7aiKVB3`D9cAV]L="><field name="center">True</field><value name="data"><shadow type="text" id="2Wxny^={h9`lN)r?[{;a"><field name="TEXT">Mixly</field></shadow><block type="text_format_noreturn" id="quVS(b62z=T}kUl(5{kx" inline="false"><mutation items="3"></mutation><value name="VAR"><shadow type="text" id="i.f3g+a)SHmHuim/Yryi"><field name="TEXT">{}:{}:{}</field></shadow></value><value name="ADD0"><block type="number_to_text" id="6v8{,r1KsSLz4NmV2XWC"><value name="VAR"><shadow type="variables_get" id="H1NN;q$C-Aj7:^pXID?I"><field name="VAR">x</field></shadow><block type="tuple_getIndex" id=":iT^l_Z9Tii#*YGW@]3i"><value name="TUP"><shadow type="variables_get" id="04Kx51m1EpoDE`Q7aB-m"><field name="VAR">mytup</field></shadow></value><value name="AT"><shadow type="math_number" id="}Jxa_NaDt:ie|BCj3cVr"><field name="NUM">3</field></shadow></value></block></value></block></value><value name="ADD1"><block type="number_to_text" id="J25cNd_FAWGmM]#998Av"><value name="VAR"><shadow type="variables_get" id="m5MA{Zm}Fxis.SEg8ww|"><field name="VAR">x</field></shadow><block type="tuple_getIndex" id="g$n@M_rW$UCbw3)jK{xS"><value name="TUP"><shadow type="variables_get" id="Ud))OlvHT$Urg29De{LI"><field name="VAR">mytup</field></shadow></value><value name="AT"><shadow type="math_number" id="ab|BW)ueqd6x_M}Lsd1$"><field name="NUM">4</field></shadow></value></block></value></block></value><value name="ADD2"><block type="number_to_text" id="tK)Uo!jk|,vgf`xr8zEN"><value name="VAR"><shadow type="variables_get" id="+CS?J}_)+,h2W_x#H:j("><field name="VAR">x</field></shadow><block type="tuple_getIndex" id="pS=Q*k)hbw5?SPk0}sbK"><value name="TUP"><shadow type="variables_get" id="H`$KHohFbTH6jR?)@3rx"><field name="VAR">mytup</field></shadow></value><value name="AT"><shadow type="math_number" id=":?/P*Y=_Q{..S6}7~X?j"><field name="NUM">5</field></shadow></value></block></value></block></value></block></value><value name="space"><shadow type="math_number" id="q|F!-$Q]wd@.cJyZkZz4"><field name="NUM">0</field></shadow></value><value name="boolean"><shadow type="logic_boolean" id=";#}~{8j6g;0._{IX77og"><field name="BOOL">TRUE</field></shadow></value><next><block type="controls_delay_new" id="Xn|Gj:u@/N|6{0_V8$Ok"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="5Hb0:R#aD?=S+.h.F*/1"><field name="NUM">1</field></shadow></value></block></next></block></next></block></statement></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKaW1wb3J0IHJ0Y3RpbWUKaW1wb3J0IHRpbWUKZnJvbSBtaXhnb19zYW50IGltcG9ydCBvbmJvYXJkX3RmdAoKc2V0dGltZSA9IGlucHV0KCfor7fovpPlhaXlvZPml7bml7bpl7TvvIzmoLzlvI/lpoLkuIvvvIgyMDIzLDEsMSwxMiwwLDDvvInvvJonKQpydGN0aW1lLnNldHRpbWUoc2V0dGltZSkKd2hpbGUgVHJ1ZToKICAgIG15dHVwID0gdGltZS5sb2NhbHRpbWUoKQogICAgb25ib2FyZF90ZnQuc2hvd3MoJ3t9Ont9Ont9Jy5mb3JtYXQoc3RyKG15dHVwWzNdKSwgc3RyKG15dHVwWzRdKSwgc3RyKG15dHVwWzVdKSksIHNwYWNlPTAsIGNlbnRlcj1UcnVlLHN5bmM9VHJ1ZSkKICAgIHRpbWUuc2xlZXAoMSkK</code>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user