feat: sync micropython esp32 family source configs

This commit is contained in:
yczpf2019
2026-01-24 16:18:25 +08:00
parent c9195c03e1
commit d29ca27d44
1745 changed files with 72643 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
node_modules
build
origin

View File

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

View 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;

View 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);
}
};

View File

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

View 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
};

View 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;
}

View File

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

View 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
);

View File

@@ -0,0 +1,18 @@
{
"compilerOptions": {
"experimentalDecorators": true,
"baseUrl": "./",
"paths": {
"@mixly/python": [
"../python"
],
"@mixly/micropython": [
"../micropython"
]
}
},
"exclude": [
"node_modules",
"dist"
]
}

View File

@@ -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()

View File

@@ -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))

View File

@@ -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()

View File

@@ -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)

View File

@@ -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)

View 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": []
}
}
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

Some files were not shown because too many files have changed in this diff Show More