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,178 @@
import { Profile } from 'mixly';
const pins = {};
pins["MixGo CC"] = {
description: "MicroPython[ESP32C3 MixGo CC]",
digital_pin: Profile.generate(['0-11', '18-21']),
input_pin: Profile.generate(['0-11', '18-21']),
output_pin: Profile.generate(['0-11', '18-21']),
pwm_input: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),
analog_input: Profile.generate(['0-5'], 'adc', 'adc'),
pwm_output: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),
analog_output: Profile.generate(['0-5'], 'adc', 'adc'),
espnow_channel: Profile.generate(['1-13']),
haskylens_model: Profile.generate(['0-4']),
digital: Profile.generate(['0-11', '18-21'], 'pin', 'pin'),
pwm_pin: Profile.generate(['0-11', '18-21']),
pwm: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),
analog_pin: Profile.generate(['0-5']),
analog: Profile.generate(['0-5'], 'adc', 'adc'),
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-31']),
exlcdv: Profile.generate(['0-11']),
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", "matrix.Image.HEART"],["HEART_SMALL", "matrix.Image.HEART_SMALL"],["HAPPY", "matrix.Image.HAPPY"],["SAD", "matrix.Image.SAD"],["SMILE", "matrix.Image.SMILE"],["SILLY", "matrix.Image.SILLY"],["FABULOUS", "matrix.Image.FABULOUS"],["SURPRISED", "matrix.Image.SURPRISED"],["ASLEEP", "matrix.Image.ASLEEP"],["ANGRY", "matrix.Image.ANGRY"],["CONFUSED", "matrix.Image.CONFUSED"],["NO", "matrix.Image.NO"],["YES", "matrix.Image.YES"],["LEFT_ARROW", "matrix.Image.LEFT_ARROW"],["RIGHT_ARROW", "matrix.Image.RIGHT_ARROW"],["DRESS", "matrix.Image.DRESS"],["TRANSFORMERS", "matrix.Image.TRANSFORMERS"],["SCISSORS", "matrix.Image.SCISSORS"],["EXIT", "matrix.Image.EXIT"],["TREE", "matrix.Image.TREE"],["PACMAN", "matrix.Image.PACMAN"],["TARGET", "matrix.Image.TARGET"],["TSHIRT", "matrix.Image.TSHIRT"],["ROLLERSKATE", "matrix.Image.ROLLERSKATE"],["DUCK", "matrix.Image.DUCK"],["HOUSE", "matrix.Image.HOUSE"],["TORTOISE", "matrix.Image.TORTOISE"],["BUTTERFLY", "matrix.Image.BUTTERFLY"],["STICKFIGURE", "matrix.Image.STICKFIGURE"],["GHOST", "matrix.Image.GHOST"],["PITCHFORK", "matrix.Image.PITCHFORK"],["MUSIC_QUAVERS", "matrix.Image.MUSIC_QUAVERS"],["MUSIC_QUAVER", "matrix.Image.MUSIC_QUAVER"],["MUSIC_CROTCHET", "matrix.Image.MUSIC_CROTCHET"],["COW", "matrix.Image.COW"],["RABBIT", "matrix.Image.RABBIT"],["SQUARE_SMALL", "matrix.Image.SQUARE_SMALL"],["SQUARE", "matrix.Image.SQUARE"],["DIAMOND_SMALL", "matrix.Image.DIAMOND_SMALL"],["DIAMOND", "matrix.Image.DIAMOND"],["CHESSBOARD", "matrix.Image.CHESSBOARD"],["TRIANGLE_LEFT", "matrix.Image.TRIANGLE_LEFT"],["TRIANGLE", "matrix.Image.TRIANGLE"],["SNAKE", "matrix.Image.SNAKE"],["UMBRELLA", "matrix.Image.UMBRELLA"],["SKULL", "matrix.Image.SKULL"],["GIRAFFE", "matrix.Image.GIRAFFE"],["SWORD", "matrix.Image.SWORD"]],
builtinimg: [["HEART", "onboard_matrix.HEART"],["HEART_SMALL", "onboard_matrix.HEART_SMALL"],["HAPPY", "onboard_matrix.HAPPY"],["SAD", "onboard_matrix.SAD"],["SMILE", "onboard_matrix.SMILE"],["SILLY", "onboard_matrix.SILLY"],["FABULOUS", "onboard_matrix.FABULOUS"],["SURPRISED", "onboard_matrix.SURPRISED"],["ASLEEP", "onboard_matrix.ASLEEP"],["ANGRY", "onboard_matrix.ANGRY"],["CONFUSED", "onboard_matrix.CONFUSED"],["NO", "onboard_matrix.NO"],["YES", "onboard_matrix.YES"],["LEFT_ARROW", "onboard_matrix.LEFT_ARROW"],["RIGHT_ARROW", "onboard_matrix.RIGHT_ARROW"],["DRESS", "onboard_matrix.DRESS"],["TRANSFORMERS", "onboard_matrix.TRANSFORMERS"],["SCISSORS", "onboard_matrix.SCISSORS"],["EXIT", "onboard_matrix.EXIT"],["TREE", "onboard_matrix.TREE"],["PACMAN", "onboard_matrix.PACMAN"],["TARGET", "onboard_matrix.TARGET"],["TSHIRT", "onboard_matrix.TSHIRT"],["ROLLERSKATE", "onboard_matrix.ROLLERSKATE"],["DUCK", "onboard_matrix.DUCK"],["HOUSE", "onboard_matrix.HOUSE"],["TORTOISE", "onboard_matrix.TORTOISE"],["BUTTERFLY", "onboard_matrix.BUTTERFLY"],["STICKFIGURE", "onboard_matrix.STICKFIGURE"],["GHOST", "onboard_matrix.GHOST"],["PITCHFORK", "onboard_matrix.PITCHFORK"],["MUSIC_QUAVERS", "onboard_matrix.MUSIC_QUAVERS"],["MUSIC_QUAVER", "onboard_matrix.MUSIC_QUAVER"],["MUSIC_CROTCHET", "onboard_matrix.MUSIC_CROTCHET"],["COW", "onboard_matrix.COW"],["RABBIT", "onboard_matrix.RABBIT"],["SQUARE_SMALL", "onboard_matrix.SQUARE_SMALL"],["SQUARE", "onboard_matrix.SQUARE"],["DIAMOND_SMALL", "onboard_matrix.DIAMOND_SMALL"],["DIAMOND", "onboard_matrix.DIAMOND"],["CHESSBOARD", "onboard_matrix.CHESSBOARD"],["TRIANGLE_LEFT", "onboard_matrix.TRIANGLE_LEFT"],["TRIANGLE", "onboard_matrix.TRIANGLE"],["SNAKE", "onboard_matrix.SNAKE"],["UMBRELLA", "onboard_matrix.UMBRELLA"],["SKULL", "onboard_matrix.SKULL"],["GIRAFFE", "onboard_matrix.GIRAFFE"],["SWORD", "onboard_matrix.SWORD"]],
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["MixGo ME"] = {
description: "MicroPython[ESP32C3 MixGo ME]",
digital_pin: Profile.generate(['0-11', '18-21']),
input_pin: Profile.generate(['0-11', '18-21']),
output_pin: Profile.generate(['0-11', '18-21']),
pwm_input: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),
analog_input: Profile.generate(['0-5'], 'adc', 'adc'),
pwm_output: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),
analog_output: Profile.generate(['0-5'], 'adc', 'adc'),
espnow_channel: Profile.generate(['1-13']),
haskylens_model: Profile.generate(['0-4']),
digital: Profile.generate(['0-11', '18-21'], 'pin', 'pin'),
pwm_pin: Profile.generate(['0-11', '18-21']),
pwm: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),
analog_pin: Profile.generate(['0-5']),
analog: Profile.generate(['0-5'], 'adc', 'adc'),
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-7']),
exlcdv: Profile.generate(['0-4']),
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", "matrix.Image.HEART"],["HEART_SMALL", "matrix.Image.HEART_SMALL"],["HAPPY", "matrix.Image.HAPPY"],["SAD", "matrix.Image.SAD"],["SMILE", "matrix.Image.SMILE"],["SILLY", "matrix.Image.SILLY"],["FABULOUS", "matrix.Image.FABULOUS"],["SURPRISED", "matrix.Image.SURPRISED"],["ASLEEP", "matrix.Image.ASLEEP"],["ANGRY", "matrix.Image.ANGRY"],["CONFUSED", "matrix.Image.CONFUSED"],["NO", "matrix.Image.NO"],["YES", "matrix.Image.YES"],["LEFT_ARROW", "matrix.Image.LEFT_ARROW"],["RIGHT_ARROW", "matrix.Image.RIGHT_ARROW"],["DRESS", "matrix.Image.DRESS"],["TRANSFORMERS", "matrix.Image.TRANSFORMERS"],["SCISSORS", "matrix.Image.SCISSORS"],["EXIT", "matrix.Image.EXIT"],["TREE", "matrix.Image.TREE"],["PACMAN", "matrix.Image.PACMAN"],["TARGET", "matrix.Image.TARGET"],["TSHIRT", "matrix.Image.TSHIRT"],["ROLLERSKATE", "matrix.Image.ROLLERSKATE"],["DUCK", "matrix.Image.DUCK"],["HOUSE", "matrix.Image.HOUSE"],["TORTOISE", "matrix.Image.TORTOISE"],["BUTTERFLY", "matrix.Image.BUTTERFLY"],["STICKFIGURE", "matrix.Image.STICKFIGURE"],["GHOST", "matrix.Image.GHOST"],["PITCHFORK", "matrix.Image.PITCHFORK"],["MUSIC_QUAVERS", "matrix.Image.MUSIC_QUAVERS"],["MUSIC_QUAVER", "matrix.Image.MUSIC_QUAVER"],["MUSIC_CROTCHET", "matrix.Image.MUSIC_CROTCHET"],["COW", "matrix.Image.COW"],["RABBIT", "matrix.Image.RABBIT"],["SQUARE_SMALL", "matrix.Image.SQUARE_SMALL"],["SQUARE", "matrix.Image.SQUARE"],["DIAMOND_SMALL", "matrix.Image.DIAMOND_SMALL"],["DIAMOND", "matrix.Image.DIAMOND"],["CHESSBOARD", "matrix.Image.CHESSBOARD"],["TRIANGLE_LEFT", "matrix.Image.TRIANGLE_LEFT"],["TRIANGLE", "matrix.Image.TRIANGLE"],["SNAKE", "matrix.Image.SNAKE"],["UMBRELLA", "matrix.Image.UMBRELLA"],["SKULL", "matrix.Image.SKULL"],["GIRAFFE", "matrix.Image.GIRAFFE"],["SWORD", "matrix.Image.SWORD"]],
builtinimg: [["HEART", "onboard_matrix.HEART"], ["HEART_SMALL", "onboard_matrix.HEART_SMALL"], ["HAPPY", "onboard_matrix.HAPPY"], ["SAD", "onboard_matrix.SAD"], ["SMILE", "onboard_matrix.SMILE"], ["SILLY", "onboard_matrix.SILLY"], ["FABULOUS", "onboard_matrix.FABULOUS"], ["SURPRISED", "onboard_matrix.SURPRISED"], ["ASLEEP", "onboard_matrix.ASLEEP"], ["ANGRY", "onboard_matrix.ANGRY"], ["CONFUSED", "onboard_matrix.CONFUSED"], ["NO", "onboard_matrix.NO"], ["YES", "onboard_matrix.YES"], ["LEFT_ARROW", "onboard_matrix.LEFT_ARROW"], ["RIGHT_ARROW", "onboard_matrix.RIGHT_ARROW"], ["DRESS", "onboard_matrix.DRESS"], ["TRANSFORMERS", "onboard_matrix.TRANSFORMERS"], ["SCISSORS", "onboard_matrix.SCISSORS"], ["EXIT", "onboard_matrix.EXIT"], ["TREE", "onboard_matrix.TREE"], ["PACMAN", "onboard_matrix.PACMAN"], ["TARGET", "onboard_matrix.TARGET"], ["TSHIRT", "onboard_matrix.TSHIRT"], ["ROLLERSKATE", "onboard_matrix.ROLLERSKATE"], ["DUCK", "onboard_matrix.DUCK"], ["HOUSE", "onboard_matrix.HOUSE"], ["TORTOISE", "onboard_matrix.TORTOISE"], ["BUTTERFLY", "onboard_matrix.BUTTERFLY"], ["STICKFIGURE", "onboard_matrix.STICKFIGURE"], ["GHOST", "onboard_matrix.GHOST"], ["PITCHFORK", "onboard_matrix.PITCHFORK"], ["MUSIC_QUAVERS", "onboard_matrix.MUSIC_QUAVERS"], ["MUSIC_QUAVER", "onboard_matrix.MUSIC_QUAVER"], ["MUSIC_CROTCHET", "onboard_matrix.MUSIC_CROTCHET"], ["COW", "onboard_matrix.COW"], ["RABBIT", "onboard_matrix.RABBIT"], ["SQUARE_SMALL", "onboard_matrix.SQUARE_SMALL"], ["SQUARE", "onboard_matrix.SQUARE"], ["DIAMOND_SMALL", "onboard_matrix.DIAMOND_SMALL"], ["DIAMOND", "onboard_matrix.DIAMOND"], ["CHESSBOARD", "onboard_matrix.CHESSBOARD"], ["TRIANGLE_LEFT", "onboard_matrix.TRIANGLE_LEFT"], ["TRIANGLE", "onboard_matrix.TRIANGLE"], ["SNAKE", "onboard_matrix.SNAKE"], ["UMBRELLA", "onboard_matrix.UMBRELLA"], ["SKULL", "onboard_matrix.SKULL"], ["GIRAFFE", "onboard_matrix.GIRAFFE"], ["SWORD", "onboard_matrix.SWORD"]],
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["MixGo Car 4.2"] = {
description: "MicroPython[ESP32]",
digital_pin: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"], ["20", "20"], ["21", "21"]],
digital: [["pin0", "pin0"], ["pin1", "pin1"], ["pin2", "pin2"], ["pin3", "pin3"], ["pin4", "pin4"], ["pin5", "pin5"], ["pin6", "pin6"], ["pin7", "pin7"], ["pin8", "pin8"], ["pin9", "pin9"], ["pin10", "pin10"], ["pin20", "pin20"], ["pin21", "pin21"]],
pwm_pin: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"], ["20", "20"], ["21", "21"]],
pwm: [["pwm0", "pwm0"], ["pwm1", "pwm1"], ["pwm2", "pwm2"], ["pwm3", "pwm3"], ["pwm4", "pwm4"], ["pwm5", "pwm5"], ["pwm6", "pwm6"], ["pwm7", "pwm7"], ["pwm8", "pwm8"], ["pwm9", "pwm9"], ["pwm10", "pwm10"], ["pwm20", "pwm20"], ["pwm21", "pwm21"]],
// pwm_input: [["pwm2", "pwm2"], ["pwm4", "pwm4"], ["pwm5", "pwm5"], ["pwm7", "pwm7"],["pwm8", "pwm8"],["pwm12", "pwm12"], ["pwm13", "pwm13"], ["pwm14", "pwm14"], ["pwm15", "pwm15"], ["pwm19", "pwm19"], ["pwm20", "pwm20"], ["pwm21", "pwm21"], ["pwm22", "pwm22"], ["pwm25", "pwm25"], ["pwm26", "pwm26"], ["pwm27", "pwm27"], ["pwm32", "pwm32"],["pwm33", "pwm33"], ["pwm34", "pwm34"], ["pwm35", "pwm35"], ["pwm36", "pwm36"],["pwm37", "pwm37"], ["pwm38", "pwm38"], ["pwm39", "pwm39"]],
// analog_input: [["adc0", "adc0"], ["adc1", "adc1"], ["adc2", "adc2"],["adc3", "adc3"], ["adc4", "adc4"], ["adc5", "adc5"]],
// pwm_output: [["pwm2", "pwm2"], ["pwm4", "pwm4"], ["pwm5", "pwm5"], ["pwm7", "pwm7"],["pwm8", "pwm8"],["pwm12", "pwm12"], ["pwm13", "pwm13"], ["pwm14", "pwm14"], ["pwm15", "pwm15"], ["pwm19", "pwm19"], ["pwm20", "pwm20"], ["pwm21", "pwm21"], ["pwm22", "pwm22"], ["pwm25", "pwm25"], ["pwm26", "pwm26"], ["pwm27", "pwm27"], ["pwm32", "pwm32"],["pwm33", "pwm33"]],
// analog_output: [["adc0", "adc0"], ["adc1", "adc1"], ["adc2", "adc2"],["adc3", "adc3"], ["adc4", "adc4"], ["adc5", "adc5"]],
espnow_channel: [["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"], ["11", "11"], ["12", "12"], ["13", "13"]],
i2c_A_pin: [["6", "6"], ["9", "9"]],
i2c_B_pin: [["7", "7"], ["10", "10"]],
spi_A_pin: [["6", "6"], ["9", "9"]],
spi_B_pin: [["7", "7"], ["10", "10"]],
spi_C_pin: [["9", "9"], ["20", "20"]],
spi_D_pin: [["10", "10"], ["21", "21"]],
analog_pin: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"]],
analog: [["adc0", "adc0"], ["adc1", "adc1"], ["adc2", "adc2"], ["adc3", "adc3"], ["adc4", "adc4"]],
dac_pin: [["25", "25"], ["26", "26"]],
dac: [["dac25", "dac25"], ["dac26", "dac26"]],
touch: [["tc0", "tc0"], ["tc2", "tc2"], ["tc4", "tc4"], ["tc12", "tc12"], ["tc13", "tc13"], ["tc14", "tc14"], ["tc15", "tc15"], ["tc27", "tc27"], ["tc32", "tc32"], ["tc33", "tc33"]],
touch_pin: [["0", "0"], ["2", "2"], ["4", "4"], ["12", "12"], ["13", "13"], ["14", "14"], ["15", "15"], ["27", "27"], ["32", "32"], ["33", "33"]],
button: [["A", "button_a"], ["B", "button_b"]],
buttonB: [["B", "button_b"]],
axis: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"]],
exlcdh: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"], ["11", "11"], ["12", "12"], ["13", "13"], ["14", "14"], ["15", "15"], ["16", "16"], ["17", "17"], ["18", "18"], ["19", "19"], ["20", "20"], ["21", "21"], ["22", "22"], ["23", "23"], ["24", "24"], ["25", "25"], ["26", "26"], ["27", "27"], ["28", "28"], ["29", "29"], ["30", "30"], ["31", "31"]],
exlcdv: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"], ["10", "10"], ["11", "11"]],
brightness: [["0", "0"], ["1", "1"], ["2", "2"], ["3", "3"], ["4", "4"], ["5", "5"], ["6", "6"], ["7", "7"], ["8", "8"], ["9", "9"]],
builtinimg: [["HEART", "matrix.Image.HEART"], ["HEART_SMALL", "matrix.Image.HEART_SMALL"], ["HAPPY", "matrix.Image.HAPPY"], ["SAD", "matrix.Image.SAD"], ["SMILE", "matrix.Image.SMILE"], ["SILLY", "matrix.Image.SILLY"], ["FABULOUS", "matrix.Image.FABULOUS"], ["SURPRISED", "matrix.Image.SURPRISED"], ["ASLEEP", "matrix.Image.ASLEEP"], ["ANGRY", "matrix.Image.ANGRY"], ["CONFUSED", "matrix.Image.CONFUSED"], ["NO", "matrix.Image.NO"], ["YES", "matrix.Image.YES"], ["LEFT_ARROW", "matrix.Image.LEFT_ARROW"], ["RIGHT_ARROW", "matrix.Image.RIGHT_ARROW"], ["DRESS", "matrix.Image.DRESS"], ["TRANSFORMERS", "matrix.Image.TRANSFORMERS"], ["SCISSORS", "matrix.Image.SCISSORS"], ["EXIT", "matrix.Image.EXIT"], ["TREE", "matrix.Image.TREE"], ["PACMAN", "matrix.Image.PACMAN"], ["TARGET", "matrix.Image.TARGET"], ["TSHIRT", "matrix.Image.TSHIRT"], ["ROLLERSKATE", "matrix.Image.ROLLERSKATE"], ["DUCK", "matrix.Image.DUCK"], ["HOUSE", "matrix.Image.HOUSE"], ["TORTOISE", "matrix.Image.TORTOISE"], ["BUTTERFLY", "matrix.Image.BUTTERFLY"], ["STICKFIGURE", "matrix.Image.STICKFIGURE"], ["GHOST", "matrix.Image.GHOST"], ["PITCHFORK", "matrix.Image.PITCHFORK"], ["MUSIC_QUAVERS", "matrix.Image.MUSIC_QUAVERS"], ["MUSIC_QUAVER", "matrix.Image.MUSIC_QUAVER"], ["MUSIC_CROTCHET", "matrix.Image.MUSIC_CROTCHET"], ["COW", "matrix.Image.COW"], ["RABBIT", "matrix.Image.RABBIT"], ["SQUARE_SMALL", "matrix.Image.SQUARE_SMALL"], ["SQUARE", "matrix.Image.SQUARE"], ["DIAMOND_SMALL", "matrix.Image.DIAMOND_SMALL"], ["DIAMOND", "matrix.Image.DIAMOND"], ["CHESSBOARD", "matrix.Image.CHESSBOARD"], ["TRIANGLE_LEFT", "matrix.Image.TRIANGLE_LEFT"], ["TRIANGLE", "matrix.Image.TRIANGLE"], ["SNAKE", "matrix.Image.SNAKE"], ["UMBRELLA", "matrix.Image.UMBRELLA"], ["SKULL", "matrix.Image.SKULL"], ["GIRAFFE", "matrix.Image.GIRAFFE"], ["SWORD", "matrix.Image.SWORD"]],
imglist: [["ALL_CLOCKS", "matrix.Image.ALL_CLOCKS"], ["ALL_ARROWS", "matrix.Image.ALL_ARROWS"]],
playlist: [["DADADADUM", "music.DADADADUM"], ["ENTERTAINER", "music.ENTERTAINER"], ["PRELUDE", "music.PRELUDE"], ["ODE", "music.ODE"], ["NYAN", "music.NYAN"], ["RINGTONE", "music.RINGTONE"], ["FUNK", "music.FUNK"], ["BLUES", "music.BLUES"], ["BIRTHDAY", "music.BIRTHDAY"], ["WEDDING", "music.WEDDING"], ["FUNERAL", "music.FUNERAL"], ["PUNCHLINE", "music.PUNCHLINE"], ["PYTHON", "music.PYTHON"], ["BADDY", "music.BADDY"], ["CHASE", "music.CHASE"], ["BA_DING", "music.BA_DING"], ["WAWAWAWAA", "music.WAWAWAWAA"], ["JUMP_UP", "music.JUMP_UP"], ["JUMP_DOWN", "music.JUMP_DOWN"], ["POWER_UP", "music.POWER_UP"], ["POWER_DOWN", "music.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["ESP32C3 Generic"] = {
description: "MicroPython[ESP32C3 MixGo CC]",
digital_pin: Profile.generate(['0-11', '18-21']),
input_pin: Profile.generate(['0-11', '18-21']),
output_pin: Profile.generate(['0-11', '18-21']),
pwm_input: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),
analog_input: Profile.generate(['0-5'], 'adc', 'adc'),
pwm_output: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),
analog_output: Profile.generate(['0-5'], 'adc', 'adc'),
espnow_channel: Profile.generate(['1-13']),
haskylens_model: Profile.generate(['0-4']),
digital: Profile.generate(['0-11', '18-21'], 'pin', 'pin'),
pwm_pin: Profile.generate(['0-11', '18-21']),
pwm: Profile.generate(['0-11', '18-21'], 'pwm', 'pwm'),
analog_pin: Profile.generate(['0-5']),
analog: Profile.generate(['0-5'], 'adc', 'adc'),
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-31']),
exlcdv: Profile.generate(['0-11']),
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", "matrix.Image.HEART"],["HEART_SMALL", "matrix.Image.HEART_SMALL"],["HAPPY", "matrix.Image.HAPPY"],["SAD", "matrix.Image.SAD"],["SMILE", "matrix.Image.SMILE"],["SILLY", "matrix.Image.SILLY"],["FABULOUS", "matrix.Image.FABULOUS"],["SURPRISED", "matrix.Image.SURPRISED"],["ASLEEP", "matrix.Image.ASLEEP"],["ANGRY", "matrix.Image.ANGRY"],["CONFUSED", "matrix.Image.CONFUSED"],["NO", "matrix.Image.NO"],["YES", "matrix.Image.YES"],["LEFT_ARROW", "matrix.Image.LEFT_ARROW"],["RIGHT_ARROW", "matrix.Image.RIGHT_ARROW"],["DRESS", "matrix.Image.DRESS"],["TRANSFORMERS", "matrix.Image.TRANSFORMERS"],["SCISSORS", "matrix.Image.SCISSORS"],["EXIT", "matrix.Image.EXIT"],["TREE", "matrix.Image.TREE"],["PACMAN", "matrix.Image.PACMAN"],["TARGET", "matrix.Image.TARGET"],["TSHIRT", "matrix.Image.TSHIRT"],["ROLLERSKATE", "matrix.Image.ROLLERSKATE"],["DUCK", "matrix.Image.DUCK"],["HOUSE", "matrix.Image.HOUSE"],["TORTOISE", "matrix.Image.TORTOISE"],["BUTTERFLY", "matrix.Image.BUTTERFLY"],["STICKFIGURE", "matrix.Image.STICKFIGURE"],["GHOST", "matrix.Image.GHOST"],["PITCHFORK", "matrix.Image.PITCHFORK"],["MUSIC_QUAVERS", "matrix.Image.MUSIC_QUAVERS"],["MUSIC_QUAVER", "matrix.Image.MUSIC_QUAVER"],["MUSIC_CROTCHET", "matrix.Image.MUSIC_CROTCHET"],["COW", "matrix.Image.COW"],["RABBIT", "matrix.Image.RABBIT"],["SQUARE_SMALL", "matrix.Image.SQUARE_SMALL"],["SQUARE", "matrix.Image.SQUARE"],["DIAMOND_SMALL", "matrix.Image.DIAMOND_SMALL"],["DIAMOND", "matrix.Image.DIAMOND"],["CHESSBOARD", "matrix.Image.CHESSBOARD"],["TRIANGLE_LEFT", "matrix.Image.TRIANGLE_LEFT"],["TRIANGLE", "matrix.Image.TRIANGLE"],["SNAKE", "matrix.Image.SNAKE"],["UMBRELLA", "matrix.Image.UMBRELLA"],["SKULL", "matrix.Image.SKULL"],["GIRAFFE", "matrix.Image.GIRAFFE"],["SWORD", "matrix.Image.SWORD"]],
builtinimg: [["HEART", "onboard_matrix.HEART"], ["HEART_SMALL", "onboard_matrix.HEART_SMALL"], ["HAPPY", "onboard_matrix.HAPPY"], ["SAD", "onboard_matrix.SAD"], ["SMILE", "onboard_matrix.SMILE"], ["SILLY", "onboard_matrix.SILLY"], ["FABULOUS", "onboard_matrix.FABULOUS"], ["SURPRISED", "onboard_matrix.SURPRISED"], ["ASLEEP", "onboard_matrix.ASLEEP"], ["ANGRY", "onboard_matrix.ANGRY"], ["CONFUSED", "onboard_matrix.CONFUSED"], ["NO", "onboard_matrix.NO"], ["YES", "onboard_matrix.YES"]],
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"]],
};
export default pins;

View File

@@ -0,0 +1,263 @@
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,179 @@
import * as Blockly from 'blockly/core';
import * as Mixly from 'mixly';
const MEG1_HUE = 40;
export const me_g1_aht11 = {
init: function () {
var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]
if (version == "mixgo_me") { var name = 'ME G1' }
this.setColour(MEG1_HUE);
this.appendDummyInput("")
.appendField(name)
.appendField(Blockly.Msg.MIXLY_TEM_HUM + " AHT21")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_GETTEMPERATUE, "temperature"],
[Blockly.Msg.MIXLY_GETHUMIDITY, "humidity"]
]), "key");
this.setOutput(true, Number);
this.setInputsInline(true);
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('key');
var TOOLTIPS = {
"temperature": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_temperature_TOOLTIP,
"relative_humidity": Blockly.Msg.MIXLY_MICROBIT_SENSOR_SHT_HUM_TOOLTIP
};
return TOOLTIPS[mode]
});
}
};
export const me_g1_hp203 = {
init: function () {
var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]
if (version == "mixgo_me") { var name = 'ME G1' }
this.setColour(MEG1_HUE);
this.appendDummyInput("")
.appendField(name)
.appendField(Blockly.Msg.MIXLY_Altitude + Blockly.Msg.MSG.catSensor + " HP203X")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_GETPRESSURE, "pressure()"],
[Blockly.Msg.MIXLY_GETTEMPERATUE, "temperature()"],
[Blockly.Msg.MIXLY_GET_ALTITUDE, "altitude()"],
]), "key");
this.setOutput(true, Number);
this.setInputsInline(true);
}
};
export const me_g1_varistor = {
init: function () {
var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]
if (version == "mixgo_me") { var name = 'ME G1' }
this.setColour(MEG1_HUE);
this.appendDummyInput()
.appendField(name)
.appendField(Blockly.Msg.MIXLY_MIXGO_NOVA_POTENTIAL_NUM);
this.setOutput(true, Number);
this.setInputsInline(true);
}
};
/**
* @deprecated To be removed in the future
*/
export const me_g1_rfid_readid = {
init: function () {
var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]
if (version == "mixgo_me") { var name = 'ME G1' }
this.setColour(MEG1_HUE);
this.appendDummyInput()
.appendField(name)
.appendField("RFID" + Blockly.Msg.MIXLY_RFID_READ_CARD);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_RFID_READ_CARD_UID);
this.appendDummyInput()
.appendField(`(${Blockly.Msg.MIXLY_DEPRECATED})`);
this.setOutput(true, Number);
this.setInputsInline(true);
this.setWarningText(Blockly.Msg.MIXLY_DEPRECATED_WARNING_TEXT);
}
};
/**
* @deprecated To be removed in the future
*/
export const me_g1_rfid_readcontent = {
init: function () {
var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]
if (version == "mixgo_me") { var name = 'ME G1' }
this.setColour(MEG1_HUE);
this.appendDummyInput()
.appendField(name)
.appendField("RFID" + Blockly.Msg.MIXLY_RFID_READ_CARD);
this.appendValueInput('SECTOR')
.appendField(Blockly.Msg.MIXLY_LIST_INDEX)
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_ALL);
this.appendDummyInput()
.appendField(`(${Blockly.Msg.MIXLY_DEPRECATED})`);
this.setOutput(true, Number);
this.setInputsInline(true);
this.setWarningText(Blockly.Msg.MIXLY_DEPRECATED_WARNING_TEXT);
}
};
/**
* @deprecated To be removed in the future
*/
export const me_g1_rfid_write = {
init: function () {
var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]
if (version == "mixgo_me") { var name = 'ME G1' }
this.setColour(MEG1_HUE);
this.appendDummyInput()
.appendField(name)
.appendField(Blockly.Msg.MIXLY_COMMUNICATION_RFID_WRITE);
this.appendValueInput('SECTOR')
.appendField(Blockly.Msg.MIXLY_LIST_INDEX);
this.appendValueInput('CONTENT')
.appendField(Blockly.Msg.MIXLY_COMMUNICATION_WRITE_NUM);
this.appendDummyInput()
.appendField(`(${Blockly.Msg.MIXLY_DEPRECATED})`);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setWarningText(Blockly.Msg.MIXLY_DEPRECATED_WARNING_TEXT);
}
};
/**
* @deprecated To be removed in the future
*/
export const me_g1_rfid_write_outcome = {
init: function () {
var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]
if (version == "mixgo_me") { var name = 'ME G1' }
this.setColour(MEG1_HUE);
this.appendDummyInput()
.appendField(name)
.appendField(Blockly.Msg.MIXLY_COMMUNICATION_RFID_WRITE);
this.appendValueInput('SECTOR')
.appendField(Blockly.Msg.MIXLY_LIST_INDEX)
this.appendValueInput('CONTENT')
.appendField(Blockly.Msg.MIXLY_COMMUNICATION_WRITE_NUM);
this.appendDummyInput()
.appendField(Blockly.Msg.RETURN_SUCCESS_OR_NOT);
this.appendDummyInput()
.appendField(`(${Blockly.Msg.MIXLY_DEPRECATED})`);
this.setInputsInline(true);
this.setOutput(true);
this.setWarningText(Blockly.Msg.MIXLY_DEPRECATED_WARNING_TEXT);
}
};
/**
* @deprecated To be removed in the future
*/
export const me_g1_rfid_status = {
init: function () {
var version = Mixly.Boards.getSelectedBoardKey().split(':')[2]
if (version == "mixgo_me") { var name = 'ME G1' }
this.setColour(MEG1_HUE);
this.appendDummyInput()
.appendField(name)
.appendField("RFID");
this.appendDummyInput("")
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_RFID_SCAN_OK, "0"],
[Blockly.Msg.MIXLY_RFID_SCAN_NOTAGERR, "1"],
[Blockly.Msg.MIXLY_RFID_SCAN_ERROR, "2"]
]), "key");
this.appendDummyInput()
.appendField(`(${Blockly.Msg.MIXLY_DEPRECATED})`);
this.setOutput(true, Number);
this.setInputsInline(true);
this.setWarningText(Blockly.Msg.MIXLY_DEPRECATED_WARNING_TEXT);
}
};

View File

@@ -0,0 +1,413 @@
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"]
]), 'PIN');
this.setOutput(true, Number);
}
};

View File

@@ -0,0 +1,479 @@
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;
}
#catME_GO.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
background: url('../../../../common/media/mark/act.png') no-repeat;
background-size: 100% auto;
}
#catME_GO.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
background: url('../../../../common/media/mark/act2.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;
}
#catME_G1.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
background: url('../../../../common/media/mark/sensor.png') no-repeat;
background-size: 100% auto;
}
#catME_G1.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
background: url('../../../../common/media/mark/sensor2.png') no-repeat;
background-size: 100% auto;
}
#catCC_G1.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
background: url('../../../../common/media/mark/sensor.png') no-repeat;
background-size: 100% auto;
}
#catCC_G1.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;
}
#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;
}

View File

@@ -0,0 +1,17 @@
import MicropythonESP32C3Pins from './blocks/esp32_profile';
import * as MicropythonESP32C3InoutBlocks from './blocks/inout';
import * as MicropythonESP32C3MEG1Blocks from './blocks/me_g1';
import * as MicropythonESP32C3PinsBlocks from './blocks/pins';
import * as MicropythonESP32C3InoutGenerators from './generators/inout';
import * as MicropythonESP32C3MEG1Generators from './generators/me_g1';
import * as MicropythonESP32C3PinsGenerators from './generators/pins';
export {
MicropythonESP32C3Pins,
MicropythonESP32C3InoutBlocks,
MicropythonESP32C3MEG1Blocks,
MicropythonESP32C3PinsBlocks,
MicropythonESP32C3InoutGenerators,
MicropythonESP32C3MEG1Generators,
MicropythonESP32C3PinsGenerators
};

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,55 @@
export const me_g1_aht11 = function (_, generator) {
var key = this.getFieldValue('key');
generator.definitions_['import_me_g1'] = 'import me_g1';
var code = 'me_g1.ext_ahtx0.' + key + '()';
return [code, generator.ORDER_ATOMIC];
}
export const me_g1_hp203 = function (_, generator) {
var key = this.getFieldValue('key');
generator.definitions_['import_me_g1'] = 'import me_g1';
var code = 'me_g1.ext_hp203x.' + key;
return [code, generator.ORDER_ATOMIC];
}
export const me_g1_varistor = function (_, generator) {
generator.definitions_['import_me_g1'] = 'import me_g1';
var code = 'me_g1.varistor()';
return [code, generator.ORDER_ATOMIC];
}
export const me_g1_rfid_readid = function (_, generator) {
generator.definitions_['import_me_g1'] = 'import me_g1';
var code = 'me_g1.ext_rc522.read_card(0, x="id")';
return [code, generator.ORDER_ATOMIC];
}
export const me_g1_rfid_readcontent = function (_, generator) {
var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);
generator.definitions_['import_me_g1'] = 'import me_g1';
var code = 'me_g1.ext_rc522.read_card(' + sector + ')';
return [code, generator.ORDER_ATOMIC];
}
export const me_g1_rfid_write = function (_, generator) {
var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);
var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);
generator.definitions_['import_me_g1'] = 'import me_g1';
var code = 'me_g1.ext_rc522.write_card(' + cnt + ',' + sector + ')\n';
return code;
}
export const me_g1_rfid_write_outcome = function (_, generator) {
var sector = generator.valueToCode(this, 'SECTOR', generator.ORDER_ATOMIC);
var cnt = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC);
generator.definitions_['import_me_g1'] = 'import me_g1';
var code = 'me_g1.ext_rc522.write_card(' + cnt + ',' + sector + ')';
return [code, generator.ORDER_ATOMIC];
}
export const me_g1_rfid_status = function (_, generator) {
var key = this.getFieldValue('key');
generator.definitions_['import_me_g1'] = 'import me_g1';
var code = 'me_g1.ext_rc522.scan_card()==' + key;
return [code, generator.ORDER_ATOMIC];
}

View File

@@ -0,0 +1,50 @@
export const pins_digital = function (_, generator) {
var 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 = 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;

View File

@@ -0,0 +1,186 @@
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,
MicroPythonBlynkBlocks,
MicroPythonCCG1Blocks,
MicroPythonCEGOBlocks,
MicroPythonCommunicateBlocks,
MicroPythonDisplayExternBlocks,
MicroPythonDisplayOnBoardBlocks,
MicroPythonFactoryBlocks,
MicroPythonInputBlocks,
MicroPythonIotBlocks,
MicroPythonNetworkBlocks,
MicroPythonPeG1Blocks,
MicroPythonSensorExternBlocks,
MicroPythonSensorOnBoardBlocks,
MicroPythonSerialBlocks,
MicroPythonSystemBlocks,
MicroPythonWeatherBlocks,
MicroPythonActuatorExternGenerators,
MicroPythonActuatorOnBoardGenerators,
MicroPythonAISensorGenerators,
MicroPythonAIGenerators,
MicroPythonBlynkGenerators,
MicroPythonCCG1Generators,
MicroPythonCEGOGenerators,
MicroPythonCommunicateGenerators,
MicroPythonDisplayExternGenerators,
MicroPythonDisplayOnBoardGenerators,
MicroPythonFactoryGenerators,
MicroPythonInputGenerators,
MicroPythonIotGenerators,
MicroPythonNetworkGenerators,
MicroPythonPeG1Generators,
MicroPythonSensorExternGenerators,
MicroPythonSensorOnBoardGenerators,
MicroPythonSerialGenerators,
MicroPythonSystemGenerators,
MicroPythonWeatherGenerators,
MicroPythonZhHans,
MicroPythonZhHant,
MicroPythonEn
} from '@mixly/micropython';
import {
MicropythonESP32C3Pins,
MicropythonESP32C3InoutBlocks,
MicropythonESP32C3MEG1Blocks,
MicropythonESP32C3PinsBlocks,
MicropythonESP32C3InoutGenerators,
MicropythonESP32C3MEG1Generators,
MicropythonESP32C3PinsGenerators
} from './';
import './css/color_esp32c3_mixgocc.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, MicropythonESP32C3Pins);
Object.assign(Profile.default, MicropythonESP32C3Pins['MixGo CC']);
Object.assign(
Blockly.Blocks,
PythonVariablesBlocks,
PythonControlBlocks,
PythonMathBlocks,
PythonTextBlocks,
PythonListsBlocks,
PythonDictsBlocks,
PythonLogicBlocks,
PythonStorageBlocks,
PythonProceduresBlocks,
PythonTupleBlocks,
PythonSetBlocks,
PythonHtmlBlocks,
PythonUtilityBlocks,
MicroPythonInputBlocks,
MicroPythonSystemBlocks,
MicroPythonSerialBlocks,
MicroPythonCommunicateBlocks,
MicroPythonIotBlocks,
MicroPythonWeatherBlocks,
MicroPythonAISensorBlocks,
MicroPythonSensorOnBoardBlocks,
MicroPythonSensorExternBlocks,
MicroPythonNetworkBlocks,
MicroPythonPeG1Blocks,
MicroPythonAIBlocks,
MicroPythonActuatorOnBoardBlocks,
MicroPythonActuatorExternBlocks,
MicroPythonDisplayOnBoardBlocks,
MicroPythonDisplayExternBlocks,
MicroPythonFactoryBlocks,
MicroPythonBlynkBlocks,
MicroPythonCCG1Blocks,
MicroPythonCEGOBlocks,
MicropythonESP32C3InoutBlocks,
MicropythonESP32C3MEG1Blocks,
MicropythonESP32C3PinsBlocks
);
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,
MicroPythonSensorOnBoardGenerators,
MicroPythonSensorExternGenerators,
MicroPythonNetworkGenerators,
MicroPythonPeG1Generators,
MicroPythonAIGenerators,
MicroPythonActuatorOnBoardGenerators,
MicroPythonActuatorExternGenerators,
MicroPythonDisplayOnBoardGenerators,
MicroPythonDisplayExternGenerators,
MicroPythonFactoryGenerators,
MicroPythonBlynkGenerators,
MicroPythonCCG1Generators,
MicroPythonCEGOGenerators,
MicropythonESP32C3InoutGenerators,
MicropythonESP32C3MEG1Generators,
MicropythonESP32C3PinsGenerators
);

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,55 @@
"""
ME G1 -MixGo ME EXT G1
MicroPython library for the ME G1 (Expansion board for MixGo ME)
=======================================================
#Preliminary composition 20230110
dahanzimin From the Mixly Team
"""
import time,gc
from machine import Pin,SoftI2C,ADC
'''i2c-extboard'''
ext_i2c=SoftI2C(scl = Pin(0), sda = Pin(1), freq = 400000)
Pin(0,Pin.OUT)
'''Atmos_Sensor'''
try :
import hp203x
ext_hp203x = hp203x.HP203X(ext_i2c)
except Exception as e:
print("Warning: Failed to communicate with HP203X or",e)
'''T&H_Sensor'''
try :
import ahtx0
ext_ahtx0 = ahtx0.AHTx0(ext_i2c)
except Exception as e:
print("Warning: Failed to communicate with AHTx0 or",e)
'''RFID_Sensor'''
try :
import rc522
ext_rc522 = rc522.RC522(ext_i2c)
except Exception as e:
print("Warning: Failed to communicate with RC522 or",e)
'''Knob_Sensor'''
def varistor():
adc = ADC(Pin(0))
adc.atten(ADC.ATTN_11DB)
time.sleep_ms(1)
values = []
for _ in range(100):
values.append(adc.read_u16())
time.sleep_us(100)
result = sum(sorted(values)[25:75])//50
Pin(0,Pin.OUT)
time.sleep_ms(1)
return max((result-10100),0)*65535//55435
'''Reclaim memory'''
gc.collect()

View File

@@ -0,0 +1,249 @@
"""
ME GO -Onboard resources
MicroPython library for the ME GO (Smart Car base for MixGo ME)
=======================================================
#Preliminary composition 20220625
dahanzimin From the Mixly Team
"""
import time, gc, math
from tm1931 import TM1931
from machine import Pin, SoftI2C, ADC
'''i2c-onboard'''
i2c = SoftI2C(scl = Pin(7), sda = Pin(6), freq = 400000)
i2c_scan = i2c.scan()
'''Version judgment'''
if 0x50 in i2c_scan:
version = 1
else:
version = 0
'''Judging the type of external motor'''
Mi2c = 0
for addr in i2c_scan:
if addr in [0x30, 0x31, 0x32, 0x33]:
Mi2c = addr
break
'''i2c-motor'''
def i2c_motor(speed):
i2c.writeto(Mi2c, b'\x00\x00' + speed.to_bytes(1, 'little') + b'\x00')
'''TM1931-Expand'''
class CAR(TM1931):
'''Infrared line patrol obstacle avoidance mode'''
CL=0 #Turn off infrared to reduce power consumption
OA=1 #Obstacle avoidance mode only
LP=2 #Line patrol mode only
LS=3 #Light seeking mode only
AS=4 #Automatic mode switching
'''TM1931 port corresponding function definition'''
OAOU=5 #obstacle avoidance
LPOU=4 #Line patrol control
LSOU=3 #Light control
WLED=12 #Headlamp port
GLED=[17,8,6,15] #Green LED port
RLED=[16,7,9,18] #Red LED port
UCOU=[1,2] #Typec external port
MOTO=[[13,14],[10,11],[1,2]] #Motor port
def __init__(self, i2c_bus):
super().__init__(i2c_bus)
self._mode = self.CL
self.atten = 0.82 if version else 1
self.adc0 = ADC(Pin(0), atten=ADC.ATTN_11DB)
self.adc1 = ADC(Pin(1), atten=ADC.ATTN_11DB)
self.adc2 = ADC(Pin(2), atten=ADC.ATTN_11DB)
self.adc3 = ADC(Pin(3), atten=ADC.ATTN_11DB)
def ir_mode(self,select=0):
'''Infrared line patrol obstacle avoidance mode'''
self._mode=select
if select==self.CL:
self.pwm(self.OAOU,0)
self.pwm(self.LPOU,0)
self.pwm(self.LSOU,0)
if select==self.OA:
self.pwm(self.OAOU,255)
self.pwm(self.LPOU,0)
self.pwm(self.LSOU,0)
if select==self.LP:
self.pwm(self.OAOU,0)
self.pwm(self.LPOU,255)
self.pwm(self.LSOU,0)
if select==self.LS:
self.pwm(self.OAOU,0)
self.pwm(self.LPOU,0)
self.pwm(self.LSOU,255)
time.sleep_ms(2)
def obstacle(self):
'''Read the obstacle avoidance sensor'''
if self._mode==self.AS:
self.pwm(self.OAOU,255)
self.pwm(self.LPOU,0)
self.pwm(self.LSOU,0)
time.sleep_ms(2)
if self._mode==self.OA or self._mode==self.AS :
return self.adc2.read_u16(),self.adc1.read_u16(),self.adc0.read_u16(),self.adc3.read_u16()
else:
raise ValueError('Mode selection error, obstacle avoidance data cannot be read')
def patrol(self):
'''Read the line patrol sensor'''
if self._mode==self.AS:
self.pwm(self.OAOU,0)
self.pwm(self.LPOU,255)
self.pwm(self.LSOU,0)
time.sleep_ms(2)
if self._mode==self.LP or self._mode==self.AS:
return self.adc3.read_u16(),self.adc2.read_u16(),self.adc1.read_u16(),self.adc0.read_u16()
else:
raise ValueError('Mode selection error, line patrol data cannot be read')
def light(self):
'''Read the light seeking sensor'''
if self._mode==self.AS:
self.pwm(self.OAOU,0)
self.pwm(self.LPOU,0)
self.pwm(self.LSOU,255)
time.sleep_ms(2)
if self._mode==self.LS or self._mode==self.AS:
return self.adc3.read_u16(),self.adc2.read_u16(),self.adc1.read_u16(),self.adc0.read_u16()
else:
raise ValueError('Mode selection error, light seeking data cannot be read')
def motor(self, index, action, speed=0):
speed = round(max(min(speed, 100), -100) * self.atten)
if action=="N":
if (index == [1, 2]) and Mi2c:
i2c_motor(0)
else:
self.pwm(index[0], 255)
self.pwm(index[1], 255)
elif action=="P":
if (index == [1, 2]) and Mi2c:
i2c_motor(0)
else:
self.pwm(index[0], 0)
self.pwm(index[1], 0)
elif action=="CW":
if (index == [1, 2]) and Mi2c:
i2c_motor(speed)
else:
if speed >= 0:
self.pwm(index[0], speed * 255 // 100)
self.pwm(index[1], 0)
else:
self.pwm(index[0], 0)
self.pwm(index[1], - speed * 255 // 100)
elif action=="CCW":
if (index == [1, 2]) and Mi2c:
i2c_motor(- speed)
else:
if speed >= 0:
self.pwm(index[0], 0)
self.pwm(index[1], speed * 255 // 100)
else:
self.pwm(index[0], - speed * 255 // 100)
self.pwm(index[1], 0)
else:
raise ValueError('Invalid input, valid are "N","P","CW","CCW"')
def move(self,action,speed=100):
if action=="N":
self.motor(self.MOTO[0],"N")
self.motor(self.MOTO[1],"N")
elif action=="P":
self.motor(self.MOTO[0],"P")
self.motor(self.MOTO[1],"P")
elif action=="F":
self.motor(self.MOTO[0],"CCW",speed)
self.motor(self.MOTO[1],"CW",speed)
elif action=="B":
self.motor(self.MOTO[0],"CW",speed)
self.motor(self.MOTO[1],"CCW",speed)
elif action=="L":
self.motor(self.MOTO[0],"CW",speed)
self.motor(self.MOTO[1],"CW",speed)
elif action=="R":
self.motor(self.MOTO[0],"CCW",speed)
self.motor(self.MOTO[1],"CCW",speed)
else:
raise ValueError('Invalid input, valid are "N","P","F","B","L","R"')
def setbrightness(self,index,val):
if not 0 <= val <= 100:
raise ValueError("Brightness must be in the range: 0-100%")
self.pwm(index,val)
def getrightness(self,index):
return self.duty(index)
def setonoff(self,index,val):
if(val == -1):
if self.getrightness(index) < 50:
self.setbrightness(index,100)
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.getrightness(index)>0 else False
try :
car=CAR(i2c) #Including LED,motor,patrol,obstacle
except Exception as e:
print("Warning: Failed to communicate with TM1931 (ME GO CAR) or", e)
'''2Hall_HEP'''
class HALL:
_pulse_turns=1/480 if version else 1/400 #圈数= 1/(减速比*磁极)
_pulse_distance=_pulse_turns*math.pi*4.4 #距离= 圈数*π*轮胎直径
def __init__(self, pin):
self.turns = 0
self.distance = 0 #cm
self._speed = 0 #cm/s
self._on_receive = None
self._time = time.ticks_ms()
Pin(pin, Pin.IN).irq(handler=self._receive_cb, trigger = (Pin.IRQ_RISING | Pin.IRQ_FALLING))
def _receive_cb(self, event_source):
self.turns += self._pulse_turns
self.distance += self._pulse_distance
self._speed += self._pulse_distance
if self._on_receive:
self._on_receive(round(self.turns,2),round(self.distance,2))
def irq_cb(self, callback):
self._on_receive = callback
def initial(self,turns=None,distance=None):
if not (turns is None):
self.turns = turns
if not (distance is None):
self.distance = distance
@property
def speed(self):
value=self._speed/time.ticks_diff(time.ticks_ms(), self._time)*1000 if self._speed>0 else 0
self._time = time.ticks_ms()
self._speed=0
return round(value, 2)
hall_A = HALL(20)
hall_B = HALL(21)
'''Reclaim memory'''
gc.collect()

View File

@@ -0,0 +1,231 @@
"""
MixGo CC Onboard resources
MicroPython library for the MixGo CC Onboard resources
=======================================================
@dahanzimin From the Mixly Team
"""
import time, gc
from machine import *
'''i2c-onboard'''
onboard_i2c=SoftI2C(scl = Pin(7), sda = Pin(6), freq = 400000)
onboard_i2c_scan = onboard_i2c.scan()
'''Version judgment'''
if 0x73 in onboard_i2c_scan:
version=1
elif 0x72 in onboard_i2c_scan:
version=0
else:
print("Warning: Mixgo CC board is not detected, which may cause usage errors")
'''RTC'''
rtc_clock=RTC()
'''ACC-Sensor'''
try :
import mxc6655xa
onboard_acc = mxc6655xa.MXC6655XA(onboard_i2c)
except Exception as e:
print("Warning: Failed to communicate with MXC6655XA (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 TR_553ALS (ALS&PS) or",e)
'''BPS_Sensor'''
if 0x76 in onboard_i2c_scan:
try :
import hp203x
onboard_bps = hp203x.HP203X(onboard_i2c)
except Exception as e:
print("Warning: Failed to communicate with HP203X (BPS) or",e)
if 0x77 in onboard_i2c_scan:
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)
'''T&H_Sensor'''
if 0x38 in onboard_i2c_scan:
try :
import ahtx0
onboard_ths = ahtx0.AHTx0(onboard_i2c)
except Exception as e:
print("Warning: Failed to communicate with AHTx0 (THS) or",e)
if 0x70 in onboard_i2c_scan:
try :
import shtc3
onboard_ths = shtc3.SHTC3(onboard_i2c)
except Exception as e:
print("Warning: Failed to communicate with GXHTC3 (THS) or",e)
'''RFID_Sensor'''
try :
import rc522
onboard_rfid = rc522.RC522(onboard_i2c)
except Exception as e:
print("Warning: Failed to communicate with RC522 (RFID) or",e)
'''matrix32x12'''
try :
import matrix32x12
onboard_matrix = matrix32x12.Matrix(onboard_i2c, address=0x73 if version else 0x72)
except Exception as e:
print("Warning: Failed to communicate with Matrix32X12 or",e)
'''Magnetic'''
try :
import mmc5603
onboard_mgs = mmc5603.MMC5603(onboard_i2c)
except Exception as e:
print("Warning: Failed to communicate with MMC5603 (MGS) or",e)
'''2RGB_WS2812'''
from ws2812 import NeoPixel
onboard_rgb = NeoPixel(Pin(8), 4, ORDER=(0, 1, 2, 3))
'''1Buzzer-Music'''
from music import MIDI
onboard_music = MIDI(10)
'''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(pin=4 if version else 3)
'''5KEY_Sensor'''
class KEYSensor:
def __init__(self, pin, range):
self.pin = pin
self.adc = ADC(Pin(pin), atten=ADC.ATTN_11DB)
self.range = range
self.flag = True
def _value(self):
values = []
for _ in range(25):
try:
values.append(self.adc.read())
except: #IDF>5.2.2存在ADC2问题
pass
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()
if version==0:
B1key = Button(9)
B2key = Button(4)
A1key = KEYSensor(2,20)
A2key = KEYSensor(2,1170)
A3key = KEYSensor(2,2400)
A4key = KEYSensor(2,3610)
else:
B1key = Button(9)
B2key = KEYSensor(5,20)
A1key = KEYSensor(5,800)
A2key = KEYSensor(5,1600)
A3key = KEYSensor(5,2500)
A4key = KEYSensor(5,3500)
'''2-LED''' #Modify indexing method
class LED:
def __init__(self, pins=[]):
self._pins = pins
self._flag = [True] * len(pins)
self._brightness = [0] * len(pins)
def setbrightness(self, index, val):
if not 0 <= val <= 100:
raise ValueError("Brightness must be in the range: 0-100%")
if len(self._pins) == 0:
print("Warning: Old version, without this function")
else:
if self._flag[index-1]:
self._pins[index-1] = PWM(Pin(self._pins[index-1]), duty_u16=65535)
self._flag[index-1] = False
self._brightness[index - 1] = val
self._pins[index - 1].duty_u16(65535 - val * 65535 // 100)
def getbrightness(self, index):
if len(self._pins) == 0:
print("Warning: Old version, without this function")
else:
return self._brightness[index - 1]
def setonoff(self, index, val):
if len(self._pins) == 0:
print("Warning: Old version, without this function")
else:
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):
if len(self._pins) == 0:
print("Warning: Old version, without this function")
else:
return True if self.getbrightness(index) > 50 else False
#LED with function call / L1(IO20),L2(IO21)
onboard_led = LED() if version == 0 else LED(pins=[20, 21])
'''Reclaim memory'''
gc.collect()

View File

@@ -0,0 +1,172 @@
"""
MixGo ME Onboard resources
MicroPython library for the MixGo ME Onboard resources
=======================================================
@dahanzimin From the Mixly Team
"""
import time, gc
from machine import *
'''i2c-onboard'''
onboard_i2c=SoftI2C(scl = Pin(7), sda = Pin(6), freq = 400000)
'''RTC'''
rtc_clock=RTC()
'''ACC-Sensor'''
try :
import mxc6655xa
onboard_acc = mxc6655xa.MXC6655XA(onboard_i2c)
except Exception as e:
print("Warning: Failed to communicate with MXC6655XA 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 or",e)
'''Matrix8x5'''
try :
import matrix8x5
onboard_matrix = matrix8x5.Matrix(8)
except Exception as e:
print("Warning: Failed to communicate with Matrix8x5 or",e)
'''Magnetic'''
try :
import mmc5603
onboard_mgs = mmc5603.MMC5603(onboard_i2c)
except Exception as e:
print("Warning: Failed to communicate with MMC5603 or",e)
'''2RGB_WS2812'''
from ws2812 import NeoPixel
onboard_rgb = NeoPixel(Pin(9), 2, ORDER=(0, 1, 2, 3), multiplex=1)
'''1Buzzer-Music'''
from music import MIDI
onboard_music = MIDI(10)
'''MIC_Sensor'''
class MICSensor:
def __init__(self):
self.adc=ADC(Pin(4), 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()
'''5KEY_Sensor'''
class KEYSensor:
def __init__(self, pin, range):
self.pin = pin
self.adc = ADC(Pin(pin), atten=ADC.ATTN_11DB)
self.range = range
self.flag = True
def _value(self):
values = []
for _ in range(25):
try:
values.append(self.adc.read())
except: #IDF>5.2.2存在ADC2问题
pass
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(9)
B2key = KEYSensor(5,20)
A1key = KEYSensor(5,800)
A2key = KEYSensor(5,1600)
A3key = KEYSensor(5,2500)
A4key = KEYSensor(5,3500)
'''2LED-Multiplex RGB'''
class LED:
def __init__(self, rgb, num=2, color=3):
self._rgb = rgb
self._col = [color] * num
self._color = ((0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (0, 1, 1), (1, 0, 1), (1, 1, 1))
def setbrightness(self, index, value):
self._rgb[index - 1] = (value if self._color[self._col[index-1]][0] else 0,
value if self._color[self._col[index-1]][1] else 0,
value if self._color[self._col[index-1]][2] else 0)
self._rgb.write()
def getbrightness(self, index):
color = self._rgb[index - 1]
return color[0] | color[1] | color[2]
def setonoff(self, index, value):
if value == -1:
if self.getbrightness(index) < 50:
self.setbrightness(index, 100)
else:
self.setbrightness(index, 0)
elif value == 1:
self.setbrightness(index, 100)
elif value == 0:
self.setbrightness(index, 0)
def getonoff(self, index):
return True if self.getbrightness(index) > 50 else False
def setcolor(self, index, color):
self._col[index-1] = color
def getcolor(self, index):
return self._col[index-1]
onboard_led=LED(onboard_rgb)
'''Reclaim memory'''
gc.collect()

View File

@@ -0,0 +1,251 @@
"""
MixGo CAR -Onboard resources
MicroPython library for the MixGo CAR (ESP32C3)
=======================================================
@dahanzimin From the Mixly Team
"""
import time,gc,ms32006
from machine import *
'''RTC'''
rtc_clock=RTC()
'''i2c-onboard'''
onboard_i2c=SoftI2C(scl = Pin(7), sda = Pin(6), freq = 400000)
'''4RGB_WS2812'''
from ws2812 import NeoPixel
onboard_rgb = NeoPixel(Pin(8), 4, ORDER=(0, 1, 2, 3))
'''1Buzzer-Music'''
from music import MIDI
onboard_music =MIDI(5)
'''1KEY_Button'''
class Button:
def __init__(self, pin):
self.pin = Pin(pin, Pin.IN)
self.flag = True
def get_presses(self, delay = 1):
last_time, last_state, presses = time.time(), 0, 0
while time.time() < last_time + delay:
time.sleep_ms(50)
if last_state == 0 and self.pin.value() == 1:
last_state = 1
if last_state == 1 and self.pin.value() == 0:
last_state, presses = 0, presses + 1
return presses
def is_pressed(self):
return not self.pin.value()
def was_pressed(self, flag = 0):
if(self.pin.value() != self.flag):
self.flag = self.pin.value()
time.sleep(0.02)
if self.flag:
return False
else:
return True
def irq(self, handler, trigger):
self.pin.irq(handler = handler, trigger = trigger)
button = Button(9)
'''MS32006-Drive'''
class CAR:
MOTO_R =1
MOTO_R1 =0
MOTO_R2 =7
MOTO_L =2
MOTO_L1 =4
MOTO_L2 =3
def __init__(self, i2c_bus):
self.motor_a=ms32006.MS32006(i2c_bus,ms32006.ADDRESS_A)
self.motor_b=ms32006.MS32006(i2c_bus,ms32006.ADDRESS_B)
self.motor_move("P")
def motor(self,index,action,speed=0):
if action=="N":
if index==self.MOTO_R:
self.motor_a.dc_motor(ms32006.MOT_N,speed)
if index==self.MOTO_L:
self.motor_b.dc_motor(ms32006.MOT_N,speed)
elif action=="P":
if index==self.MOTO_R:
self.motor_a.dc_motor(ms32006.MOT_P,speed)
if index==self.MOTO_L:
self.motor_b.dc_motor(ms32006.MOT_P,speed)
elif action=="CW":
if index==self.MOTO_R:
self.motor_a.dc_motor(ms32006.MOT_CW,speed)
if index==self.MOTO_L:
self.motor_b.dc_motor(ms32006.MOT_CW,speed)
elif action=="CCW":
if index==self.MOTO_R:
self.motor_a.dc_motor(ms32006.MOT_CCW,speed)
if index==self.MOTO_L:
self.motor_b.dc_motor(ms32006.MOT_CCW,speed)
else:
raise ValueError('Invalid input, valid are "N","P","CW","CCW"')
def stepper(self,index,action,mot_pps,mot_step):
if action=="N":
if index==self.MOTO_R1 or index==self.MOTO_L1:
self.motor_a.close(index)
if index==self.MOTO_R2 or index==self.MOTO_L2:
self.motor_b.close(index-3)
elif action=="P":
if index==self.MOTO_R1 or index==self.MOTO_L1:
self.motor_a.stop(index)
if index==self.MOTO_R2 or index==self.MOTO_L2:
self.motor_b.stop(index-3)
elif action=="CW":
if index==self.MOTO_R1 or index==self.MOTO_L1:
self.motor_a.move(index,ms32006.MOT_CW,mot_pps,mot_step)
if index==self.MOTO_R2 or index==self.MOTO_L2:
self.motor_b.move(index-3,ms32006.MOT_CW,mot_pps,mot_step)
elif action=="CCW":
if index==self.MOTO_R1 or index==self.MOTO_L1:
self.motor_a.move(index,ms32006.MOT_CCW,mot_pps,mot_step)
if index==self.MOTO_R2 or index==self.MOTO_L2:
self.motor_b.move(index-3,ms32006.MOT_CCW,mot_pps,mot_step)
else:
raise ValueError('Invalid input, valid are "N","P","CW","CCW"')
def stepper_readwork(self,index):
if index==self.MOTO_R1 or index==self.MOTO_L1:
return self.motor_a.readwork(index)
if index==self.MOTO_R2 or index==self.MOTO_L2:
return self.motor_b.readwork(index-3)
def stepper_move(self,action,mot_pps,mot_step):
if action=="N":
self.motor_a.close(self.MOTO_R1)
self.motor_a.close(self.MOTO_R2-3)
self.motor_b.close(self.MOTO_L1)
self.motor_b.close(self.MOTO_L2-3)
elif action=="P":
self.motor_a.stop(self.MOTO_R1)
self.motor_a.stop(self.MOTO_R2-3)
self.motor_b.stop(self.MOTO_L1)
self.motor_b.stop(self.MOTO_L2-3)
elif action=="F":
self.motor_a.move(self.MOTO_R1,ms32006.MOT_CW,mot_pps,mot_step)
self.motor_a.move(self.MOTO_R2-3,ms32006.MOT_CCW,mot_pps,mot_step)
self.motor_b.move(self.MOTO_L1,ms32006.MOT_CW,mot_pps,mot_step)
self.motor_b.move(self.MOTO_L2-3,ms32006.MOT_CCW,mot_pps,mot_step)
elif action=="B":
self.motor_a.move(self.MOTO_R1,ms32006.MOT_CCW,mot_pps,mot_step)
self.motor_a.move(self.MOTO_R2-3,ms32006.MOT_CW,mot_pps,mot_step)
self.motor_b.move(self.MOTO_L1,ms32006.MOT_CCW,mot_pps,mot_step)
self.motor_b.move(self.MOTO_L2-3,ms32006.MOT_CW,mot_pps,mot_step)
elif action=="L":
self.motor_a.move(self.MOTO_R1,ms32006.MOT_CCW,mot_pps,mot_step)
self.motor_a.move(self.MOTO_R2-3,ms32006.MOT_CCW,mot_pps,mot_step)
self.motor_b.move(self.MOTO_L1,ms32006.MOT_CCW,mot_pps,mot_step)
self.motor_b.move(self.MOTO_L2-3,ms32006.MOT_CCW,mot_pps,mot_step)
elif action=="R":
self.motor_a.move(self.MOTO_R1,ms32006.MOT_CW,mot_pps,mot_step)
self.motor_a.move(self.MOTO_R2-3,ms32006.MOT_CW,mot_pps,mot_step)
self.motor_b.move(self.MOTO_L1,ms32006.MOT_CW,mot_pps,mot_step)
self.motor_b.move(self.MOTO_L2-3,ms32006.MOT_CW,mot_pps,mot_step)
else:
raise ValueError('Invalid input, valid are "N","P","F","B","L","R"')
def motor_move(self,action,speed=100):
if action=="N":
self.motor_a.dc_motor(ms32006.MOT_N,speed)
self.motor_b.dc_motor(ms32006.MOT_N,speed)
elif action=="P":
self.motor_a.dc_motor(ms32006.MOT_P,speed)
self.motor_b.dc_motor(ms32006.MOT_P,speed)
elif action=="F":
self.motor_a.dc_motor(ms32006.MOT_CCW,speed)
self.motor_b.dc_motor(ms32006.MOT_CW,speed)
elif action=="B":
self.motor_a.dc_motor(ms32006.MOT_CW,speed)
self.motor_b.dc_motor(ms32006.MOT_CCW,speed)
elif action=="L":
self.motor_a.dc_motor(ms32006.MOT_CCW,speed)
self.motor_b.dc_motor(ms32006.MOT_CCW,speed)
elif action=="R":
self.motor_a.dc_motor(ms32006.MOT_CW,speed)
self.motor_b.dc_motor(ms32006.MOT_CW,speed)
else:
raise ValueError('Invalid input, valid are "N","P","F","B","L","R"')
try :
car=CAR(onboard_i2c) #Including LED,motor,patrol,obstacle
except Exception as e:
print("Warning: Failed to communicate with MS32006 or",e)
'''IRtube-Drive'''
class IRtube:
OA=1 #Obstacle avoidance mode only
LP=2 #Line patrol mode only
AS=3 #Automatic mode switching
def __init__(self):
#auto是否手动切换模拟开关转换
self.adc0 = ADC(Pin(0))
self.adc1 = ADC(Pin(1))
self.adc2 = ADC(Pin(3))
self.adc3 = ADC(Pin(4))
self.adc0.atten(ADC.ATTN_11DB)
self.adc1.atten(ADC.ATTN_11DB)
self.adc2.atten(ADC.ATTN_11DB)
self.adc3.atten(ADC.ATTN_11DB)
self.convert=Pin(2, Pin.OUT)
self._mode=self.AS
def read_bat(self):
#读电池电量,返回电压值
self.convert = ADC(Pin(2))
self.convert.atten(ADC.ATTN_11DB)
time.sleep_ms(5)
bat_adc=self.convert.read()*0.0011
time.sleep_ms(5)
self.convert=Pin(2, Pin.OUT)
return bat_adc
def obstacle(self):
#读避障传感器,返回前左、右后左、右ADC值
if self._mode==self.AS:
self.convert.value(0)
time.sleep_ms(2)
if self._mode==self.OA or self._mode==self.AS :
return self.adc1.read_u16(),self.adc2.read_u16(),self.adc3.read_u16(),self.adc0.read_u16()
else:
raise ValueError('In line patrol mode, obstacle avoidance data cannot be read')
def patrol(self):
#读巡线传感器,返回左、中左、中右、右ADC值
if self._mode==self.AS:
self.convert.value(1)
time.sleep_ms(2)
if self._mode==self.LP or self._mode==self.AS:
return self.adc0.read_u16(),self.adc1.read_u16(),self.adc2.read_u16(),self.adc3.read_u16()
else:
raise ValueError('In obstacle avoidance mode, line patrol data cannot be read')
def ir_mode(self,select=0):
#切换模式
self._mode=select
if select==self.OA:
self.convert.value(0)
if select==self.LP:
self.convert.value(1)
time.sleep_ms(2)
onboard_info = IRtube()
'''Reclaim memory'''
gc.collect()

View File

@@ -0,0 +1,230 @@
{
"board": {
"MixGo ME": {
"key": "micropython:esp32c3:mixgo_me",
"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"
}
]
}
]
},
"MixGo CC": {
"key": "micropython:esp32c3:mixgo_cc",
"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"
}
]
}
]
},
"MixGo Car 4.2": {
"key": "micropython:esp32c3:mixgocar_c3",
"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"
}
]
}
]
},
"ESP32C3 Generic(UART)": {
"key": "micropython:esp32c3: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:esp32c3:mixgo_cc": {
"command": "\"{esptool}\" --chip esp32c3 --port {com} --baud {baudrate} write_flash -e 0x0 \"{indexPath}/build/Mixgo_CC_lib-v1.25.0.bin\" 0X3A0000 \"{indexPath}/../micropython/build/HZK12.bin\""
},
"micropython:esp32c3:mixgo_me": {
"command": "\"{esptool}\" --chip esp32c3 --port {com} --baud {baudrate} write_flash -e 0x0 \"{indexPath}/build/Mixgo_ME_lib-v1.25.0.bin\" 0X3A0000 \"{indexPath}/../micropython/build/HZK12.bin\""
},
"micropython:esp32c3:mixgocar_c3": {
"command": "\"{esptool}\" --chip esp32c3 --port {com} --baud {baudrate} write_flash -e 0x0 \"{indexPath}/build/Mixgo_Car_lib-v1.25.0.bin\" 0X3A0000 \"{indexPath}/../micropython/build/HZK12.bin\""
},
"micropython:esp32c3:generic": {
"command": "\"{esptool}\" --chip esp32c3 --port {com} --baud {baudrate} write_flash -e 0x0 \"{indexPath}/build/Generic_C3_UART_lib-v1.25.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": false,
"dtr": true
},
"lib": {
"mixly": {
"url": [
"http://download.mixlylibs.cloud/mixly3-packages/cloud-libs/micropython_esp32c3/libs.json"
]
}
},
"pythonToBlockly": false,
"web": {
"devices": {
"serial": true,
"hid": false,
"usb": false
},
"burn": {
"erase": true,
"micropython:esp32c3:mixgo_cc": {
"binFile": [
{
"offset": "0x0000",
"path": "./build/Mixgo_CC_lib-v1.25.0.bin"
}, {
"offset": "0x3A0000",
"path": "../micropython/build/HZK12.bin"
}
]
},
"micropython:esp32c3:mixgo_me": {
"binFile": [
{
"offset": "0x0000",
"path": "./build/Mixgo_ME_lib-v1.25.0.bin"
}, {
"offset": "0x3A0000",
"path": "../micropython/build/HZK12.bin"
}
]
},
"micropython:esp32c3:mixgocar_c3": {
"binFile": [
{
"offset": "0x0000",
"path": "./build/Mixgo_Car_lib-v1.25.0.bin"
}, {
"offset": "0x3A0000",
"path": "../micropython/build/HZK12.bin"
}
]
},
"micropython:esp32c3:generic": {
"binFile": [
{
"offset": "0x0000",
"path": "./build/Generic_C3_UART_lib-v1.25.0.bin"
}, {
"offset": "0x3A0000",
"path": "../micropython/build/HZK12.bin"
}
]
}
},
"upload": {
"reset": []
}
}
}

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="u{,I-BKh7cV5XWpVcxh?" x="-1001" y="-592"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="0.N;3f(m;25|SMY?G:RZ"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="|_y_}Z.LZ70V0WBG5|sT"><value name="data"><shadow type="pins_builtinimg" id="vXRb{[KMIe$[?`.7}Rr["><field name="PIN">onboard_matrix.HEART</field></shadow></value><next><block type="display_scroll_string" id="pVf*5{V.Dwe8B8PL[1S4"><value name="data"><shadow type="text" id="X.J`=QO4dA}St`CRXi1r"><field name="TEXT">你好,米思齐!</field></shadow></value></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXguSEVBUlQpCiAgICBvbmJvYXJkX21hdHJpeC5zY3JvbGwoJ+S9oOWlve+8jOexs+aAnem9kO+8gScpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="(~F)i8]|XbxkN$1h;tnO" x="-1330" y="-796"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="HN]^a_weuVsd8t(h20v("><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="?:tuc3),vzS+`lXR)MJb"><value name="data"><shadow type="pins_builtinimg" id="y2]DPAm9P!KFo~)=+#;="><field name="PIN">onboard_matrix.HEART</field></shadow><block type="image_invert" id="LY_s@drIkQ]35/eg-8KL"><value name="A"><shadow type="pins_builtinimg" id="NgYZ7,E.N-F_5}R#`?bi"><field name="PIN">onboard_matrix.HEART</field></shadow></value></block></value><next><block type="display_scroll_string_delay" id="b9:X00KVY-@MACZ{C.El"><value name="data"><shadow type="text" id="HYM/$npd:[LKUUI#Xisd"><field name="TEXT">你好,米思齐!</field></shadow></value><value name="space"><shadow type="math_number" id="^v{xHYU/B[|ku{Bz5P1a"><field name="NUM">0</field></shadow></value><value name="time"><shadow type="math_number" id="XE+c/]Uia0+R}yHr-lE$"><field name="NUM">50</field></shadow></value></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXgubWFwX2ludmVydChvbmJvYXJkX21hdHJpeC5IRUFSVCkpCiAgICBvbmJvYXJkX21hdHJpeC5zY3JvbGwoJ+S9oOWlve+8jOexs+aAnem9kO+8gScsc3BlZWQgPTUwLHNwYWNlID0gMCkK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="o[nH3xp-l-uk$T-NJyhK" x="-851" y="-584"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="5at4+,D[gYTuwgrwr^Td"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="?G94[L={w+iZopF_q/hZ"><value name="data"><shadow type="pins_builtinimg" id="(m(`UriTbn871sGMFcSA"><field name="PIN">onboard_matrix.HEART</field></shadow></value><next><block type="controls_delay_new" id="@L_97Rp;`=[m|)h#;bX*"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="s3HgWUNP8i8m)4:4ulhb"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id=";u9l}^e}NdMtftuGcKlj"><value name="data"><shadow type="pins_builtinimg" id="$[KE@4UOQ^E4(IezwySL"><field name="PIN">onboard_matrix.HEART_SMALL</field></shadow></value><next><block type="controls_delay_new" id="TN:d3c*i3b*UJD$9fA6W"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="=aD/tD?0Yh4qlaANKHW/"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXguSEVBUlQpCiAgICB0aW1lLnNsZWVwKDAuMSkKICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LkhFQVJUX1NNQUxMKQogICAgdGltZS5zbGVlcCgwLjEpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="display_scroll_string" id="VmS)iG{FP{_W)WG[n:~m" x="-847" y="-630"><value name="data"><shadow type="text" id="Uxucq})9D6NRmBIv^M]n"><field name="TEXT">你好,米思齐!</field></shadow></value><next><block type="controls_whileUntil" id="OR$hUff?N}+oT@:jueDc"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="}?FlX-AUYM;~@mbrnCRk"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="MdngU:B2v+}8HS:}KsaC"><value name="data"><shadow type="pins_builtinimg" id="aA2g,t.bNg){=sdc2(@|"><field name="PIN">onboard_matrix.HEART</field></shadow></value><next><block type="controls_delay_new" id="fz}_3.bKPFu$q[|@L86w"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="TliyXEYNq1$55*nuS/Ow"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id="/2Ox)4aqWkbkTyYQm3)-"><value name="data"><shadow type="pins_builtinimg" id="va1saKx*99HI8-$jIoyE"><field name="PIN">onboard_matrix.HEART_SMALL</field></shadow></value><next><block type="controls_delay_new" id="+fdTIRtv|^uvo2`YH8=}"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="7v8.H3W31fUJ2[H/.@uU"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></next></block></statement></block></next></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKaW1wb3J0IHRpbWUKCgpvbmJvYXJkX21hdHJpeC5zY3JvbGwoJ+S9oOWlve+8jOexs+aAnem9kO+8gScpCndoaWxlIFRydWU6CiAgICBvbmJvYXJkX21hdHJpeC5zaG93cyhvbmJvYXJkX21hdHJpeC5IRUFSVCkKICAgIHRpbWUuc2xlZXAoMC4xKQogICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXguSEVBUlRfU01BTEwpCiAgICB0aW1lLnNsZWVwKDAuMSkK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id=":sr2*a:6e.rY6oYtSos}" x="-1017" y="-593"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="AOxD~`!)}!4_-7;HTPs,"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="oPS@~QaIX|oN87(]2jIK"><mutation else="1"></mutation><value name="IF0"><block type="sensor_mixgo_button_is_pressed" id="WTh/*{pZ2F#^_cj_G)A{"><value name="btn"><shadow type="pins_button" id="t7h#xK[x@^gE?7Df,@@Q"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="display_show_image" id="mbnQU]i2P6/1w,TthOr#"><value name="data"><shadow type="pins_builtinimg" id="9;)@$Z4@seJy?*FeGQMD"><field name="PIN">onboard_matrix.HEART</field></shadow></value></block></statement><statement name="ELSE"><block type="display_show_image" id="JFxIQJw5[0th@U![HtB1"><value name="data"><shadow type="pins_builtinimg" id="uuvNLdR:DUD1CR6v1`^e"><field name="PIN">onboard_matrix.HEART_SMALL</field></shadow></value></block></statement></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1peGdvX2NjCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CgoKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX2NjLkIxa2V5LmlzX3ByZXNzZWQoKToKICAgICAgICBvbmJvYXJkX21hdHJpeC5zaG93cyhvbmJvYXJkX21hdHJpeC5IRUFSVCkKICAgIGVsc2U6CiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXguSEVBUlRfU01BTEwpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="!38~y9.;1S-=cZ3tY`^B" x="-1059" y="-724"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="a]^Fj{PNBz6wK,2VF.rT"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="Fev^OZpe^_CLpc3Xs/,a"><mutation elseif="2" else="1"></mutation><value name="IF0"><block type="logic_operation" id="^Fm`pZrDRAmMi`;HWWY4"><field name="OP">AND</field><value name="A"><block type="sensor_mixgo_button_is_pressed" id=";)Nd~5KLMFgLnw#O8fW;"><value name="btn"><shadow type="pins_button" id="nu+RsfldwKY5ow6;#o}e"><field name="PIN">B1key</field></shadow></value></block></value><value name="B"><block type="sensor_mixgo_button_is_pressed" id="#(7ZvPVgGJN.z*oOW:KW"><value name="btn"><shadow type="pins_button" id="e1srs/Q49p=DOmW`gAXU"><field name="PIN">B2key</field></shadow></value></block></value></block></value><statement name="DO0"><block type="display_show_image" id="CGBdJTn=J)k(u([,k;pM"><value name="data"><shadow type="pins_builtinimg" id="Ks2;!a-oL/HiHK-AI,Mu"><field name="PIN">onboard_matrix.SAD</field></shadow></value></block></statement><value name="IF1"><block type="sensor_mixgo_button_is_pressed" id="AY07Q12P]OEX^Y#978t,"><value name="btn"><shadow type="pins_button" id="N:.VTMAame3IQ8hLs/yW"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO1"><block type="display_show_image" id="Q=7EYyU*+YA0h?-`R*/8"><value name="data"><shadow type="pins_builtinimg" id="lEcmVmV2b}M}bX=`.iZb"><field name="PIN">onboard_matrix.HEART</field></shadow></value></block></statement><value name="IF2"><block type="sensor_mixgo_button_is_pressed" id="y@Gpv6*F~0/L$2`]oVk,"><value name="btn"><shadow type="pins_button" id="J[lVCBP~^qnx0s`LAjfH"><field name="PIN">B2key</field></shadow></value></block></value><statement name="DO2"><block type="display_show_image" id="UMv:]!=`.XU]|A:{d!U#"><value name="data"><shadow type="pins_builtinimg" id="*Y8#q1K|Jr+9z{RcEcgR"><field name="PIN">onboard_matrix.HEART_SMALL</field></shadow></value></block></statement><statement name="ELSE"><block type="display_show_image" id="7a[eD7+#KFb,5vH]I2y7"><value name="data"><shadow type="pins_builtinimg" id="ji65V=H#hHf$/{kH#(2O"><field name="PIN">onboard_matrix.SMILE</field></shadow></value></block></statement></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1peGdvX2NjCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CgoKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX2NjLkIxa2V5LmlzX3ByZXNzZWQoKSBhbmQgbWl4Z29fY2MuQjJrZXkuaXNfcHJlc3NlZCgpOgogICAgICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LlNBRCkKICAgIGVsaWYgbWl4Z29fY2MuQjFrZXkuaXNfcHJlc3NlZCgpOgogICAgICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LkhFQVJUKQogICAgZWxpZiBtaXhnb19jYy5CMmtleS5pc19wcmVzc2VkKCk6CiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXguSEVBUlRfU01BTEwpCiAgICBlbHNlOgogICAgICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LlNNSUxFKQo=</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="fdzgfY]sB6mumLo|s|P:" x="-1059" y="-724"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="DP1,h)V7S*wx?p*gcC0#"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_forEach" id="IQi7w|~fa81Yz:.n[tRI"><value name="LIST"><shadow type="list_many_input" id="#Y(e+qeE8FiN[R_$(u|/"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="uxoi9Wcjhrke_|rS,bdK"><value name="FROM"><shadow type="math_number" id="{KUGIE*W0?~BIO{T[._3"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="!XKX}=a-?c6|B?ne!*s1"><field name="NUM">4</field></shadow></value><value name="STEP"><shadow type="math_number" id="Dq8_)iM*IfO9YcY4F*2X"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="?4gwkXDL7vZ-$M?ReR`7"><field name="VAR">i</field></shadow></value><statement name="DO"><block type="actuator_onboard_neopixel_rgb" id=":l6Bb:dOrsp.]Ea;.)gA"><value name="_LED_"><shadow type="math_number" id="r`{/kKdxc~?T@!W`EA#)"><field name="NUM">0</field></shadow><block type="variables_get" id="N/KHaTx1PDTQOtR,Y}SS"><field name="VAR">i</field></block></value><value name="RVALUE"><shadow type="math_number" id="3j*BAEf#1^})_xaARfE3"><field name="NUM">0</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="bfk/?K];uagzh`v.T^M6"><field name="NUM">0</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="dnw*T:wske{gF9h=V{YW"><field name="NUM">25</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id=";Xw]3LkNILo.z2+9V8jQ"><next><block type="controls_delay_new" id="Rb|:0+bx{+MN=x.**vln"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="Y/JRenhnNH^.y4o()=t2"><field name="NUM">0.5</field></shadow></value></block></next></block></next></block></statement><next><block type="actuator_onboard_neopixel_rgb_all" id="~GPQP*Tc~s{veJp27)?S"><value name="RVALUE"><shadow type="math_number" id="fEADfrs:N:9h(~*etVu1"><field name="NUM">0</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="[,}1WBGQ5kS=gAYC-/yO"><field name="NUM">0</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="~P?R5Y2aKKtR5D+/=;gY"><field name="NUM">0</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id="nK#OXzV|(M6yp#dbplJg"><next><block type="controls_delay_new" id="8zU:ZuYp0y#XgjRPj$uG"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id=".@Zup)9$}(n)n,+Q!I3q"><field name="NUM">1</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9yZ2IKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAgZm9yIGkgaW4gcmFuZ2UoMCwgNCwgMSk6CiAgICAgICAgb25ib2FyZF9yZ2JbaV0gPSAoMCwgMCwgMjUpCiAgICAgICAgb25ib2FyZF9yZ2Iud3JpdGUoKQogICAgICAgIHRpbWUuc2xlZXAoMC41KQogICAgb25ib2FyZF9yZ2IuZmlsbCgoMCwgMCwgMCkpCiAgICBvbmJvYXJkX3JnYi53cml0ZSgpCiAgICB0aW1lLnNsZWVwKDEpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="VHFLfgj7F]AJlOZT631w" x="-1059" y="-724"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="9X`HxHaw(qeeLgVh_zd."><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_forEach" id="+??Lt3ISBLh#n_M$Sd99"><value name="LIST"><shadow type="list_many_input" id="kZVNJ6qtq2uE0`]6$MI^"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id=")@/#AGX[/5j_?gbAQCbo"><value name="FROM"><shadow type="math_number" id="/NU-ek9/Y;3hi|/B]Snq"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="3D,LV1E??p[zPJt1CtOi"><field name="NUM">4</field></shadow></value><value name="STEP"><shadow type="math_number" id="XdI,KV`zYDd6z9oLv;lE"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="gCzb+U#t]/`q7B[k2u(]"><field name="VAR">i</field></shadow></value><statement name="DO"><block type="actuator_onboard_neopixel_rgb_all" id="O_i[E7F_pa~iixHThanv"><value name="RVALUE"><shadow type="math_number" id="227,gTX1r)z|y:9$Zci:"><field name="NUM">0</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="B;hq[rIv/aOVv-Z:|/qM"><field name="NUM">0</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="5I637**t0+.X=OlWH61P"><field name="NUM">0</field></shadow></value><next><block type="actuator_onboard_neopixel_rgb" id="_X8O0~|*K!WNWOG;=*HN"><value name="_LED_"><shadow type="math_number" id="i};dd4,iO@u-0I{H{W2u"><field name="NUM">0</field></shadow><block type="variables_get" id="#8TYObYCvKwfEZg+!IV#"><field name="VAR">i</field></block></value><value name="RVALUE"><shadow type="math_number" id=",HhvDkVQ7tF)ZOh=n?Z;"><field name="NUM">0</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="/7#P}9(Wffox^iiVpRnV"><field name="NUM">0</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="IA@NKpQrbq`mk-vCO9z="><field name="NUM">25</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id="(8cA:Jh[x$Y5szvAQpz["><next><block type="controls_delay_new" id="65*V:tN@];*INtz);h-H"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="v{pM2hkC2,Nqz/MCR3A="><field name="NUM">0.5</field></shadow></value></block></next></block></next></block></next></block></statement><next><block type="actuator_onboard_neopixel_rgb_all" id="0Z7XesjU:f$*/D9Ew2fS"><value name="RVALUE"><shadow type="math_number" id="}jIkVoR|qZg}`(SPuuuJ"><field name="NUM">0</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="gX1g_W`-#L7J_r+1L7W,"><field name="NUM">0</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="cC:,c8]z:*70!$(Kt:T;"><field name="NUM">0</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id="eB*8+.(aOja^0m.o6?1^"><next><block type="controls_delay_new" id="YebnIcA$KLYNgdlsv6:w"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="0!ryr0;@jvecgsV]D]6g"><field name="NUM">1</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9yZ2IKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAgZm9yIGkgaW4gcmFuZ2UoMCwgNCwgMSk6CiAgICAgICAgb25ib2FyZF9yZ2IuZmlsbCgoMCwgMCwgMCkpCiAgICAgICAgb25ib2FyZF9yZ2JbaV0gPSAoMCwgMCwgMjUpCiAgICAgICAgb25ib2FyZF9yZ2Iud3JpdGUoKQogICAgICAgIHRpbWUuc2xlZXAoMC41KQogICAgb25ib2FyZF9yZ2IuZmlsbCgoMCwgMCwgMCkpCiAgICBvbmJvYXJkX3JnYi53cml0ZSgpCiAgICB0aW1lLnNsZWVwKDEpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="ppnLV;1Tsqn/?uog!Ylv" x="-1059" y="-724"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="7xyT$z:RL#R!GabvBPP?"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="RuOG$ddBja/Ft(eX{QNs"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="`j)8{Ge,WcTs/uF7+Qau"><value name="btn"><shadow type="pins_button" id="Hq)iU_6$J;gEK$qSaZMX"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="display_show_image" id="l0EA|Ta;ti)p98:K#Vw0"><value name="data"><shadow type="pins_builtinimg" id="EPb@Iq{/==l+)F,8,*Yq"><field name="PIN">onboard_matrix.HEART</field></shadow></value></block></statement><next><block type="controls_if" id="UZ]48(zIZg`-h8MKkL}+"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="-wKAwe:|KhcrsrFWptuN"><value name="btn"><shadow type="pins_button" id="gOv*Hx6RyPIYBlDgoume"><field name="PIN">B2key</field></shadow></value></block></value><statement name="DO0"><block type="display_clear" id="6K+]W5;vL0or6r$:a}/("></block></statement></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1peGdvX2NjCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CgoKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX2NjLkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXguSEVBUlQpCiAgICBpZiBtaXhnb19jYy5CMmtleS53YXNfcHJlc3NlZCgpOgogICAgICAgIG9uYm9hcmRfbWF0cml4LmZpbGwoMCkKICAgICAgICBvbmJvYXJkX21hdHJpeC5zaG93KCkK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="pus+)B;~v3rwsO[1k]Km" x="-1437" y="-624"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="@+S[];!BWn:E2]B7:l5H"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="^.JG1I^zrAI/JS=uhj:#"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="||LtiK)Kq_ApCdtOgd,-"><value name="btn"><shadow type="pins_button" id="U(vGD,lvMV?ZT8iNsTh$"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="do_while" id="ez]04Sm^dv3R!50`?A!8"><field name="type">true</field><statement name="input_data"><block type="display_show_image" id="~K9c(XXU!qB`.MMppZ|H"><value name="data"><shadow type="pins_builtinimg" id="k`1Yn=Yze/18_pFSOs@1"><field name="PIN">onboard_matrix.HEART</field></shadow></value></block></statement><value name="select_data"><block type="sensor_mixgo_button_was_pressed" id="HyV2PY3RHpHWIBW87Uyp"><value name="btn"><shadow type="pins_button" id="Nfzwd:-?LX?!9AT{TJ_8"><field name="PIN">B1key</field></shadow></value></block></value><next><block type="display_clear" id=",H25+^ON:/:/-v|T9{(,"></block></next></block></statement></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1peGdvX2NjCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CgoKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX2NjLkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXguSEVBUlQpCiAgICAgICAgICAgIGlmIChtaXhnb19jYy5CMWtleS53YXNfcHJlc3NlZCgpKToKICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgb25ib2FyZF9tYXRyaXguZmlsbCgwKQogICAgICAgIG9uYm9hcmRfbWF0cml4LnNob3coKQo=</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="variables_set" id="D5Hq7e4m2J!pdqao!L~9" x="-1054" y="-758"><field name="VAR">显示</field><value name="VALUE"><block type="logic_boolean" id="Zh`b6MIMaxVlEJ40-!EY"><field name="BOOL">FALSE</field></block></value><next><block type="controls_whileUntil" id="h:v?zh,Z`3wWO{0FW:-e"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="L6Ejt5!VC69M_hbA:j-s"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="^Sz`CJ^6fInslNWr(qeI"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="xfyyYWw,pNvCDX*TP2Ym"><value name="btn"><shadow type="pins_button" id="_DY]^,kOJpHHhd6Yd;LU"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="variables_set" id="lp.wB$I2:;eBNUlG|6/w"><field name="VAR">显示</field><value name="VALUE"><block type="logic_negate" id=".0`T[,@CARy2K?]G/?N;"><value name="BOOL"><block type="variables_get" id="7emej_Sa=zPT?Z3K##-M"><field name="VAR">显示</field></block></value></block></value></block></statement><next><block type="controls_if" id="0m6I?4}(XtZIf3s0;O-h"><mutation else="1"></mutation><value name="IF0"><block type="variables_get" id="Mmds*z^JDV8o$h/3M;=h"><field name="VAR">显示</field></block></value><statement name="DO0"><block type="display_show_image" id="5PewTZZc|Liu2|Ni!OKV"><value name="data"><shadow type="pins_builtinimg" id="n.P4PGbWIb_mmk[XlWnK"><field name="PIN">onboard_matrix.HEART</field></shadow></value></block></statement><statement name="ELSE"><block type="display_clear" id="oj+i`U-h]_y(/ZnV1Dzg"></block></statement></block></next></block></statement></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1peGdvX2NjCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CgoKX0U2Xzk4X0JFX0U3X0E0X0JBID0gRmFsc2UKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX2NjLkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgX0U2Xzk4X0JFX0U3X0E0X0JBID0gbm90IF9FNl85OF9CRV9FN19BNF9CQQogICAgaWYgX0U2Xzk4X0JFX0U3X0E0X0JBOgogICAgICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LkhFQVJUKQogICAgZWxzZToKICAgICAgICBvbmJvYXJkX21hdHJpeC5maWxsKDApCiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvdygpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="i=J}Wu{YfW@W6VH$Y?!X" x="-1444" y="-789"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="{WxlIfCx@d:`BEDFN6J]"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="system_print" id="[J~^6K0-|jO~S4pH!F~9"><value name="VAR"><shadow type="text" id="z:ct5J2)VYra/+]N~*r1"><field name="TEXT">Mixly</field></shadow><block type="sensor_sound" id="O_mztL$cGGA5Rt;~Rl5G"></block></value><next><block type="controls_delay_new" id="?}h]T?U#+Xc/:]o-)${1"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id=";Os]j[Yg@NW~/n;mAA+p"><field name="NUM">0.01</field></shadow></value></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9zb3VuZAppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICBwcmludChvbmJvYXJkX3NvdW5kLnJlYWQoKSkKICAgIHRpbWUuc2xlZXAoMC4wMSkK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="m62m_/5*iCEJ~]Cv(2K}" x="-1457" y="-799"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="Zl7($Ts`/O.ba1o)wU9C"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="system_print" id="KvD+!lSuAiW7;mAKGygJ"><value name="VAR"><shadow type="text" id="w~9du*w*#AIq.V2[!imT"><field name="TEXT">Mixly</field></shadow><block type="sensor_sound" id="xcUI.+A,!K-h#]WZT=52"></block></value><next><block type="controls_forEach" id="z-b8b@lu~FcG!YrTam/1"><value name="LIST"><shadow type="list_many_input" id="hp^4.}i2i4B0*[IZ]Pe]"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="LFGi/i[]:YPL6Oavy(FD"><value name="FROM"><shadow type="math_number" id="8`T-JpcJUYd5|+E/p4ks"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="!DjuX,*T^7XQ{P`hQ(mf"><field name="NUM">5</field></shadow><block type="text_to_number" id="XRxIq_y.S(+gZZB7~bWX"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="tfd6^BTmh:Ds7nTnmTT{"><field name="VAR">x</field></shadow><block type="math_map" id="cp7:+[RXZUV2H(+UcV$g"><value name="NUM"><shadow type="math_number" id="f`x4C4=Ef@Qx~(N{kX]:"><field name="NUM">50</field></shadow><block type="sensor_sound" id="0w/H:OB)X1)XjOJMtxq;"></block></value><value name="fromLow"><shadow type="math_number" id="f|_bOwxqBuN]hIV|k#D1"><field name="NUM">0</field></shadow></value><value name="fromHigh"><shadow type="math_number" id="d;rECHC6RSN{diPG`QPq"><field name="NUM">30000</field></shadow></value><value name="toLow"><shadow type="math_number" id="O}9r9yJyqfGTy.8JoQ8Y"><field name="NUM">0</field></shadow></value><value name="toHigh"><shadow type="math_number" id="xhBk,kS!o@Nvk_q}/ZV#"><field name="NUM">11</field></shadow></value></block></value></block></value><value name="STEP"><shadow type="math_number" id="[4)u=Xr.k$U_Z@Aesb{q"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id=")5{Pw)1JV;mtx|hfS3RE"><field name="VAR">y</field></shadow></value><statement name="DO"><block type="display_bright_point" id="ms2)kFs]yGJIF#{F=InM"><value name="x"><shadow type="pins_exlcdh" id="746iBE[hsmO9^)zxUuF."><field name="PIN">31</field></shadow></value><value name="y"><shadow type="pins_exlcdv" id="hcN|Kn4qw3DrZT:~Jc5!"><field name="PIN">0</field></shadow><block type="math_arithmetic" id="GD6T9}moRtJ2JLBk/c??"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="_R95n`78ZAYsXOpGi|WI"><field name="NUM">11</field></shadow></value><value name="B"><shadow type="math_number" id="KT[Uyt)+]Xp^,`QJq^}6"><field name="NUM">1</field></shadow><block type="variables_get" id="2lF7Xq:G!)L;{JQ89aLT"><field name="VAR">y</field></block></value></block></value><value name="STAT"><shadow type="display_onoff" id="=?#gxq{|tdccyB;UuM8x"><field name="ONOFF">ON</field></shadow></value></block></statement><next><block type="display_shift" id="X@tWj*Hn#W3kn,lHtqIa"><field name="OP">shift_left</field><value name="val"><shadow type="math_number" id="nmRt`vV1vUXO*Z{._^v?"><field name="NUM">1</field></shadow></value><next><block type="controls_delay_new" id="3tAMl!OCU@=2M/kmcdSX"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="0b9^5~#7_[Py_#Sn30kA"><field name="NUM">0.05</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9zb3VuZApmcm9tIG1peHB5IGltcG9ydCBtYXRoX21hcApmcm9tIG1peGdvX2NjIGltcG9ydCBvbmJvYXJkX21hdHJpeAppbXBvcnQgdGltZQoKCndoaWxlIFRydWU6CiAgICBwcmludChvbmJvYXJkX3NvdW5kLnJlYWQoKSkKICAgIGZvciB5IGluIHJhbmdlKDAsIGludCgobWF0aF9tYXAob25ib2FyZF9zb3VuZC5yZWFkKCksIDAsIDMwMDAwLCAwLCAxMSkpKSwgMSk6CiAgICAgICAgb25ib2FyZF9tYXRyaXgucGl4ZWwoaW50KDMxKSwgaW50KDExIC0geSksIDEpCiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvdygpCiAgICBvbmJvYXJkX21hdHJpeC5zaGlmdF9sZWZ0KDEpCiAgICB0aW1lLnNsZWVwKDAuMDUpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="gC{.RJ0YB+2@-`Y79,J9" x="-1433" y="-745"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="Z0qU]:T:6(!KNSOGe:c:"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="system_print" id="_38I3coV6oFh#N6,TNTx"><value name="VAR"><shadow type="text" id="ZnY0/#1m{M/OuKEZ/mS_"><field name="TEXT">Mixly</field></shadow><block type="sensor_LTR308" id="@h{,u[Ho:U-p}^vi-E-S"></block></value><next><block type="display_show_image_or_string_delay" id="nFPidh;5HH1.hLnD`U#i"><field name="center">False</field><value name="data"><shadow type="text" id=";ljvN!eWQ_H1Ay75[3+i"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="CA^i,B.;hGUR@Z{5-Q!="><value name="VAR"><shadow type="variables_get" id="Wc!80GU^YY6au#n.)`V0"><field name="VAR">x</field></shadow><block type="text_to_number" id="gCehjvwwR93}2bXn6+wz"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="t)x,XEhP7Oyu5Vhr]`*z"><field name="VAR">x</field></shadow><block type="sensor_LTR308" id="h*dj3]e5x9-Kc$g.k0J}"></block></value></block></value></block></value><value name="space"><shadow type="math_number" id="Qx,C{++2bK]pU|5/_7}d"><field name="NUM">0</field></shadow></value><next><block type="controls_delay_new" id="dwJmWe`!3w,g=bPQcvb6"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="R*L0V)S8]N6mP1zvzz(D"><field name="NUM">0.1</field></shadow></value></block></next></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9hbHMKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAgcHJpbnQob25ib2FyZF9hbHMuYWxzX3ZpcygpKQogICAgb25ib2FyZF9tYXRyaXguc2hvd3Moc3RyKGludChvbmJvYXJkX2Fscy5hbHNfdmlzKCkpKSxzcGFjZSA9IDAsY2VudGVyID0gRmFsc2UpCiAgICB0aW1lLnNsZWVwKDAuMSkK</code>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="variables_set" id="8t$_^8OjUv^d*YZ9E(JG" x="-1439" y="-816"><field name="VAR">接近距离</field><value name="VALUE"><block type="math_number" id="=t$?gd6/MA,xrA.Y+~vc"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="9Njji^zv$.xSTW^jk]8m"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="P!FHTQv]bIivJ.mJR1L`"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="Ox4,W!Ry0;/cD$hX]i7g"><field name="VAR">接近距离</field><value name="VALUE"><block type="text_to_number" id="^Ob`@Rbj[:(z^#vz(]oU"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="]J(L4Lc-;tH][73Fit$="><field name="VAR">x</field></shadow><block type="sensor_mixgo_pin_near_single" id="w=,_QtbA$gy{Hz=Nm:6D"></block></value></block></value><next><block type="system_print" id="1]:lC1;ipN`LJUII99Me"><value name="VAR"><shadow type="text" id="z`Rh_~:)5uf^!c9Y_J;D"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="7G;1X.^YmLQSE`RW-X8k"><field name="VAR">接近距离</field></block></value><next><block type="display_scroll_string" id="iX,4W]Ab!+a_v4YHs~g0"><value name="data"><shadow type="text" id="M=-v=+S]Nu1Oi,+ZWH)j"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="6GGY]o#=nMYh#Mc.S5t_"><value name="VAR"><shadow type="variables_get" id="Ju{^ro7k,*:)o}H#TJR4"><field name="VAR">x</field></shadow><block type="variables_get" id="VOhbN9FN6)z/Vu2^s*n0"><field name="VAR">接近距离</field></block></value></block></value></block></next></block></next></block></statement></block></next></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9hbHMKaW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKCgpfRTZfOEVfQTVfRThfQkZfOTFfRThfQjdfOURfRTdfQTZfQkIgPSAwCndoaWxlIFRydWU6CiAgICBfRTZfOEVfQTVfRThfQkZfOTFfRThfQjdfOURfRTdfQTZfQkIgPSBpbnQob25ib2FyZF9hbHMucHNfbmwoKSkKICAgIHByaW50KF9FNl84RV9BNV9FOF9CRl85MV9FOF9CN185RF9FN19BNl9CQikKICAgIG9uYm9hcmRfbWF0cml4LnNjcm9sbChzdHIoX0U2XzhFX0E1X0U4X0JGXzkxX0U4X0I3XzlEX0U3X0E2X0JCKSkK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="variables_set" id="?oIzj=|sd,0SQ/fTktS:" x="-1439" y="-831"><field name="VAR">接近距离</field><value name="VALUE"><block type="math_number" id="C~9jgAW|{]2jbri7{c0/"><field name="NUM">0</field></block></value><next><block type="variables_set" id="Q.n@kSsqnc3,q4AkjWgL"><field name="VAR">是否报警</field><value name="VALUE"><block type="logic_boolean" id=":lch1{)yw(Wo[~^8-Y]g"><field name="BOOL">FALSE</field></block></value><next><block type="controls_whileUntil" id="2hL^NaZsaNBy^,KxxR9f"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="ALBRea6L2k{@D)9W4O0="><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="0vnOH8eIFjzXd:#lY2l`"><field name="VAR">接近距离</field><value name="VALUE"><block type="text_to_number" id="+ez)GXSj0WIZDwyN_w^y"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="gZc8^rem@eT}NtQ+ztpR"><field name="VAR">x</field></shadow><block type="sensor_mixgo_pin_near_single" id="DZG_enmga,TdE2(fYe)?"></block></value></block></value><next><block type="system_print" id="?G5U)SG_H+*TM^R}wrh4"><value name="VAR"><shadow type="text" id="nqHIHr,Q)@(I7VsmbkE?"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="+z4@YawBJ[A+IqZSl.Ab"><field name="VAR">接近距离</field></block></value><next><block type="display_show_image_or_string_delay" id="hSiH_0Eq;Q$ht13].Cgv"><field name="center">True</field><value name="data"><shadow type="text" id="_01FUd+`2j-qJ:83rce["><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="mh7u6+V1rv/=ZZF:HTN{"><field name="VAR">接近距离</field></block></value><value name="space"><shadow type="math_number" id="^:t}CmXu^V;Oi*42T}/j"><field name="NUM">0</field></shadow></value><next><block type="variables_set" id="igEmEgb}VW93oiA}E.pU"><field name="VAR">是否报警</field><value name="VALUE"><block type="logic_compare" id=":*|zfA?4;tcZ}#);F=02"><field name="OP">GT</field><value name="A"><block type="variables_get" id="QfhD1/~V9#O(k$dvuqtY"><field name="VAR">接近距离</field></block></value><value name="B"><block type="math_number" id="!ui0V=!/qfrQbThe6?jd"><field name="NUM">1000</field></block></value></block></value><next><block type="controls_if" id="1[j[d!pa1bZdVo|mpr5="><value name="IF0"><block type="variables_get" id="y7$22sMF9w]pGl}n)gsC"><field name="VAR">是否报警</field></block></value><statement name="DO0"><block type="esp32_onboard_music_play_list" id="x[6zrGZ`lNPIV.Pn6xA;"><value name="LIST"><shadow type="pins_playlist" id="{_Nc(+wjkj)75xwiZ2gf"><field name="PIN">onboard_music.DADADADUM</field></shadow></value></block></statement></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9hbHMKaW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tdXNpYwoKCl9FNl84RV9BNV9FOF9CRl85MV9FOF9CN185RF9FN19BNl9CQiA9IDAKX0U2Xzk4X0FGX0U1XzkwX0E2X0U2XzhBX0E1X0U4X0FEX0E2ID0gRmFsc2UKd2hpbGUgVHJ1ZToKICAgIF9FNl84RV9BNV9FOF9CRl85MV9FOF9CN185RF9FN19BNl9CQiA9IGludChvbmJvYXJkX2Fscy5wc19ubCgpKQogICAgcHJpbnQoX0U2XzhFX0E1X0U4X0JGXzkxX0U4X0I3XzlEX0U3X0E2X0JCKQogICAgb25ib2FyZF9tYXRyaXguc2hvd3MoX0U2XzhFX0E1X0U4X0JGXzkxX0U4X0I3XzlEX0U3X0E2X0JCLHNwYWNlID0gMCxjZW50ZXIgPSBUcnVlKQogICAgX0U2Xzk4X0FGX0U1XzkwX0E2X0U2XzhBX0E1X0U4X0FEX0E2ID0gX0U2XzhFX0E1X0U4X0JGXzkxX0U4X0I3XzlEX0U3X0E2X0JCID4gMTAwMAogICAgaWYgX0U2Xzk4X0FGX0U1XzkwX0E2X0U2XzhBX0E1X0U4X0FEX0E2OgogICAgICAgIG9uYm9hcmRfbXVzaWMucGxheShvbmJvYXJkX211c2ljLkRBREFEQURVTSkK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="iA[{R`6+YOLpnc6j*t1l" x="-1405" y="-729"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="WVB:[)h|h1!W/:}4UGXY"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="system_print" id="{C(FGQKh+8k)wrmT}bnN"><value name="VAR"><shadow type="text" id="[;~^0EZ1Q3b(N=Wk@n{_"><field name="TEXT">Mixly</field></shadow><block type="sensor_get_acceleration" id="^UdM}Hx4]oLyC$:y6N}#"><field name="key"></field></block></value><next><block type="controls_delay_new" id="Q[A8Eh)b+E1CPpqj:TL^"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="3A6U_7wbbkHytbrq.u|_"><field name="NUM">1</field></shadow></value></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9hY2MKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAgcHJpbnQob25ib2FyZF9hY2MuYWNjZWxlcmF0aW9uKCkpCiAgICB0aW1lLnNsZWVwKDEpCg==</code>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="Cry1n-:/)_31BMsByiq." x="-1632" y="-819"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="Wc_^t`*8$Tz04N|NZ?tl"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image_or_string_delay" id="o.8Om$^]pbLaySx:q#mI"><field name="center">True</field><value name="data"><shadow type="text" id="1WvlkOy;zkFck]RCN;6*"><field name="TEXT">Mixly</field></shadow><block type="text_join" id="UCr5YfP`_^^Zmwfu:;|0"><value name="A"><shadow type="text" id="Cy,?~ny?+l.Drc([yI!W"><field name="TEXT">T:</field></shadow></value><value name="B"><shadow type="text" id="2K@cvEZt=pUdqXD0U{]i"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="?iocT.R,*`L,#HZBtlQ["><value name="VAR"><shadow type="variables_get" id="]LR=sedg8+M89kg3~F{0"><field name="VAR">x</field></shadow><block type="text_to_number" id="r-eOl~MxSA$3eFuP3GnX"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="Jm~P4y29MVh[/`Fte{0}"><field name="VAR">x</field></shadow><block type="sensor_aht11" id="5^;_=bn100lo4,P??j!4"><field name="key">temperature</field></block></value></block></value></block></value></block></value><value name="space"><shadow type="math_number" id="G^q@=p#+=-BH3{M#.CUB"><field name="NUM">0</field></shadow></value><next><block type="controls_delay_new" id="kp=NncVBK6~{yH14wFHJ"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="98Y]H^ooWVwvIBVoDLqc"><field name="NUM">1</field></shadow></value><next><block type="display_show_image_or_string_delay" id="EbDT8M-{yaB.mwP#OTtM"><field name="center">True</field><value name="data"><shadow type="text" id="1WvlkOy;zkFck]RCN;6*"><field name="TEXT">Mixly</field></shadow><block type="text_join" id="!0Q(MKnB(Xd.V(zlW`lP"><value name="A"><shadow type="text" id="mw*5(qMV@f~bQlvtj-Un"><field name="TEXT">H:</field></shadow></value><value name="B"><shadow type="text" id="2K@cvEZt=pUdqXD0U{]i"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="a8gLz]4MM7uaSJ,DlNsZ"><value name="VAR"><shadow type="variables_get" id="]LR=sedg8+M89kg3~F{0"><field name="VAR">x</field></shadow><block type="text_to_number" id="i-H]f-xt[7.67b*lYhI@"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="Jm~P4y29MVh[/`Fte{0}"><field name="VAR">x</field></shadow><block type="sensor_aht11" id="KneS)m##d~JwAq/@Xiov"><field name="key">humidity</field></block></value></block></value></block></value></block></value><value name="space"><shadow type="math_number" id="H1ccD?BM^+$z!x4YTni9"><field name="NUM">0</field></shadow></value><next><block type="controls_delay_new" id="9}Y=DsC|oN_oyGxG]_B8"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="cNU$+8ZwTe$w7:{K/AKU"><field name="NUM">1</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF90aHMKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF9tYXRyaXguc2hvd3MoJ1Q6JyArIHN0cihpbnQob25ib2FyZF90aHMudGVtcGVyYXR1cmUoKSkpLHNwYWNlID0gMCxjZW50ZXIgPSBUcnVlKQogICAgdGltZS5zbGVlcCgxKQogICAgb25ib2FyZF9tYXRyaXguc2hvd3MoJ0g6JyArIHN0cihpbnQob25ib2FyZF90aHMuaHVtaWRpdHkoKSkpLHNwYWNlID0gMCxjZW50ZXIgPSBUcnVlKQogICAgdGltZS5zbGVlcCgxKQo=</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="Cry1n-:/)_31BMsByiq." x="-1833" y="-789"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="Wc_^t`*8$Tz04N|NZ?tl"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_scroll_string" id="eY^com_CZyvgW,h|eii("><value name="data"><shadow type="text" id="AuWpf7)UhBi-YX]{^_94"><field name="TEXT">Mixly</field></shadow><block type="text_join" id="UCr5YfP`_^^Zmwfu:;|0"><value name="A"><shadow type="text" id="Cy,?~ny?+l.Drc([yI!W"><field name="TEXT">大气压:</field></shadow></value><value name="B"><shadow type="text" id="2K@cvEZt=pUdqXD0U{]i"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="?iocT.R,*`L,#HZBtlQ["><value name="VAR"><shadow type="variables_get" id="]LR=sedg8+M89kg3~F{0"><field name="VAR">x</field></shadow><block type="text_to_number" id="r-eOl~MxSA$3eFuP3GnX"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="Jm~P4y29MVh[/`Fte{0}"><field name="VAR">x</field></shadow><block type="sensor_hp203" id="d`d$@|5O2d[lxLH(`PBc"><field name="key">pressure()</field></block></value></block></value></block></value></block></value><next><block type="display_scroll_string" id="+SZ{dq^t6i]3R!g;o9[s"><value name="data"><shadow type="text" id="AuWpf7)UhBi-YX]{^_94"><field name="TEXT">Mixly</field></shadow><block type="text_join" id="TQKIi/53{IMcU^GI,5J$"><value name="A"><shadow type="text" id="}P2N+yRdOy1$N$Mi-YHb"><field name="TEXT">海拔:</field></shadow></value><value name="B"><shadow type="text" id="2K@cvEZt=pUdqXD0U{]i"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="JbLy6g;^ZRPcJw/xG,Xs"><value name="VAR"><shadow type="variables_get" id="]LR=sedg8+M89kg3~F{0"><field name="VAR">x</field></shadow><block type="text_to_number" id="8m(H3b:SeXHyl~E3L(`k"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="Jm~P4y29MVh[/`Fte{0}"><field name="VAR">x</field></shadow><block type="sensor_hp203" id="rX4P=+Zpw8;)l+Z~CdM{"><field name="key">altitude()</field></block></value></block></value></block></value></block></value><next><block type="display_scroll_string" id="{)(!WK1Lr4-;j5Yh]Bk!"><value name="data"><shadow type="text" id="AuWpf7)UhBi-YX]{^_94"><field name="TEXT">Mixly</field></shadow><block type="text_join" id="`luS]:dy{nl`[u3}(gzg"><value name="A"><shadow type="text" id="+yd=W{1++TQ_$!4MYjC`"><field name="TEXT">温度:</field></shadow></value><value name="B"><shadow type="text" id="2K@cvEZt=pUdqXD0U{]i"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="r_Sz)X0M{I[otV)}d@Nn"><value name="VAR"><shadow type="variables_get" id="]LR=sedg8+M89kg3~F{0"><field name="VAR">x</field></shadow><block type="text_to_number" id=",q}OTT6Ie^IaEHoX!IW}"><field name="TOWHAT">int</field><value name="VAR"><shadow type="variables_get" id="Jm~P4y29MVh[/`Fte{0}"><field name="VAR">x</field></shadow><block type="sensor_hp203" id="nIV(-l.(B]?zM#I?}Q=D"><field name="key">temperature()</field></block></value></block></value></block></value></block></value></block></next></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9icHMKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF9tYXRyaXguc2Nyb2xsKCflpKfmsJTljos6JyArIHN0cihpbnQob25ib2FyZF9icHMucHJlc3N1cmUoKSkpKQogICAgb25ib2FyZF9tYXRyaXguc2Nyb2xsKCfmtbfmi5Q6JyArIHN0cihpbnQob25ib2FyZF9icHMuYWx0aXR1ZGUoKSkpKQogICAgb25ib2FyZF9tYXRyaXguc2Nyb2xsKCfmuKnluqY6JyArIHN0cihpbnQob25ib2FyZF9icHMudGVtcGVyYXR1cmUoKSkpKQo=</code>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="display_bright_point" id="*|2smm*9cQ$P.h0X,,]X" x="-675" y="-358"><value name="x"><shadow type="pins_exlcdh" id="{B7EK7hoP;*X!kuX!L=W"><field name="PIN">16</field></shadow></value><value name="y"><shadow type="pins_exlcdv" id="Qu[(^kBbHb]m[`sZqd4H"><field name="PIN">6</field></shadow></value><value name="STAT"><shadow type="display_onoff" id="7;N2`loH+y54:iF~qwAk"><field name="ONOFF">ON</field></shadow></value><next><block type="controls_whileUntil" id="$qZShSnvv#9:FB{;(I=2"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="$^7qr.^#xQ[1+HRR|OLX"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="2,t]oB`[K{A,KzoFREr8"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="yf_n){j3C6!2#:a!kkyn"><value name="btn"><shadow type="pins_button" id="5uJSJ{6,[0S^9Ag5Vpim"><field name="PIN">A1key</field></shadow></value></block></value><statement name="DO0"><block type="display_shift" id=":IU*a{hG#pP.cN$6lui3"><field name="OP">shift_down</field><value name="val"><shadow type="math_number" id="iSnv{*y6sk+z+r6vp1(_"><field name="NUM">1</field></shadow></value></block></statement><next><block type="controls_if" id="jy#wHC)B5rB2L[jpA!I:"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="+SAWMSN^Rg(0:7s6O#aH"><value name="btn"><shadow type="pins_button" id="SDQC#g*r*T7[kyJJ_i*C"><field name="PIN">A2key</field></shadow></value></block></value><statement name="DO0"><block type="display_shift" id="5V`8=Z[TfFBQJM.T)6s1"><field name="OP">shift_left</field><value name="val"><shadow type="math_number" id="EQWzGeQz:w~@S$EW0}X|"><field name="NUM">1</field></shadow></value></block></statement><next><block type="controls_if" id="xHGvO3K=wB/a=?K1;oow"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="c?~uhTecQRT7LUM1$s8g"><value name="btn"><shadow type="pins_button" id="J~)*sAM|JCTTq!ioDhB-"><field name="PIN">A3key</field></shadow></value></block></value><statement name="DO0"><block type="display_shift" id="xF.+(pR,,L(Yi3}Cj4Yi"><field name="OP">shift_up</field><value name="val"><shadow type="math_number" id="ry;)eH,67EAn,qJWVf5V"><field name="NUM">1</field></shadow></value></block></statement><next><block type="controls_if" id="bT1$]9*NDr#({k!49mxk"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="/}`!yG-OCNnE=nFF@@a/"><value name="btn"><shadow type="pins_button" id="~.Q.Z~^?q+tjcx9YPrsw"><field name="PIN">A4key</field></shadow></value></block></value><statement name="DO0"><block type="display_shift" id="e_Pk=2dx_|pZb#=-Hm92"><field name="OP">shift_right</field><value name="val"><shadow type="math_number" id="R(Q^ezGQZUP^k_mJU|L_"><field name="NUM">1</field></shadow></value></block></statement></block></next></block></next></block></next></block></statement></block></next></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKaW1wb3J0IG1peGdvX2NjCgoKb25ib2FyZF9tYXRyaXgucGl4ZWwoaW50KDE2KSwgaW50KDYpLCAxKQpvbmJvYXJkX21hdHJpeC5zaG93KCkKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX2NjLkExa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hpZnRfZG93bigxKQogICAgaWYgbWl4Z29fY2MuQTJrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICBvbmJvYXJkX21hdHJpeC5zaGlmdF9sZWZ0KDEpCiAgICBpZiBtaXhnb19jYy5BM2tleS53YXNfcHJlc3NlZCgpOgogICAgICAgIG9uYm9hcmRfbWF0cml4LnNoaWZ0X3VwKDEpCiAgICBpZiBtaXhnb19jYy5BNGtleS53YXNfcHJlc3NlZCgpOgogICAgICAgIG9uYm9hcmRfbWF0cml4LnNoaWZ0X3JpZ2h0KDEpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="onboard_RTC_set_datetime" id="f9s[S#NssXs)TC:,e(TA" inline="true" x="-1886" y="-925"><value name="year"><shadow type="math_number" id="q^]bCJ^@hlrV3H=}1|(S"><field name="NUM">2024</field></shadow></value><value name="month"><shadow type="math_number" id="0vmhjt]vph`+a(Uz?hto"><field name="NUM">4</field></shadow></value><value name="day"><shadow type="math_number" id="I8E9H5_e4YmJObs0?(~o"><field name="NUM">2</field></shadow></value><value name="hour"><shadow type="math_number" id="lxgNbL0]*n?N*fP+8wR~"><field name="NUM">21</field></shadow></value><value name="minute"><shadow type="math_number" id="ZK4d$$@TEFoVnjB.3/y]"><field name="NUM">4</field></shadow></value><value name="second"><shadow type="math_number" id="MK$LZ^BCST)wlx[VY7x-"><field name="NUM">45</field></shadow></value><next><block type="controls_whileUntil" id="|~WtI`|@azL`)X,U_mo`"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="z|46b]bN=Rs9^VybX]52"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="system_print" id="dtDz|$8)`jh_{7m;CiV,"><value name="VAR"><shadow type="text" id="dlT9;Re7~yg)Qyw9vOi-"><field name="TEXT">Mixly</field></shadow><block type="onboard_RTC_get_time" id="CP@cb`gS84n!Y}.QCr,4"></block></value><next><block type="controls_delay_new" id="[RDZ@~v4`3|Kg3bl0tsL"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="S)[[;{N0+]_jH2J2yFJk"><field name="NUM">1</field></shadow></value></block></next></block></statement></block></next></block></xml><config>{}</config><code>aW1wb3J0IG50cHRpbWUKaW1wb3J0IG1hY2hpbmUKaW1wb3J0IHRpbWUKCgpudHB0aW1lLnNldHRpbWUoKDIwMjQsNCwyLDIxLDA0LDQ1LDAsMCkpCndoaWxlIFRydWU6CiAgICBwcmludCh0aW1lLmxvY2FsdGltZSgpKQogICAgdGltZS5zbGVlcCgxKQo=</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="onboard_RTC_set_datetime" id="#XW-APUz$VcC4k1Dd-X2" inline="true" x="-2187" y="-818"><value name="year"><shadow type="math_number" id="bLT,INjKUyE!R26DsJW~"><field name="NUM">2024</field></shadow></value><value name="month"><shadow type="math_number" id=";ehfs6J*c+X4hR,a!T6c"><field name="NUM">4</field></shadow></value><value name="day"><shadow type="math_number" id="?!ZfZ|P.!|O3s^0UV3=]"><field name="NUM">2</field></shadow></value><value name="hour"><shadow type="math_number" id=")UoUAO+GAfOy/_)Bt86{"><field name="NUM">21</field></shadow></value><value name="minute"><shadow type="math_number" id="c|r`PFK#p)@/-;sF:VnK"><field name="NUM">4</field></shadow></value><value name="second"><shadow type="math_number" id="BrCgxWCNhZ8,tP6yYndh"><field name="NUM">45</field></shadow></value><next><block type="controls_whileUntil" id=",o1;7*2L_uLEp-B(kL!D"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="fah~Y*e].F)3{2-4mvBt"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="d(x;c6v{a8O]!Y6t#yU9"><field name="VAR">mytup</field><value name="VALUE"><block type="onboard_RTC_get_time" id="vfKqDS5(}8m9Y1Uk?2_O"></block></value><next><block type="display_scroll_string" id="ke2R*8LG]|+.OEzBr-9Y"><value name="data"><shadow type="text" id="9s66BJO!ZEpYN`QjW_@p"><field name="TEXT">Mixly</field></shadow><block type="text_format_noreturn" id="~]oWp9Obo82zPIb4))mx" inline="false"><mutation items="3"></mutation><value name="VAR"><shadow type="text" id="Am}vPhfhvi(E7Z}g:*gM"><field name="TEXT">{}:{}:{}</field></shadow></value><value name="ADD0"><block type="number_to_text" id="s:O3u)}Q{-k6FBOgPF3`"><value name="VAR"><shadow type="variables_get" id="DoVfu=)M{(?u~cH+.D9|"><field name="VAR">x</field></shadow><block type="tuple_getIndex" id="])j3Y@l4js6IIyB77Y?m"><value name="TUP"><shadow type="variables_get" id="1kFDBg2X/}Y$`L(l#Cmf"><field name="VAR">mytup</field></shadow></value><value name="AT"><shadow type="math_number" id="jooQ#oh#2F7LF@d?)t$|"><field name="NUM">3</field></shadow></value></block></value></block></value><value name="ADD1"><block type="number_to_text" id="Q`KC~p8f0m*rjBUwwNk3"><value name="VAR"><shadow type="variables_get" id="vinCgZ_-(=aZ{*fv!7X]"><field name="VAR">x</field></shadow><block type="tuple_getIndex" id="+nN@IUg6fzZM4}.$t-B5"><value name="TUP"><shadow type="variables_get" id="n@tx|cxVE2N{-O]2dwz2"><field name="VAR">mytup</field></shadow></value><value name="AT"><shadow type="math_number" id="z2SYhu@,]dJX/ONpVjN("><field name="NUM">4</field></shadow></value></block></value></block></value><value name="ADD2"><block type="number_to_text" id="2(nk{0wk;k3w2k9Qxx9|"><value name="VAR"><shadow type="variables_get" id="wPaeL{.yyB2Z|Pu;WOGa"><field name="VAR">x</field></shadow><block type="tuple_getIndex" id="yD=ib^hh~$W?#fZaG:tJ"><value name="TUP"><shadow type="variables_get" id="gp:n+]rz24@`).##apDt"><field name="VAR">mytup</field></shadow></value><value name="AT"><shadow type="math_number" id="Yj;r[yRt.t5k[Hf5c752"><field name="NUM">5</field></shadow></value></block></value></block></value></block></value><next><block type="controls_delay_new" id="l1}$dy?1nSaZQf*.X/I="><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="hR/iK?fC@{Fv4:=bdy9]"><field name="NUM">0.5</field></shadow></value></block></next></block></next></block></statement></block></next></block></xml><config>{}</config><code>aW1wb3J0IG50cHRpbWUKaW1wb3J0IHRpbWUKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKCgpudHB0aW1lLnNldHRpbWUoKDIwMjQsNCwyLDIxLDA0LDQ1LDAsMCkpCndoaWxlIFRydWU6CiAgICBteXR1cCA9IHRpbWUubG9jYWx0aW1lKCkKICAgIG9uYm9hcmRfbWF0cml4LnNjcm9sbCgne306e306e30nLmZvcm1hdChzdHIobXl0dXBbM10pLCBzdHIobXl0dXBbNF0pLCBzdHIobXl0dXBbNV0pKSkKICAgIHRpbWUuc2xlZXAoMC41KQo=</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="variables_set" id="SE1cY_ivZv$|WEg#Cc;_" x="-2099" y="-915"><field name="VAR">按下时刻</field><value name="VALUE"><block type="math_number" id="GG{cY6XG6AJ5;/+z.m1a"><field name="NUM">0</field></block></value><next><block type="variables_set" id="Y-@A:sRgtw#QB4u{$C7?"><field name="VAR">抬起时刻</field><value name="VALUE"><block type="math_number" id="B4A5L^eyv4-PTC[^R~]J"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="bo,yUp#9c0fcj`_Q57f5"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="wP[wEKLm#4zmwOQ05wsc"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="EM!n;S7,rfpiB]-8!q^3"><value name="IF0"><block type="sensor_mixgo_button_is_pressed" id="E^3p=YO-G7Uc$W9(26!O"><value name="btn"><shadow type="pins_button" id="b![ZD/7t3#@C3-:G`AS2"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="variables_set" id="}=hOIsT_+^Zy}C].|juq"><field name="VAR">按下时刻</field><value name="VALUE"><block type="controls_millis" id="WrM9R)af7r)-wZs*)n1$"><field name="Time">ms</field></block></value><next><block type="do_while" id="h#kQsO@e#Y=`WS=c12HG"><field name="type">true</field><value name="select_data"><block type="logic_negate" id="YBWCsNqu=@0t=/X`#R(}"><value name="BOOL"><block type="sensor_mixgo_button_is_pressed" id="NvtCF=Ee*AoLUgU2mHf#"><value name="btn"><shadow type="pins_button" id="(PZ*s4.lATQ|(D.v6.cl"><field name="PIN">B1key</field></shadow></value></block></value></block></value><next><block type="variables_set" id="p;9jJrSb8w)7K}Cb^RhN"><field name="VAR">抬起时刻</field><value name="VALUE"><block type="controls_millis" id="}R]A`dgFC{]^;)M6@9|o"><field name="Time">ms</field></block></value><next><block type="system_print" id="l^w^x;Qy5xiXe)58FF@*"><value name="VAR"><shadow type="text" id="gb{G`.{qYVv~90HtM}UM"><field name="TEXT">Mixly</field></shadow><block type="math_arithmetic" id="^z?GaM)}/`=Nm04*8X5S"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="z`Q7yIVpns2gJ2`j$Lnx"><field name="NUM">1</field></shadow><block type="variables_get" id="l;M,s,vMI-M2[Bnm!+!a"><field name="VAR">抬起时刻</field></block></value><value name="B"><shadow type="math_number" id="{{K+P_{:f#CY.mmcMg|L"><field name="NUM">1</field></shadow><block type="variables_get" id="_SAMyrbbHHxK}a.01Utx"><field name="VAR">按下时刻</field></block></value></block></value><next><block type="display_show_image_or_string_delay" id="rp};2FSrvI*UtlEN1B9("><field name="center">True</field><value name="data"><shadow type="text" id="io]#$x=.31^[eQRu`2@A"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="UEM9L]PbTuNetY@+0NB,"><value name="VAR"><shadow type="variables_get" id="Chg#}Y;=nVZo!~ypzD`,"><field name="VAR">x</field></shadow><block type="math_arithmetic" id="{se}IoVK@Qhi*U!$Pi^-"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="pwcq*L[Jbc?XZ8Q9IAr."><field name="NUM">1</field></shadow><block type="variables_get" id="YR*?p.OcGD6b-VyA}+`K"><field name="VAR">抬起时刻</field></block></value><value name="B"><shadow type="math_number" id="D*U.cEnpZj|hHIbp],xI"><field name="NUM">1</field></shadow><block type="variables_get" id="gNA)_^s;0V-uM/-nBQX1"><field name="VAR">按下时刻</field></block></value></block></value></block></value><value name="space"><shadow type="math_number" id="20QAB?,uwR{qe{ziw{cN"><field name="NUM">0</field></shadow></value></block></next></block></next></block></next></block></next></block></statement></block></statement></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1peGdvX2NjCmltcG9ydCB0aW1lCmltcG9ydCBtYWNoaW5lCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CgoKX0U2XzhDXzg5X0U0X0I4XzhCX0U2Xzk3X0I2X0U1Xzg4X0JCID0gMApfRTZfOEFfQUNfRThfQjVfQjdfRTZfOTdfQjZfRTVfODhfQkIgPSAwCndoaWxlIFRydWU6CiAgICBpZiBtaXhnb19jYy5CMWtleS5pc19wcmVzc2VkKCk6CiAgICAgICAgX0U2XzhDXzg5X0U0X0I4XzhCX0U2Xzk3X0I2X0U1Xzg4X0JCID0gdGltZS50aWNrc19tcygpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgaWYgKG5vdCBtaXhnb19jYy5CMWtleS5pc19wcmVzc2VkKCkpOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICBfRTZfOEFfQUNfRThfQjVfQjdfRTZfOTdfQjZfRTVfODhfQkIgPSB0aW1lLnRpY2tzX21zKCkKICAgICAgICBwcmludCgoX0U2XzhBX0FDX0U4X0I1X0I3X0U2Xzk3X0I2X0U1Xzg4X0JCIC0gX0U2XzhDXzg5X0U0X0I4XzhCX0U2Xzk3X0I2X0U1Xzg4X0JCKSkKICAgICAgICBvbmJvYXJkX21hdHJpeC5zaG93cyhzdHIoKF9FNl84QV9BQ19FOF9CNV9CN19FNl85N19CNl9FNV84OF9CQiAtIF9FNl84Q184OV9FNF9COF84Ql9FNl85N19CNl9FNV84OF9CQikpLHNwYWNlID0gMCxjZW50ZXIgPSBUcnVlKQo=</code>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id=",D^1W09[-fC$!-~boVp," x="-2754" y="-915"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="0$P?/87CHFYdCH.fJBlI"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="YNVKl]8fsi3[NRlIqe7r"><value name="data"><shadow type="pins_builtinimg" id="@CJ=IlqSvmJ#_bKcocx@"><field name="PIN">onboard_matrix.HEART</field></shadow></value><next><block type="controls_delay_new" id="jCd.ao]^gIQ{i}}39IMa"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="Z!|v|z90z`zS#cJHW,JL"><field name="NUM">0.5</field></shadow></value><next><block type="display_show_image" id="SByB~1cPI/k(C=KsEN?n"><value name="data"><shadow type="pins_builtinimg" id="xp4=9XywSfp}qBP=tlYG"><field name="PIN">onboard_matrix.HEART_SMALL</field></shadow></value><next><block type="controls_delay_new" id="p]d:JbXcQi8qqD/h2P8~"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="4=U2^n=Piq_0gLIL,8GM"><field name="NUM">0.5</field></shadow></value><next><block type="controls_if" id="[PH5aU19]34$|~a1GhYk"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="JFGXLd.CO/?5BRrtS1?J"><value name="btn"><shadow type="pins_button" id="4-Uq*dJq5G#mM{l,Z0IR"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="actuator_onboard_neopixel_rgb_all" id="Zn@`c84L1V1T~wE2.Q_|"><value name="RVALUE"><shadow type="math_number" id="!x)3pHb`Ma.q*^:P{-IC"><field name="NUM">10</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="G~Y_69EccvHjAzg6AA{G"><field name="NUM">10</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="[pg49YT#fx#9)#N)D8-}"><field name="NUM">10</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id="k^Viz=vD#xm[Q_CvO2D$"></block></next></block></statement><next><block type="controls_if" id="N/J.bpa/k9QL_Q=)7LNd"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="!P(*l[bjYvpBtC!NaB?C"><value name="btn"><shadow type="pins_button" id="~t+7JlCAKCi~ARDU_2h3"><field name="PIN">B2key</field></shadow></value></block></value><statement name="DO0"><block type="actuator_onboard_neopixel_rgb_all" id="c=/P#gP5hh/#Iv9C*kfN"><value name="RVALUE"><shadow type="math_number" id="m^1J0IUE;-PQCGL+692x"><field name="NUM">0</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="CFO955cqPfFfPjf?i(~b"><field name="NUM">0</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="B~dFo{o{=:o2NJh!Y(3T"><field name="NUM">0</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id="RF#dg*,pNA,qK?NzasXf"></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKaW1wb3J0IHRpbWUKaW1wb3J0IG1peGdvX2NjCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfcmdiCgoKd2hpbGUgVHJ1ZToKICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LkhFQVJUKQogICAgdGltZS5zbGVlcCgwLjUpCiAgICBvbmJvYXJkX21hdHJpeC5zaG93cyhvbmJvYXJkX21hdHJpeC5IRUFSVF9TTUFMTCkKICAgIHRpbWUuc2xlZXAoMC41KQogICAgaWYgbWl4Z29fY2MuQjFrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICBvbmJvYXJkX3JnYi5maWxsKCgxMCwgMTAsIDEwKSkKICAgICAgICBvbmJvYXJkX3JnYi53cml0ZSgpCiAgICBpZiBtaXhnb19jYy5CMmtleS53YXNfcHJlc3NlZCgpOgogICAgICAgIG9uYm9hcmRfcmdiLmZpbGwoKDAsIDAsIDApKQogICAgICAgIG9uYm9hcmRfcmdiLndyaXRlKCkK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><variables><variable id="kujED6C|3`}2*o!`dvF;">x</variable></variables><block type="sensor_mixgo_button_attachInterrupt" id="vidEC/9p?.F[Z-!9BNq=" x="-2776" y="-1011"><field name="mode">machine.Pin.IRQ_RISING</field><value name="btn"><shadow type="pins_button" id="?(Uw-0Zo`;D|DO2a,Gf8"><field name="PIN">B1key</field></shadow></value><value name="DO"><shadow type="factory_block_return" id="I4p$;qK6G{m{vKD#j@!n"><field name="VALUE">attachInterrupt_func</field></shadow></value><next><block type="sensor_mixgo_button_attachInterrupt" id="``/#xebz!(ViGcdO08I="><field name="mode">machine.Pin.IRQ_RISING</field><value name="btn"><shadow type="pins_button" id="P8JDEaJrlK^IgJ=!g3Dp"><field name="PIN">B2key</field></shadow></value><value name="DO"><shadow type="factory_block_return" id="[=4vQ7G33SxgF8G.En`}"><field name="VALUE">attachInterrupt_func2</field></shadow></value><next><block type="controls_whileUntil" id="fp,F~2@#6Q_jaq(3X{fZ"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="$CWUvF3[/_NM?B`[h2C="><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="hT.AmagR)(IY4l=[+szd"><value name="data"><shadow type="pins_builtinimg" id="H7hOypTwF{79Cp,QhSpO"><field name="PIN">onboard_matrix.HEART</field></shadow></value><next><block type="controls_delay_new" id="H,,BwsALRBsiw5;E5L/Q"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="ef?0+A))l-k!0`xj}vPy"><field name="NUM">0.5</field></shadow></value><next><block type="display_show_image" id="Ha?fWp?78GBr@E00Oyzn"><value name="data"><shadow type="pins_builtinimg" id="71d4?+ABLEr+8r^XT{-y"><field name="PIN">onboard_matrix.HEART_SMALL</field></shadow></value><next><block type="controls_delay_new" id="YX4E5/R.*D/3fmQi:#6n"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="j|QhrjDEdDQ3|x2,MoL?"><field name="NUM">0.5</field></shadow></value></block></next></block></next></block></next></block></statement></block></next></block></next></block><block type="procedures_defnoreturn" id="Pae|LH)})2}xtEk5]=tE" x="-2951" y="-653"><mutation><arg name="x" varid="kujED6C|3`}2*o!`dvF;"></arg></mutation><field name="NAME">attachInterrupt_func</field><statement name="STACK"><block type="actuator_onboard_neopixel_rgb_all" id="R8v(Gw#BG@HS-/CdQZdN"><value name="RVALUE"><shadow type="math_number" id="cK?dU:hsS1@Y[~!VRLlk"><field name="NUM">10</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="k`,dnqZEcs#o(Riwm_6O"><field name="NUM">10</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="L)zdf{X?h1jFc#m=}#PY"><field name="NUM">10</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id="9N=ahC.56EMsBpLQ,dwh"></block></next></block></statement></block><block type="procedures_defnoreturn" id="S}_S2L+i+;uq0Ss:.*`#" x="-2523" y="-626"><mutation><arg name="x" varid="kujED6C|3`}2*o!`dvF;"></arg></mutation><field name="NAME">attachInterrupt_func2</field><statement name="STACK"><block type="actuator_onboard_neopixel_rgb_all" id="Jsm11/_n+V7fMJI:]{G3"><value name="RVALUE"><shadow type="math_number" id="[lYU;cU4(C025@G^)VQW"><field name="NUM">0</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="C1rB4E[Sy]*{7ds7X2k6"><field name="NUM">0</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="UB/!LkD1K(+oolUyc+V."><field name="NUM">0</field></shadow></value><next><block type="actuator_onboard_neopixel_write" id="oe*cu}?;;xV6bS@RIeXA"></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKaW1wb3J0IG1peGdvX2NjCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CmltcG9ydCB0aW1lCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfcmdiCgpkZWYgYXR0YWNoSW50ZXJydXB0X2Z1bmMoeCk6CiAgICBvbmJvYXJkX3JnYi5maWxsKCgxMCwgMTAsIDEwKSkKICAgIG9uYm9hcmRfcmdiLndyaXRlKCkKCmRlZiBhdHRhY2hJbnRlcnJ1cHRfZnVuYzIoeCk6CiAgICBvbmJvYXJkX3JnYi5maWxsKCgwLCAwLCAwKSkKICAgIG9uYm9hcmRfcmdiLndyaXRlKCkKCgoKbWl4Z29fY2MuQjFrZXkuaXJxKGhhbmRsZXIgPSBhdHRhY2hJbnRlcnJ1cHRfZnVuYywgdHJpZ2dlciA9IG1hY2hpbmUuUGluLklSUV9SSVNJTkcpCm1peGdvX2NjLkIya2V5LmlycShoYW5kbGVyID0gYXR0YWNoSW50ZXJydXB0X2Z1bmMyLCB0cmlnZ2VyID0gbWFjaGluZS5QaW4uSVJRX1JJU0lORykKd2hpbGUgVHJ1ZToKICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LkhFQVJUKQogICAgdGltZS5zbGVlcCgwLjUpCiAgICBvbmJvYXJkX21hdHJpeC5zaG93cyhvbmJvYXJkX21hdHJpeC5IRUFSVF9TTUFMTCkKICAgIHRpbWUuc2xlZXAoMC41KQo=</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><variables><variable id="kujED6C|3`}2*o!`dvF;">x</variable></variables><block type="variables_set" id="2~P2ooGmV0PtT![?;J(g" x="-2776" y="-1041"><field name="VAR">是否亮灯</field><value name="VALUE"><block type="logic_boolean" id="L/=~0*Re[upoo^vy}JOM"><field name="BOOL">FALSE</field></block></value><next><block type="sensor_mixgo_button_attachInterrupt" id="Z=7t/M~}h:`1pC2-*8nr"><field name="mode">machine.Pin.IRQ_RISING</field><value name="btn"><shadow type="pins_button" id="ryhY`*]?G;?n#u4yIlk:"><field name="PIN">B1key</field></shadow></value><value name="DO"><shadow type="factory_block_return" id="s+`i*F@8P6J(9;[[UwcC"><field name="VALUE">attachInterrupt_func</field></shadow></value><next><block type="controls_whileUntil" id="ZpOKUrd;=#U0F#7[c}_1"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="h@cTJnH#~8b30*]lRYbX"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="!xFVNX_LzMt*y2:RF-Ty"><value name="data"><shadow type="pins_builtinimg" id="bdbCw[5x47r#-^^tAN#M"><field name="PIN">onboard_matrix.HEART</field></shadow></value><next><block type="controls_delay_new" id="J-*lMH_uj}0Qk}wr,;D,"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="=Oj8Jjv_Ea^Shf,ZuDoc"><field name="NUM">0.5</field></shadow></value><next><block type="display_show_image" id="}POjpT!S(e+D:Doqytr^"><value name="data"><shadow type="pins_builtinimg" id="m`ANtkmDO?x(qPf80rSH"><field name="PIN">onboard_matrix.HEART_SMALL</field></shadow></value><next><block type="controls_delay_new" id="T@}o_gm]dWV8pYaW_@J_"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="A.u+VZ#@FzbdT_z3|LOG"><field name="NUM">0.5</field></shadow></value></block></next></block></next></block></next></block></statement></block></next></block></next></block><block type="procedures_defnoreturn" id="+E8S,Mzf+lQ6pLA^FM`J" x="-2787" y="-716"><mutation><arg name="x" varid="kujED6C|3`}2*o!`dvF;"></arg></mutation><field name="NAME">attachInterrupt_func</field><statement name="STACK"><block type="variables_global" id="R8^MvU;}9*PFZ`t-bg~`"><value name="VAR"><block type="variables_get" id=".EUI)4CNL;A||4X*.Cg4"><field name="VAR">是否亮灯</field></block></value><next><block type="variables_set" id="?nD)?vVRXXHfOL6kqsy5"><field name="VAR">是否亮灯</field><value name="VALUE"><block type="logic_negate" id="dKGd,v4JFtvyBzK.kk3q"><value name="BOOL"><block type="variables_get" id="~mp:gC`dE.q?#!}heCk}"><field name="VAR">是否亮灯</field></block></value></block></value><next><block type="controls_if" id="1,o/H@=/nMt`:iLvx==Q"><mutation else="1"></mutation><value name="IF0"><block type="variables_get" id="-+eioZnfY(cY{WUxkWTj"><field name="VAR">是否亮灯</field></block></value><statement name="DO0"><block type="actuator_onboard_neopixel_rgb_all" id="`Hi:B_`?7)uibhz|@jL4"><value name="RVALUE"><shadow type="math_number" id="OewBf9)gh(*]?_ep/rPe"><field name="NUM">10</field></shadow></value><value name="GVALUE"><shadow type="math_number" id="7[}#82tXK8-$i:t*xCcf"><field name="NUM">10</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="?}[a+|4*8K4!ZqRcBosV"><field name="NUM">10</field></shadow></value></block></statement><statement name="ELSE"><block type="actuator_onboard_neopixel_rgb_all" id="W1=sSVPqeCO_hd[rlG]5"><value name="RVALUE"><shadow type="math_number" id="AF1EL:4.P;eS@ykKQZ/V"><field name="NUM">0</field></shadow></value><value name="GVALUE"><shadow type="math_number" id=".b[sndC)eFzHF)?rDo+X"><field name="NUM">0</field></shadow></value><value name="BVALUE"><shadow type="math_number" id="t,76}s3en+yKWEZCza`I"><field name="NUM">0</field></shadow></value></block></statement><next><block type="actuator_onboard_neopixel_write" id="~39frBHad!ZpSoS;^$^;"></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKaW1wb3J0IG1peGdvX2NjCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CmltcG9ydCB0aW1lCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfcmdiCgpkZWYgYXR0YWNoSW50ZXJydXB0X2Z1bmMoeCk6CiAgICBnbG9iYWwgX0U2Xzk4X0FGX0U1XzkwX0E2X0U0X0JBX0FFX0U3XzgxX0FGCiAgICBfRTZfOThfQUZfRTVfOTBfQTZfRTRfQkFfQUVfRTdfODFfQUYgPSBub3QgX0U2Xzk4X0FGX0U1XzkwX0E2X0U0X0JBX0FFX0U3XzgxX0FGCiAgICBpZiBfRTZfOThfQUZfRTVfOTBfQTZfRTRfQkFfQUVfRTdfODFfQUY6CiAgICAgICAgb25ib2FyZF9yZ2IuZmlsbCgoMTAsIDEwLCAxMCkpCiAgICBlbHNlOgogICAgICAgIG9uYm9hcmRfcmdiLmZpbGwoKDAsIDAsIDApKQogICAgb25ib2FyZF9yZ2Iud3JpdGUoKQoKCgpfRTZfOThfQUZfRTVfOTBfQTZfRTRfQkFfQUVfRTdfODFfQUYgPSBGYWxzZQptaXhnb19jYy5CMWtleS5pcnEoaGFuZGxlciA9IGF0dGFjaEludGVycnVwdF9mdW5jLCB0cmlnZ2VyID0gbWFjaGluZS5QaW4uSVJRX1JJU0lORykKd2hpbGUgVHJ1ZToKICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LkhFQVJUKQogICAgdGltZS5zbGVlcCgwLjUpCiAgICBvbmJvYXJkX21hdHJpeC5zaG93cyhvbmJvYXJkX21hdHJpeC5IRUFSVF9TTUFMTCkKICAgIHRpbWUuc2xlZXAoMC41KQo=</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><variables><variable id="ok:ro0iEW(eJAtg/iAsj">tim</variable></variables><block type="variables_set" id="2V_aC/Ck;gMZ^1{=4Ew4" x="-2908" y="-1031"><field name="VAR">开始</field><value name="VALUE"><block type="logic_boolean" id="5|jyCscqk*t:]N?+#.^Z"><field name="BOOL">FALSE</field></block></value><next><block type="variables_set" id="r8pj`C:{_`I4N?XO6r.y"><field name="VAR">计时</field><value name="VALUE"><block type="math_number" id="?ITcjjPBHctG98iyxHei"><field name="NUM">0</field></block></value><next><block type="system_timer_init" id="Q)J?T^sZHb2`o#.64?xY"><value name="SUB"><shadow type="variables_get" id="nKF9vzqGmEr9@PtkvD*O"><field name="VAR">tim</field></shadow></value><next><block type="system_timer" id="G??4LrB7|l]?Sg$op7gi"><field name="mode">PERIODIC</field><value name="VAR"><shadow type="variables_get" id="3I{;v3j^/@/}h`d=U8JB"><field name="VAR">tim</field></shadow></value><value name="period"><shadow type="math_number" id="aHw8|=Ea;-2Jb31:$ZJ#"><field name="NUM">100</field></shadow></value><value name="callback"><shadow type="factory_block_return" id="z@5T[TKP_Pf(7U2~pdfY"><field name="VALUE">tim_callback</field></shadow></value><next><block type="controls_whileUntil" id="*+F:N^RKh.Rjvp24)s(O"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="#XSvlDsHX|cxszBT!9#N"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="^frHvN*1)[rZ[#x:;|1X"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="^LhW,bB8*IL.r$74P0d9"><value name="btn"><shadow type="pins_button" id="BnvJa3CyfB84y#s?~p05"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="variables_set" id="Y@=H3yjix2vgW?5|{z|O"><field name="VAR">开始</field><value name="VALUE"><block type="logic_negate" id="2qDOpC~gC?}By!t!`{b+"><value name="BOOL"><block type="variables_get" id="I=Y@[GqkbrH`?2IB[{Wl"><field name="VAR">开始</field></block></value></block></value></block></statement></block></statement></block></next></block></next></block></next></block></next></block><block type="procedures_defnoreturn" id="_9VA@.$76JMpkr8]}BG`" x="-2911" y="-737"><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="G6{c9rN{Y(zUf6^@+89k"><value name="VAR"><block type="variables_get" id="*7)GcgJTrbI,TbW_alld"><field name="VAR">计时</field></block></value><next><block type="variables_global" id="Qlk65IT6AG}ys1OG3]$c"><value name="VAR"><block type="variables_get" id="QDFF/FItpzPRqTf+i[?Q"><field name="VAR">开始</field></block></value><next><block type="controls_if" id="_*cC2WNmE5[puq[HP[a^"><value name="IF0"><block type="variables_get" id="_;E`YqFRz8qkS8T,qZ.2"><field name="VAR">开始</field></block></value><statement name="DO0"><block type="math_selfcalcu" id="C#u]n64;Yf5cUH#7#Dv8"><field name="OP">ADD</field><value name="A"><shadow type="variables_get" id="iht@gniX.xgGQXh9K`El"><field name="VAR">a</field></shadow><block type="variables_get" id="8Z_6@P(@NM=X}|t?;he5"><field name="VAR">计时</field></block></value><value name="B"><shadow type="math_number" id="*j0UjV048$~/y)aI`[_7"><field name="NUM">1</field></shadow></value></block></statement><next><block type="display_show_image_or_string_delay" id="6Idg=A^GIc2A_CN[E3S:"><field name="center">True</field><value name="data"><shadow type="text" id="W{1Ql?Bd*oH`dD{.lf1U"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="~hCVA_LD!oohcQ/s#,=r"><value name="VAR"><shadow type="variables_get" id="W6uL?oLkL:BpG?B[I;*S"><field name="VAR">x</field></shadow><block type="variables_get" id="J2d?!bDWPZHY|siWB8Nm"><field name="VAR">计时</field></block></value></block></value><value name="space"><shadow type="math_number" id="K23|YNXi[awH*o3T/Ohj"><field name="NUM">0</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKaW1wb3J0IG1peGdvX2NjCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CgpkZWYgdGltX2NhbGxiYWNrKHRpbSk6CiAgICBnbG9iYWwgX0U4X0FFX0ExX0U2Xzk3X0I2CiAgICBnbG9iYWwgX0U1X0JDXzgwX0U1X0E3XzhCCiAgICBpZiBfRTVfQkNfODBfRTVfQTdfOEI6CiAgICAgICAgX0U4X0FFX0ExX0U2Xzk3X0I2ICs9IDEKICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKHN0cihfRThfQUVfQTFfRTZfOTdfQjYpLHNwYWNlID0gMCxjZW50ZXIgPSBUcnVlKQoKCgpfRTVfQkNfODBfRTVfQTdfOEIgPSBGYWxzZQpfRThfQUVfQTFfRTZfOTdfQjYgPSAwCnRpbSA9IG1hY2hpbmUuVGltZXIoMCkKdGltLmluaXQocGVyaW9kID0gMTAwLCBtb2RlID0gbWFjaGluZS5UaW1lci5QRVJJT0RJQywgY2FsbGJhY2sgPSB0aW1fY2FsbGJhY2spCndoaWxlIFRydWU6CiAgICBpZiBtaXhnb19jYy5CMWtleS53YXNfcHJlc3NlZCgpOgogICAgICAgIF9FNV9CQ184MF9FNV9BN184QiA9IG5vdCBfRTVfQkNfODBfRTVfQTdfOEIK</code>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="IPc=))t6.;}w]2ntvbIF" x="-3074" y="-1055"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="*Ym?;k)w?5ZNu{R#MF4K"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="75aFGp/TGPRXu`Svl^ys"><value name="data"><shadow type="pins_builtinimg" id="9n3;)n52gU_`7Y@I#U9m"><field name="PIN">onboard_matrix.HEART</field></shadow></value><next><block type="controls_delay_new" id="Q(0ewuP17,5v3GF$-Vg)"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="_$.ks)0$dW93+$5f-_+W"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id="eYa(:_kSb+;n+:}n$u0@"><value name="data"><shadow type="pins_builtinimg" id="iVth6[=`cbP)dVkERBTT"><field name="PIN">onboard_matrix.HEART_SMALL</field></shadow></value><next><block type="controls_delay_new" id="AJulyKinW.}Qfj4rC!?{"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id=":71po~Zac}|d,v:aK^MB"><field name="NUM">0.1</field></shadow></value><next><block type="variables_set" id="#.$t^}uGqN:~Q1s0bM+#"><field name="VAR">错误变量</field><value name="VALUE"><block type="logic_negate" id="HZvg{v{vUStE$y=6Fly~"><value name="BOOL"><block type="variables_get" id="Kt?t#M9*zH4V-XIV;#P:"><field name="VAR">错误变量</field></block></value></block></value></block></next></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXguSEVBUlQpCiAgICB0aW1lLnNsZWVwKDAuMSkKICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LkhFQVJUX1NNQUxMKQogICAgdGltZS5zbGVlcCgwLjEpCiAgICBfRTlfOTRfOTlfRThfQUZfQUZfRTVfOEZfOThfRTlfODdfOEYgPSBub3QgX0U5Xzk0Xzk5X0U4X0FGX0FGX0U1XzhGXzk4X0U5Xzg3XzhGCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="_!bJ,=bv4=uvU:?)RIGE" x="-3074" y="-1055"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="{np.mHSt;mevdQ|@H~Hf"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image" id="dzw,qU2|JuK}iKN97]`0"><value name="data"><shadow type="pins_builtinimg" id="z@H5rS?.QDjKPvmYp95|"><field name="PIN">onboard_matrix.HEART</field></shadow></value><next><block type="controls_delay_new" id="c.d`Ve8N6lO9wE5UXG-b"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="-i]`GvSqWt{o[fcj,ER9"><field name="NUM">0.1</field></shadow></value><next><block type="display_show_image" id="aAQbGurmE7V}a_5ue?:g"><value name="data"><shadow type="pins_builtinimg" id="e]h#d0d2L+9T|PX5N@,J"><field name="PIN">onboard_matrix.HEART_SMALL</field></shadow></value><next><block type="controls_delay_new" id=")du)GR1J?CUzv2c2a26r"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="?pQeYxUplUwqCiW#p/nC"><field name="NUM">0.1</field></shadow></value><next><block type="controls_try_finally" id="$8L,OTYujgcAtF)4QA_n"><mutation elseif="1"></mutation><statement name="try"><block type="variables_set" id="ZClB=h|9P_`lggb7yn)0"><field name="VAR">错误变量</field><value name="VALUE"><block type="logic_negate" id="Zs0`e[w_CUx2ENx,E5!q"><value name="BOOL"><block type="variables_get" id="ZM/Gsyu~SU;=Lp5.|HXj"><field name="VAR">错误变量</field></block></value></block></value></block></statement><value name="IF1"><shadow type="factory_block_return" id="|zHnUhFSxw=#Zp-3)C5}"><field name="VALUE">Exception as e</field></shadow></value><statement name="DO1"><block type="system_print" id=")[L=n#U4P|Fg=Bd[?GkK" disabled="true"><value name="VAR"><block type="variables_get" id="-Y3|YbDbC8b6LTj`m6Z7"><field name="VAR">e</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></statement></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKaW1wb3J0IHRpbWUKCgp3aGlsZSBUcnVlOgogICAgb25ib2FyZF9tYXRyaXguc2hvd3Mob25ib2FyZF9tYXRyaXguSEVBUlQpCiAgICB0aW1lLnNsZWVwKDAuMSkKICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LkhFQVJUX1NNQUxMKQogICAgdGltZS5zbGVlcCgwLjEpCiAgICB0cnk6CiAgICAgICAgX0U5Xzk0Xzk5X0U4X0FGX0FGX0U1XzhGXzk4X0U5Xzg3XzhGID0gbm90IF9FOV85NF85OV9FOF9BRl9BRl9FNV84Rl85OF9FOV84N184RgogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIHBhc3MK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="controls_whileUntil" id="z38;_Rzmdd62^K+YFvY;" x="-3394" y="-997"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id=";Rjs]S$so(#Nz@rLd;J7"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="system_print" id="x?6?8uIPv.4:X~^cH`Ji"><value name="VAR"><shadow type="text" id="RUZG!E2eLbS_sl]Jv^.6"><field name="TEXT">Mixly</field></shadow><block type="rfid_readid" id="gz[404*#3#$P!z?R0Fw~"></block></value><next><block type="controls_delay_new" id="=xwFpPG7CR|M1EdDQAG6"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="nlcB[eTX[s5-2|)qUBuy"><field name="NUM">1</field></shadow></value></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9yZmlkCmltcG9ydCB0aW1lCgoKd2hpbGUgVHJ1ZToKICAgIHByaW50KG9uYm9hcmRfcmZpZC5yZWFkX2NhcmQoMCwgeD0iaWQiKSkKICAgIHRpbWUuc2xlZXAoMSkK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="variables_set" id="H`+0pT|x{=$}yrpq43m|" x="-3403" y="-1132"><field name="VAR">id</field><value name="VALUE"><block type="math_number" id="te[+N-Lw:A*VSC/VgwnW"><field name="NUM">0</field></block></value><next><block type="controls_whileUntil" id="fLUO)]?G9+_$-JPu;[/J"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="-#glos[yKdJh4.?Y{jGd"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="variables_set" id="D;?!.}0R;!M}1`d7t)eZ"><field name="VAR">id</field><value name="VALUE"><block type="rfid_readid" id=";do[Bn`3pFxA}rm?e3he"></block></value><next><block type="controls_if" id="DNlGi[PLrm*kPE_!7M}R"><value name="IF0"><block type="logic_compare" id="1M,FH)}0c,]k:bHV(mvd"><field name="OP">NEQ</field><value name="A"><block type="number_to_text" id="9Ug?#-ot6Of)bkTrq~bC"><value name="VAR"><shadow type="variables_get" id="vC4iIzLb`Qh)j^L`*Y*w"><field name="VAR">x</field></shadow><block type="variables_get" id="/-ri/kmIZzx^Dc.;Eyt@"><field name="VAR">id</field></block></value></block></value><value name="B"><block type="text" id="!Q5h0w*a.kjwN/QpgKsh"><field name="TEXT">None</field></block></value></block></value><statement name="DO0"><block type="esp32_onboard_music_pitch_with_time" id="*`U=PMro[;wB4(0Yt=Ej"><value name="pitch"><shadow type="pins_tone_notes" id="4_b_}oT:(w3W;v{G1`#$"><field name="PIN">659</field></shadow></value><value name="time"><shadow type="math_number" id="E`Ei6y6Y:/3(+:ikwqbW"><field name="NUM">100</field></shadow></value><next><block type="system_print" id="GE/BDXMNbS*RtJLw#a.+"><value name="VAR"><shadow type="text" id="dcX.YOM[[!6Ui!Nmooh="><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="R4lMTx0I)7o$^qY$t,.t"><field name="VAR">id</field></block></value><next><block type="display_scroll_string" id="bEJE3.G3}c4R/B]rdLZu"><value name="data"><shadow type="text" id="Z!+|$Pdui+EKYv.Y7Ej~"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="gK)k[QX8QsrMs|b[d@r|"><value name="VAR"><shadow type="variables_get" id="1E-s_]m|Ro[tc~ai0mE4"><field name="VAR">x</field></shadow><block type="variables_get" id="EX[+*F3v_h:Ukl7BZ`4i"><field name="VAR">id</field></block></value></block></value></block></next></block></next></block></statement></block></next></block></statement></block></next></block></xml><config>{}</config><code>ZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9yZmlkCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbXVzaWMKaW1wb3J0IG1hY2hpbmUKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKCgppZDIgPSAwCndoaWxlIFRydWU6CiAgICBpZDIgPSBvbmJvYXJkX3JmaWQucmVhZF9jYXJkKDAsIHg9ImlkIikKICAgIGlmIHN0cihpZDIpICE9ICdOb25lJzoKICAgICAgICBvbmJvYXJkX211c2ljLnBpdGNoX3RpbWUoNjU5LCAxMDApCiAgICAgICAgcHJpbnQoaWQyKQogICAgICAgIG9uYm9hcmRfbWF0cml4LnNjcm9sbChzdHIoaWQyKSkK</code>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="espnow_radio_channel" id="Y^Jl8Nm+$C#Rq+:xyP_7" x="-912" y="-519"><value name="CHNL"><shadow type="espnow_channel" id="Mobx._Xl4|bJT$!~}2l1"><field name="PIN">10</field></shadow></value><next><block type="espnow_radio_on_off" id="rxIGD.I3NDrSc:|][iIs"><field name="on_off">True</field><next><block type="controls_whileUntil" id="VK?gdD8+.V*=woYzH.HD"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="XH?r,^80AaToW:+~WJYR"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_if" id="63Q?O786|j_//}q[sdAE"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="3Ngd7Sji7KqePi#g_?1#"><value name="btn"><shadow type="pins_button" id="Q{[j[26*J6yXBHW9~F$G"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="espnow_radio_send" id="RH|jaq9,Zl8~U3*R;9nD"><value name="send"><shadow type="text" id="41CtzXjo_!1/,UcxcHSx"><field name="TEXT">LEFT</field></shadow></value></block></statement><next><block type="controls_if" id="S39edOT_~3+:oSMVWC~O"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="HBHx-]6~T(T7WtaY;O:9"><value name="btn"><shadow type="pins_button" id="2870jD8W1t|G{Jj4g/z,"><field name="PIN">B2key</field></shadow></value></block></value><statement name="DO0"><block type="espnow_radio_send" id="Rc*1w3].w?(_]c-:]5pL"><value name="send"><shadow type="text" id=".rfN8n?y/SQ4qLNLOMi:"><field name="TEXT">RIGHT</field></shadow></value></block></statement></block></next></block></statement></block></next></block></next></block><block type="espnow_radio_recv_new" id="5Wp7DRdB#ILP0=2+MdTz" x="-894" y="-189"><statement name="DO"><block type="system_print" id="[^/3`){o+X:n27l)0QE:"><value name="VAR"><block type="espnow_radio_recv_msg" id="s1cnMte(mkt_XY6e~@1j"></block></value></block></statement></block><block type="espnow_radio_recv_certain_msg_new" id="C*Wsmv]qI7lqGt8^~D/a" x="-905" y="-84"><field name="msg">LEFT</field><statement name="DO"><block type="display_show_image" id="Z]QtQ,$~q[;X#Ik*s1ht"><value name="data"><shadow type="pins_builtinimg" id="bJ{UMYF_;wJ1J/jCtW8#"><field name="PIN">onboard_matrix.LEFT_ARROW</field></shadow></value></block></statement></block><block type="espnow_radio_recv_certain_msg_new" id="3Z=^l+aVQS(2:Zkh#};]" x="-904" y="13"><field name="msg">RIGHT</field><statement name="DO"><block type="display_show_image" id="?P1)Ukg[dUll[/C0L]od"><value name="data"><shadow type="pins_builtinimg" id="g.o4Mng7fb4LvnTXHb8T"><field name="PIN">onboard_matrix.RIGHT_ARROW</field></shadow></value></block></statement></block></xml><config>{}</config><code>aW1wb3J0IHJhZGlvCkVTUE5vd19yYWRpbz1yYWRpby5FU1BOb3coKQppbXBvcnQgbWl4Z29fY2MKaGFuZGxlX2xpc3Q9W10KaW1wb3J0IG1hY2hpbmUKZGVmIEVTUE5vd19yYWRpb19yZWN2KG1hYyxFU1BOb3dfcmFkaW9fbXNnKToKICAgIHByaW50KEVTUE5vd19yYWRpb19tc2cpCgppZiBub3QgRVNQTm93X3JhZGlvX3JlY3YgaW4gaGFuZGxlX2xpc3Q6CiAgICBoYW5kbGVfbGlzdC5hcHBlbmQoRVNQTm93X3JhZGlvX3JlY3YpCkVTUE5vd19yYWRpby5yZWN2X2NiKGhhbmRsZV9saXN0KQoKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKZGVmIEVTUE5vd19yYWRpb19yZWN2X19MRUZUKG1hYyxFU1BOb3dfcmFkaW9fbXNnKToKICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LkxFRlRfQVJST1cpCgppZiBub3QgRVNQTm93X3JhZGlvX3JlY3ZfX0xFRlQgaW4gaGFuZGxlX2xpc3Q6CiAgICBoYW5kbGVfbGlzdC5hcHBlbmQoRVNQTm93X3JhZGlvX3JlY3ZfX0xFRlQpCkVTUE5vd19yYWRpby5yZWN2X2NiKGhhbmRsZV9saXN0KQoKZGVmIEVTUE5vd19yYWRpb19yZWN2X19SSUdIVChtYWMsRVNQTm93X3JhZGlvX21zZyk6CiAgICBvbmJvYXJkX21hdHJpeC5zaG93cyhvbmJvYXJkX21hdHJpeC5SSUdIVF9BUlJPVykKCmlmIG5vdCBFU1BOb3dfcmFkaW9fcmVjdl9fUklHSFQgaW4gaGFuZGxlX2xpc3Q6CiAgICBoYW5kbGVfbGlzdC5hcHBlbmQoRVNQTm93X3JhZGlvX3JlY3ZfX1JJR0hUKQpFU1BOb3dfcmFkaW8ucmVjdl9jYihoYW5kbGVfbGlzdCkKCgoKRVNQTm93X3JhZGlvLnNldF9jaGFubmVsKGNoYW5uZWw9MTApCkVTUE5vd19yYWRpby5hY3RpdmUoVHJ1ZSkKd2hpbGUgVHJ1ZToKICAgIGlmIG1peGdvX2NjLkIxa2V5Lndhc19wcmVzc2VkKCk6CiAgICAgICAgRVNQTm93X3JhZGlvLnNlbmQoImZmZmZmZmZmZmZmZiIsJ0xFRlQnKQogICAgaWYgbWl4Z29fY2MuQjJrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICBFU1BOb3dfcmFkaW8uc2VuZCgiZmZmZmZmZmZmZmZmIiwnUklHSFQnKQo=</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="variables_set" id="vQf1)(M09wVmp_]t1LwV" x="-557" y="-442"><field name="VAR">lastmsgtime</field><value name="VALUE"><block type="controls_millis" id=")X[~!4uis`R:+A**mm:y"><field name="Time">ms</field></block></value><next><block type="espnow_radio_channel" id="@U=#Yi^5rw#}s0[/pSDc"><value name="CHNL"><shadow type="espnow_channel" id="sJB6]YNko$y{/Z)M$@*b"><field name="PIN">10</field></shadow></value><next><block type="espnow_radio_on_off" id="0f:n.v1#79zUXoc$YsW#"><field name="on_off">True</field><next><block type="controls_whileUntil" id="5L.]umFA2Eas;k[!1sP6"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="dn?ROQ58upjh*7ICS8ER"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_delay_new" id="(J*mVPn8)PnUCt8/qJ@)"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="Q1+Bs#sCYL8sj8LdXs5D"><field name="NUM">2</field></shadow></value><next><block type="espnow_radio_send" id="M^pNimjq+wb7NEUo/QK#"><value name="send"><shadow type="text" id="9`=Bt?*NbONzQ{*a5D1x"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="eF3!{_fZM;-O/CN2q(.W"><value name="VAR"><shadow type="variables_get" id="rU#j1MU?9hAqY8_0bMKc"><field name="VAR">x</field></shadow><block type="controls_millis" id="Vqb?H?+s@4UldaFe1w]o"><field name="Time">ms</field></block></value></block></value><next><block type="controls_if" id="0Df!QQ[If6(w{[U*S_q5"><value name="IF0"><block type="logic_compare" id="RZ|$?EH=2Lxyc]_5RUQB"><field name="OP">GT</field><value name="A"><block type="math_arithmetic" id="N#fxX^T$3V-!}O`l^c*)"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="g.J,!oN-]IlS+wa-:YxP"><field name="NUM">1</field></shadow><block type="controls_millis" id="d,l9c/n0E@^FHrBp1e;9"><field name="Time">ms</field></block></value><value name="B"><shadow type="math_number" id="rXGM,$o(Qj)m)!^U?A^Z"><field name="NUM">1</field></shadow><block type="variables_get" id="0_ZUh3kdJ4yVEBtB3[/A"><field name="VAR">lastmsgtime</field></block></value></block></value><value name="B"><block type="math_number" id="Rh0}K[rcdq:IPinYkT;{"><field name="NUM">10000</field></block></value></block></value><statement name="DO0"><block type="display_show_image" id="eAh:#;7fl$=a$uw#EPeb"><value name="data"><shadow type="pins_builtinimg" id="IG4T5A*v^^B5_`q:;{ak"><field name="PIN">onboard_matrix.NO</field></shadow></value><next><block type="esp32_onboard_music_play_list" id="r*~W-o,0R+m_bp$T/nT_"><value name="LIST"><shadow type="pins_playlist" id="!K7L,j_Hw[R:_N_bGChn"><field name="PIN">onboard_music.RINGTONE</field></shadow></value></block></next></block></statement></block></next></block></next></block></statement></block></next></block></next></block></next></block><block type="espnow_radio_recv_new" id="-*Gp^R?)Q]wb{uyTE[I$" x="-534" y="-34"><statement name="DO"><block type="variables_global" id="a82OD:w]GHn1,(T@w6Mr"><value name="VAR"><block type="variables_get" id="W3f)C.2?n5S+E3R7IR3L"><field name="VAR">lastmsgtime</field></block></value><next><block type="display_show_image" id="DPK~{M1u;9?DDr[K$)#X"><value name="data"><shadow type="pins_builtinimg" id="_av]yk06p8lI}KhAC~8u"><field name="PIN">onboard_matrix.YES</field></shadow></value><next><block type="variables_set" id=",HJ4?8VW:7Ls-XYspW^q"><field name="VAR">lastmsgtime</field><value name="VALUE"><block type="controls_millis" id="1Od5]y1-TVd+3@AMJU8^"><field name="Time">ms</field></block></value></block></next></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IHRpbWUKaW1wb3J0IHJhZGlvCkVTUE5vd19yYWRpbz1yYWRpby5FU1BOb3coKQpmcm9tIG1peGdvX2NjIGltcG9ydCBvbmJvYXJkX21hdHJpeApmcm9tIG1peGdvX2NjIGltcG9ydCBvbmJvYXJkX211c2ljCmhhbmRsZV9saXN0PVtdCmRlZiBFU1BOb3dfcmFkaW9fcmVjdihtYWMsRVNQTm93X3JhZGlvX21zZyk6CiAgICBnbG9iYWwgbGFzdG1zZ3RpbWUKICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4LllFUykKICAgIGxhc3Rtc2d0aW1lID0gdGltZS50aWNrc19tcygpCgppZiBub3QgRVNQTm93X3JhZGlvX3JlY3YgaW4gaGFuZGxlX2xpc3Q6CiAgICBoYW5kbGVfbGlzdC5hcHBlbmQoRVNQTm93X3JhZGlvX3JlY3YpCkVTUE5vd19yYWRpby5yZWN2X2NiKGhhbmRsZV9saXN0KQoKCgpsYXN0bXNndGltZSA9IHRpbWUudGlja3NfbXMoKQpFU1BOb3dfcmFkaW8uc2V0X2NoYW5uZWwoY2hhbm5lbD0xMCkKRVNQTm93X3JhZGlvLmFjdGl2ZShUcnVlKQp3aGlsZSBUcnVlOgogICAgdGltZS5zbGVlcCgyKQogICAgRVNQTm93X3JhZGlvLnNlbmQoImZmZmZmZmZmZmZmZiIsc3RyKHRpbWUudGlja3NfbXMoKSkpCiAgICBpZiB0aW1lLnRpY2tzX21zKCkgLSBsYXN0bXNndGltZSA+IDEwMDAwOgogICAgICAgIG9uYm9hcmRfbWF0cml4LnNob3dzKG9uYm9hcmRfbWF0cml4Lk5PKQogICAgICAgIG9uYm9hcmRfbXVzaWMucGxheShvbmJvYXJkX211c2ljLlJJTkdUT05FKQo=</code>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="iot_wifi_connect" id="bsyaV),-4:t1/jKHJgRN" x="-1549" y="-410"><value name="WIFINAME"><shadow type="text" id=":zxCy/8X3_D(v@{5*:6s"><field name="TEXT">fuhua3</field></shadow></value><value name="PASSWORD"><shadow type="text" id="u5VMy]4.UM]kF7;Va]^L"><field name="TEXT">1234567890</field></shadow></value><next><block type="display_show_image_or_string_delay" id="z|J}**(Tp#/#KC+*7?nW"><field name="center">True</field><value name="data"><shadow type="text" id="ZWS#)4nM8nf;Q74gd~DY"><field name="TEXT">WO</field></shadow></value><value name="space"><shadow type="math_number" id="1qG|*DQD!6Or8JMFDgdT"><field name="NUM">0</field></shadow></value><next><block type="IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE" id="B@OJ#k=RZ.@e+8wPR8qZ"><value name="SERVER"><shadow type="text" id="Qy*}oI);QZ0PIq|m`ZZ~"><field name="TEXT">mixio.mixly.cn</field></shadow></value><value name="KEY"><shadow type="iot_mixly_key" id="IuU18s=XPQ~fYdor`IaJ"><field name="VISITOR_ID">31MOTCLJ</field></shadow></value><next><block type="display_show_image_or_string_delay" id="uTF2RTyya;4O05,[8Oro"><field name="center">True</field><value name="data"><shadow type="text" id="uEtVjkEc}.L@.;]Bp/lS"><field name="TEXT">MO</field></shadow></value><value name="space"><shadow type="math_number" id="vhZNH_:4qI.-R;;Gfz5]"><field name="NUM">0</field></shadow></value><next><block type="controls_whileUntil" id=".F).on(SQu6[vW|W!JzR"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="@]*l9VmkYh-ygpl]|xPN"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_delay_new" id="P@yIS4G-OEb_.8z@vxa5"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="eLKZn+fKdF`3P@`_~!1w"><field name="NUM">5</field></shadow></value><next><block type="IOT_MIXIO_PUBLISH" id=";T2_882#e7@B4E}P45hI"><value name="TOPIC"><shadow type="text" id="VT0pX)T/Qc1KZ@1mW8sm"><field name="TEXT">光照</field></shadow></value><value name="MSG"><shadow type="text" id="1:ZAf8{0+8!XctdhnaiX"><field name="TEXT">msg</field></shadow><block type="sensor_LTR308" id="mfznSNYMgN@@w]S`C^gA"></block></value><next><block type="display_scroll_string" id="U=YLA`gc!pvW5t@l3AMz"><value name="data"><shadow type="text" id=":NAo?_am5EeH_dB]jn8Y"><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="g0-yt5eX,.}7[-j9{]TU"><value name="VAR"><shadow type="variables_get" id="@ni^?4~S6:Qu:.4a`hOl"><field name="VAR">x</field></shadow><block type="sensor_LTR308" id="}9]`F6LSt?6#=2/{[kVQ"></block></value></block></value></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1peGlvdApmcm9tIG1peGdvX2NjIGltcG9ydCBvbmJvYXJkX21hdHJpeAppbXBvcnQgbWFjaGluZQpmcm9tIHViaW5hc2NpaSBpbXBvcnQgaGV4bGlmeQppbXBvcnQgdGltZQpmcm9tIG1peGdvX2NjIGltcG9ydCBvbmJvYXJkX2FscwoKCm1peGlvdC53bGFuX2Nvbm5lY3QoJ2Z1aHVhMycsJzEyMzQ1Njc4OTAnKQpvbmJvYXJkX21hdHJpeC5zaG93cygnV08nLHNwYWNlID0gMCxjZW50ZXIgPSBUcnVlKQpNUVRUX1VTUl9QUkogPSAiTWl4SU8vMzFNT1RDTEovZGVmYXVsdC8iCm1xdHRfY2xpZW50ID0gbWl4aW90LmluaXRfTVFUVF9jbGllbnQoJ21peGlvLm1peGx5LmNuJywgIk1peElPX3B1YmxpYyIsICJNaXhJT19wdWJsaWMiLCBNUVRUX1VTUl9QUkopCm9uYm9hcmRfbWF0cml4LnNob3dzKCdNTycsc3BhY2UgPSAwLGNlbnRlciA9IFRydWUpCndoaWxlIFRydWU6CiAgICB0aW1lLnNsZWVwKDUpCiAgICBtcXR0X2NsaWVudC5wdWJsaXNoKE1RVFRfVVNSX1BSSiArICflhYnnhacnLCBvbmJvYXJkX2Fscy5hbHNfdmlzKCkpCiAgICBvbmJvYXJkX21hdHJpeC5zY3JvbGwoc3RyKG9uYm9hcmRfYWxzLmFsc192aXMoKSkpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="iot_wifi_connect" id="oB1w-`TwADt]bo4c#LMQ" x="-1378" y="-423"><value name="WIFINAME"><shadow type="text" id="WG-ssgVz@_W]YWgSUvCb"><field name="TEXT">fuhua3</field></shadow></value><value name="PASSWORD"><shadow type="text" id="pu824Rh^E]SXeAY.)z~_"><field name="TEXT">1234567890</field></shadow></value><next><block type="display_show_image_or_string_delay" id="dMQL?Q,xFzHv4C6Y[H25"><field name="center">True</field><value name="data"><shadow type="text" id="{i6CZl[fz9v,-iLZ$N+("><field name="TEXT">WO</field></shadow></value><value name="space"><shadow type="math_number" id="oFkq1d**TM_{A|g?OfAB"><field name="NUM">0</field></shadow></value><next><block type="IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE" id="R-!Q2~(6^ZaBdH:D+~Me"><value name="SERVER"><shadow type="text" id="qR#$_w^iqji2sQx2$m.{"><field name="TEXT">mixio.mixly.cn</field></shadow></value><value name="KEY"><shadow type="iot_mixly_key" id="yuJ+p8DSmkc64d?f[*]p"><field name="VISITOR_ID">4OG7811O</field></shadow></value><next><block type="display_show_image_or_string_delay" id="7ICo85u2U|Hih!7!Pv:@"><field name="center">True</field><value name="data"><shadow type="text" id="z,p7TY3HU@KgsjBLV74l"><field name="TEXT">MO</field></shadow></value><value name="space"><shadow type="math_number" id="EY6fn,Y5wfWogTKj^QuP"><field name="NUM">0</field></shadow></value><next><block type="controls_whileUntil" id="E6,]kxHYs?/?*V3Wf_nx"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="ke20K@-JTl;xg3ezSk?l"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="controls_delay_new" id="Ei1jts]_@q3963*1]_ef"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="!8Y)!s_0TNt=+A1;N*^0"><field name="NUM">5</field></shadow></value><next><block type="IOT_MIXIO_PUBLISH" id="oN$JK`D-o}!4Ae5vKu5R"><value name="TOPIC"><shadow type="text" id="Aiv5kNX{pq/yGl0l+K+z"><field name="TEXT">环境</field></shadow></value><value name="MSG"><shadow type="text" id="M^BS,8OX$?XBeiE8t0]V"><field name="TEXT">msg</field></shadow><block type="IOT_FORMAT_STRING" id="`|+:m/`jCeGlK*IIN#fI"><value name="VAR"><block type="dicts_create_with_noreturn" id="6pP7HIM1A7A3vlvPUJr/" inline="false"><mutation items="3"></mutation><field name="KEY0">"光照"</field><field name="KEY1">"声音"</field><field name="KEY2">"震动"</field><value name="ADD0"><block type="sensor_mixgo_light" id="bs@T3:w9$b~@n?;[}6?M"></block></value><value name="ADD1"><block type="sensor_sound" id="=RbM.u.RD;t]`Eb]7:Ky"></block></value><value name="ADD2"><block type="sensor_get_acceleration" id="YqqNY8bk.!F,Mo-hS3t("><field name="key">strength</field></block></value></block></value></block></value></block></next></block></statement></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1peGlvdApmcm9tIG1peGdvX2NjIGltcG9ydCBvbmJvYXJkX21hdHJpeAppbXBvcnQgbWFjaGluZQpmcm9tIHViaW5hc2NpaSBpbXBvcnQgaGV4bGlmeQppbXBvcnQgdGltZQppbXBvcnQgbWl4cHkKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9hbHMKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9zb3VuZApmcm9tIG1peGdvX2NjIGltcG9ydCBvbmJvYXJkX2FjYwoKCm1peGlvdC53bGFuX2Nvbm5lY3QoJ2Z1aHVhMycsJzEyMzQ1Njc4OTAnKQpvbmJvYXJkX21hdHJpeC5zaG93cygnV08nLHNwYWNlID0gMCxjZW50ZXIgPSBUcnVlKQpNUVRUX1VTUl9QUkogPSAiTWl4SU8vNE9HNzgxMU8vZGVmYXVsdC8iCm1xdHRfY2xpZW50ID0gbWl4aW90LmluaXRfTVFUVF9jbGllbnQoJ21peGlvLm1peGx5LmNuJywgIk1peElPX3B1YmxpYyIsICJNaXhJT19wdWJsaWMiLCBNUVRUX1VTUl9QUkopCm9uYm9hcmRfbWF0cml4LnNob3dzKCdNTycsc3BhY2UgPSAwLGNlbnRlciA9IFRydWUpCndoaWxlIFRydWU6CiAgICB0aW1lLnNsZWVwKDUpCiAgICBtcXR0X2NsaWVudC5wdWJsaXNoKE1RVFRfVVNSX1BSSiArICfnjq/looMnLCBtaXhweS5mb3JtYXRfc3RyKHsi5YWJ54WnIjpvbmJvYXJkX2Fscy5hbHNfdmlzKCksICLlo7Dpn7MiOm9uYm9hcmRfc291bmQucmVhZCgpLCAi6ZyH5YqoIjpvbmJvYXJkX2FjYy5zdHJlbmd0aCgpfSkpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><variables><variable id="x@Yfw8DrgkM3CEl{odMY">client</variable><variable id="Q.[d]Bc~)FuhqVb/l{Uh">topic</variable><variable id="0.A^[Eto)4wE7Tef?SZQ">msg</variable></variables><block type="iot_wifi_connect" id="lb/uJ0Acu[8r!J8z*B7k" x="-2026" y="-593"><value name="WIFINAME"><shadow type="text" id=";D/R4;?RFFe8ICCcfJ~q"><field name="TEXT">fuhua3</field></shadow></value><value name="PASSWORD"><shadow type="text" id="x5UE{)8H`oF7dqdlYVoJ"><field name="TEXT">1234567890</field></shadow></value><next><block type="display_show_image_or_string_delay" id="l,QNRm6p[LpL1hN/4/-A"><field name="center">True</field><value name="data"><shadow type="text" id="+;Dy/2,8$?F):r;_5TD3"><field name="TEXT">WO</field></shadow></value><value name="space"><shadow type="math_number" id="9v3lwyJK!S}a-P{98OEs"><field name="NUM">0</field></shadow></value><next><block type="IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE" id="2W3(gRaVi[UdIkIc[lgJ"><value name="SERVER"><shadow type="text" id=":}Z*Wo0!CPKk(-9c^B|-"><field name="TEXT">mixio.mixly.cn</field></shadow></value><value name="KEY"><shadow type="iot_mixly_key" id="3^w~[Wri$B2=yr5=*sv?"><field name="VISITOR_ID">31MOTCLJ</field></shadow></value><next><block type="display_show_image_or_string_delay" id="N^5y7,oF8SV]C..pB{Ho"><field name="center">True</field><value name="data"><shadow type="text" id="~t56a:q5Up)GK{ZY~^1S"><field name="TEXT">MO</field></shadow></value><value name="space"><shadow type="math_number" id="0Ast!3n@zW?^V:60Yb@["><field name="NUM">0</field></shadow></value><next><block type="IOT_MIXIO_SUBSCRIBE" id="QolgJ7ZUxYvd4tODp.5X"><value name="TOPIC"><shadow type="text" id="Xu8y$Qm{xksUw)8;U(DZ"><field name="TEXT">亮屏</field></shadow></value><value name="METHOD"><shadow type="factory_block_return" id="q7yDP!mQAt30!Yh4kj:]"><field name="VALUE">method</field></shadow></value><next><block type="controls_whileUntil" id="GyM:TophJ5v!Knv$JLnR"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="d5?GP{q]ArI^Z2rMPyV@"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="iot_mixio_check" id="Ok1xmy1Ih/bMqNdJc-|U"></block></statement></block></next></block></next></block></next></block></next></block></next></block><block type="procedures_defnoreturn" id="8*A89,ImI@QgK0|AO91h" x="-2020" y="-282"><mutation><arg name="client" varid="x@Yfw8DrgkM3CEl{odMY"></arg><arg name="topic" varid="Q.[d]Bc~)FuhqVb/l{Uh"></arg><arg name="msg" varid="0.A^[Eto)4wE7Tef?SZQ"></arg></mutation><field name="NAME">method</field><statement name="STACK"><block type="controls_if" id="e8-7PXz~Ja6)rl$|,!A;"><value name="IF0"><block type="logic_compare" id="YE,uU!S:O|cLwc=H1T~B"><field name="OP">EQ</field><value name="A"><block type="variables_get" id="7fPFq@WMiY/`,~uUCG.:"><field name="VAR">msg</field></block></value><value name="B"><block type="text" id="gHLw3x2v^uSa11F[uHf8"><field name="TEXT">1</field></block></value></block></value><statement name="DO0"><block type="display_show_image" id="Uf?Pw/mD`R4Y:jfrFO){"><value name="data"><shadow type="pins_builtinimg" id="su?s5Ymx@)H*A!t:y/ee"><field name="PIN">onboard_matrix.HEART</field></shadow></value></block></statement><next><block type="controls_if" id="H{jXzEm,hAu!Sp#L/Wp3"><value name="IF0"><block type="logic_compare" id=",5k^(BxJ#cBhpvt+Nc0`"><field name="OP">EQ</field><value name="A"><block type="variables_get" id="goXKqmU6DNnPJ-+i$Q],"><field name="VAR">msg</field></block></value><value name="B"><block type="text" id="qqH`9jQmL3w6xy_Mx:V8"><field name="TEXT">0</field></block></value></block></value><statement name="DO0"><block type="display_clear" id="7b^V!2)$0vf]m.Af,okq"></block></statement></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IG1peGlvdApmcm9tIG1peGdvX2NjIGltcG9ydCBvbmJvYXJkX21hdHJpeAppbXBvcnQgbWFjaGluZQpmcm9tIHViaW5hc2NpaSBpbXBvcnQgaGV4bGlmeQoKZGVmIG1ldGhvZChjbGllbnQsIHRvcGljLCBtc2cpOgogICAgaWYgbXNnID09ICcxJzoKICAgICAgICBvbmJvYXJkX21hdHJpeC5zaG93cyhvbmJvYXJkX21hdHJpeC5IRUFSVCkKICAgIGlmIG1zZyA9PSAnMCc6CiAgICAgICAgb25ib2FyZF9tYXRyaXguZmlsbCgwKQogICAgICAgIG9uYm9hcmRfbWF0cml4LnNob3coKQoKCgptaXhpb3Qud2xhbl9jb25uZWN0KCdmdWh1YTMnLCcxMjM0NTY3ODkwJykKb25ib2FyZF9tYXRyaXguc2hvd3MoJ1dPJyxzcGFjZSA9IDAsY2VudGVyID0gVHJ1ZSkKTVFUVF9VU1JfUFJKID0gIk1peElPLzMxTU9UQ0xKL2RlZmF1bHQvIgptcXR0X2NsaWVudCA9IG1peGlvdC5pbml0X01RVFRfY2xpZW50KCdtaXhpby5taXhseS5jbicsICJNaXhJT19wdWJsaWMiLCAiTWl4SU9fcHVibGljIiwgTVFUVF9VU1JfUFJKKQpvbmJvYXJkX21hdHJpeC5zaG93cygnTU8nLHNwYWNlID0gMCxjZW50ZXIgPSBUcnVlKQptcXR0X2NsaWVudC5zZXRfY2FsbGJhY2soJ+S6ruWxjycsbWV0aG9kLCBNUVRUX1VTUl9QUkopCm1xdHRfY2xpZW50LnN1YnNjcmliZShNUVRUX1VTUl9QUkogKyAn5Lqu5bGPJykKd2hpbGUgVHJ1ZToKICAgIG1xdHRfY2xpZW50LmNoZWNrX21zZygpCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="variables_set" id="Mld4.XlYwt`s3t5,X{[+" x="-2139" y="-747"><field name="VAR">本机用户</field><value name="VALUE"><block type="text" id="#T|,ZE_^@KtpE(u_Y$iD"><field name="TEXT">mixly</field></block></value><next><block type="iot_wifi_connect" id="W6p`!FnIX]o+t*s~J-~$"><value name="WIFINAME"><shadow type="text" id="$:PZJtlZG(m]nCh+z3s}"><field name="TEXT">fuhua3</field></shadow></value><value name="PASSWORD"><shadow type="text" id=".(5rA~Fuu(*Vf^5O2+s("><field name="TEXT">1234567890</field></shadow></value><next><block type="IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE" id="x{W$iQZTNHxC~.C,V/I("><value name="SERVER"><shadow type="text" id="5NPgRyLmAF1u0d`pQh+P"><field name="TEXT">mixio.mixly.cn</field></shadow></value><value name="KEY"><shadow type="factory_block_return" id="LzaqwO~aUdSXCj:WO1sR"><field name="VALUE">7b6443</field></shadow></value><next><block type="controls_whileUntil" id="jYHqd=N{DIOtOnDgg**A"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="K4!/l,1aM_ysrgG`idk,"><field name="BOOL">TRUE</field></shadow></value><statement name="DO"><block type="display_show_image_or_string_delay" id="B[_JdTS4HrI*QoG).hCN"><field name="center">True</field><value name="data"><shadow type="text" id="wJV9wc9=?@@[!0rbWk[("><field name="TEXT">GO</field></shadow></value><value name="space"><shadow type="math_number" id="=LaouSPYIkcI4-M9f3s*"><field name="NUM">0</field></shadow></value><next><block type="controls_if" id="m+3o)$/NiUE}NvTS#:19"><value name="IF0"><block type="sensor_mixgo_button_was_pressed" id="6-DzX~.JtflKhQQ{y1Nj"><value name="btn"><shadow type="pins_button" id="4WfLqOzy`}Cb]jvTQ/dW"><field name="PIN">B1key</field></shadow></value></block></value><statement name="DO0"><block type="display_clear" id="-[yb6Z!}/7c0|)6Om0c{"><next><block type="IOT_MIXIO_PUBLISH" id="`=3.mGUi{;Z2$c+J2Y/*"><value name="TOPIC"><shadow type="text" id="cafe1l#9M5OXJQFHra(P"><field name="TEXT">姓名</field></shadow></value><value name="MSG"><shadow type="text" id="!W9IdZJIcdYzs4/y__cH"><field name="TEXT">msg</field></shadow><block type="variables_get" id="7ynaI,un,jhUOOTtPsWS"><field name="VAR">本机用户</field></block></value><next><block type="display_scroll_string" id="sigs5(ykntw#+@cX.]S;"><value name="data"><shadow type="text" id="ol~n($,z~!gcYV*$lrb7"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id=")Ct4EcNqcbB)tvB3vZIx"><field name="VAR">本机用户</field></block></value><next><block type="display_show_image_or_string_delay" id="a$=ydnc*vlk(TWs=ozy]"><field name="center">True</field><value name="data"><shadow type="text" id="To8ZG#B2L?Yh1En(CP!/"><field name="TEXT">OK</field></shadow></value><value name="space"><shadow type="math_number" id=";aM^yg~LFMxiVD`XvH.x"><field name="NUM">0</field></shadow></value><next><block type="controls_delay_new" id="J}t!9^V2tESCS5j7|kCG"><field name="Time">s</field><value name="DELAY_TIME"><shadow type="math_number" id="O}O0Nu9pr!9/7zkaTMcM"><field name="NUM">1</field></shadow></value><next><block type="display_show_image_or_string_delay" id="M7u]SnLnPeKB.Hm=RFsJ"><field name="center">True</field><value name="data"><shadow type="text" id="^$+Ich[c/HsCr5`0nvx@"><field name="TEXT">GO</field></shadow></value><value name="space"><shadow type="math_number" id="oV=B05Peo:apP~xb`{Eo"><field name="NUM">0</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></statement></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1peGlvdAppbXBvcnQgbWFjaGluZQppbXBvcnQgdXJlcXVlc3RzCmZyb20gdWJpbmFzY2lpIGltcG9ydCBoZXhsaWZ5CmZyb20gbWl4cHkgaW1wb3J0IGFuYWx5c2Vfc2hhcmVrZXkKZnJvbSBtaXhnb19jYyBpbXBvcnQgb25ib2FyZF9tYXRyaXgKaW1wb3J0IG1peGdvX2NjCmltcG9ydCB0aW1lCgoKX0U2XzlDX0FDX0U2XzlDX0JBX0U3Xzk0X0E4X0U2Xzg4X0I3ID0gJ21peGx5JwptaXhpb3Qud2xhbl9jb25uZWN0KCdmdWh1YTMnLCcxMjM0NTY3ODkwJykKc2sgPSBhbmFseXNlX3NoYXJla2V5KCdodHRwOi8vbWl4aW8ubWl4bHkuY24vbWl4aW8tcGhwL3NoYXJla2V5LnBocD9zaz03YjY0NDMnKQpNUVRUX1VTUl9QUkogPSBza1swXSsnLycrc2tbMV0rJy8nCm1xdHRfY2xpZW50ID0gbWl4aW90LmluaXRfTVFUVF9jbGllbnQoJ21peGlvLm1peGx5LmNuJywgc2tbMF0sIHNrWzJdLCBNUVRUX1VTUl9QUkopCndoaWxlIFRydWU6CiAgICBvbmJvYXJkX21hdHJpeC5zaG93cygnR08nLHNwYWNlID0gMCxjZW50ZXIgPSBUcnVlKQogICAgaWYgbWl4Z29fY2MuQjFrZXkud2FzX3ByZXNzZWQoKToKICAgICAgICBvbmJvYXJkX21hdHJpeC5maWxsKDApCiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvdygpCiAgICAgICAgbXF0dF9jbGllbnQucHVibGlzaChNUVRUX1VTUl9QUkogKyAn5aeT5ZCNJywgX0U2XzlDX0FDX0U2XzlDX0JBX0U3Xzk0X0E4X0U2Xzg4X0I3KQogICAgICAgIG9uYm9hcmRfbWF0cml4LnNjcm9sbChfRTZfOUNfQUNfRTZfOUNfQkFfRTdfOTRfQThfRTZfODhfQjcpCiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvd3MoJ09LJyxzcGFjZSA9IDAsY2VudGVyID0gVHJ1ZSkKICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgb25ib2FyZF9tYXRyaXguc2hvd3MoJ0dPJyxzcGFjZSA9IDAsY2VudGVyID0gVHJ1ZSkK</code>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="system_print" id="Us_S,{V1}*EF^cZwYL6Y" x="-1455" y="-727"><value name="VAR"><shadow type="text" id="ncp0y*z1L~2gHC!O66xz"><field name="TEXT">Mixly</field></shadow><block type="storage_list_all_files" id=")fY25VX((m}~)?jmR,Pg"></block></value><next><block type="system_print" id="fxWXC4Tg=ZtZzm~pS:Qu"><value name="VAR"><shadow type="text" id="]}wD;kx}VhzGSiOq-:9X"><field name="TEXT">Mixly</field></shadow><block type="storage_get_current_dir" id="u*0xeD!#JN@qCQ[3k`Iw"></block></value><next><block type="variables_set" id="=j,orXhE5g3_E8[AXUsi"><field name="VAR">s</field><value name="VALUE"><block type="storage_list_all_files" id="pX3c#mE]}e}E~PnA7sG{"></block></value><next><block type="controls_forEach" id="$,0CLl+$;ZE.xm.e;gt6"><value name="LIST"><shadow type="list_many_input" id="bt5u}T*5l~`D/0m1Efvy"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="w$pW1$XlEjVCUV6519sd"><value name="FROM"><shadow type="math_number" id="oQcZm)0+VWNb8or$G)pY"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="9F!CtJF$Cg`XK+edC(}I"><field name="NUM">5</field></shadow><block type="list_trig" id="#kuA^*.M~`n=3?[F+sp*"><field name="OP">LEN</field><value name="data"><shadow type="variables_get" id="AsvERL*kQ!:1usKky+6O"><field name="VAR">s</field></shadow></value></block></value><value name="STEP"><shadow type="math_number" id="37BMDzh;dV3hr49g(PT]"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="_yMY$gto.tEPMzgr(LC["><field name="VAR">i</field></shadow></value><statement name="DO"><block type="system_print" id="xOhyX$#lv2sn?Q08=RiQ"><value name="VAR"><shadow type="text" id="SE_@b:+Zb1./Ie^RyZ3H"><field name="TEXT">Mixly</field></shadow><block type="lists_get_index" id="FmXGvWPiNde!D?YpHO|7"><value name="LIST"><shadow type="variables_get" id="3U;7jkfW9VYg$JY~0+sZ"><field name="VAR">s</field></shadow></value><value name="AT"><shadow type="math_number" id="ZeR9]sTWUkvS0IJqejkL"><field name="NUM">0</field></shadow><block type="variables_get" id="]27TWWSqO~~ap1_{f!dp"><field name="VAR">i</field></block></value></block></value></block></statement></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKaW1wb3J0IG9zCmltcG9ydCBtYXRoCgoKcHJpbnQob3MubGlzdGRpcigpKQpwcmludChvcy5nZXRjd2QoKSkKcyA9IG9zLmxpc3RkaXIoKQpmb3IgaSBpbiByYW5nZSgwLCBsZW4ocyksIDEpOgogICAgcHJpbnQoc1tpXSkK</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="system_print" id="N1X!SCF!cw*!_wIY-reA" x="-1372" y="-566"><value name="VAR"><shadow type="text" id="OO8M]`g@!,E5k`,iH=dS"><field name="TEXT">Mixly</field></shadow><block type="storage_list_all_files" id="!,!5^0.Dg#4iqe*P;p3?"></block></value><next><block type="system_print" id="Xz$Uw`~N2Rt=$[zhaq4Q"><value name="VAR"><shadow type="text" id="YF|b,{=hd^ouGG!IVy5$"><field name="TEXT">Mixly</field></shadow><block type="storage_get_current_dir" id="McbCY(`rbN;XXSNtoB8J"></block></value><next><block type="variables_set" id="ie)~yWk^@V(}_U|lwFS+"><field name="VAR">s</field><value name="VALUE"><block type="storage_list_all_files" id=":PNQ~1mwu/.8Rx$A9[;Q"></block></value><next><block type="controls_forEach" id="]KioL8!:sm~J$o,3ta[("><value name="LIST"><shadow type="list_many_input" id="l@dGIi(^]]:Tn7+K?H-U"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="X:oLcWQ{6(ty@YR0oj$y"><value name="FROM"><shadow type="math_number" id=";RFKjNz[BAgh7WSikSn1"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="!RsGUomCAYUz33z21Ce7"><field name="NUM">5</field></shadow><block type="list_trig" id="h*0.~VB_f5HL6+o!F{H$"><field name="OP">LEN</field><value name="data"><shadow type="variables_get" id="OWhGLo2N@a6Hx?j]qA?Q"><field name="VAR">s</field></shadow></value></block></value><value name="STEP"><shadow type="math_number" id="WsQZGl*@yT+[`hS!EKR1"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="}tGn/Bt/hZUs8ZS..A(0"><field name="VAR">i</field></shadow></value><statement name="DO"><block type="display_scroll_string" id="Gi]@Tm/e8OpyEYkKx=y!"><value name="data"><shadow type="text" id="1V3WXXz5/3opr}Y(*x=Z"><field name="TEXT">Mixly</field></shadow><block type="lists_get_index" id="m)jAkF-uI#2W`;4+^E8E"><value name="LIST"><shadow type="variables_get" id="4Xd__SN{Shb2c?!N(Fh/"><field name="VAR">s</field></shadow></value><value name="AT"><shadow type="math_number" id=":~!Xh)C}=I/p|1_g2Zv4"><field name="NUM">0</field></shadow><block type="variables_get" id="{`EYa:~fOIQ,EBRi:{5Z"><field name="VAR">i</field></block></value></block></value></block></statement></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKaW1wb3J0IG9zCmltcG9ydCBtYXRoCmZyb20gbWl4Z29fY2MgaW1wb3J0IG9uYm9hcmRfbWF0cml4CgoKcHJpbnQob3MubGlzdGRpcigpKQpwcmludChvcy5nZXRjd2QoKSkKcyA9IG9zLmxpc3RkaXIoKQpmb3IgaSBpbiByYW5nZSgwLCBsZW4ocyksIDEpOgogICAgb25ib2FyZF9tYXRyaXguc2Nyb2xsKHNbaV0pCg==</code>

View File

@@ -0,0 +1 @@
<xml version="Mixly 2.0 rc4" board="Python ESP32-C3@MixGo CC"><block type="storage_fileopen" id="f@[~VE1]Z`K$`9BlG@|9" x="-1749" y="-505"><field name="MODE">w</field><value name="FILENAME"><shadow type="text" id="_D3|E/`Sb]oP6HI_2Awf"><field name="TEXT">test.txt</field></shadow></value><value name="FILE"><shadow type="variables_get" id="vsb}PE6aW#@#!9Rgvs,k"><field name="VAR">f</field></shadow></value><next><block type="controls_forEach" id="#zF;:UwBJ|P!Yf;lQKU-"><value name="LIST"><shadow type="list_many_input" id="=hm9oV:st,?*D})Lr0IE"><field name="CONTENT">0,1,2,3</field></shadow><block type="controls_range" id="_Zt4;+d}EwEk}ik]nR0!"><value name="FROM"><shadow type="math_number" id="Roi-WRBKUm(_Y_JmF|u1"><field name="NUM">0</field></shadow></value><value name="TO"><shadow type="math_number" id="aP_C7r$[Y5NKJ(2v?(xV"><field name="NUM">100</field></shadow></value><value name="STEP"><shadow type="math_number" id="eq{3a$1$pJQe,QH(A?/Q"><field name="NUM">1</field></shadow></value></block></value><value name="VAR"><shadow type="variables_get" id="Zc5k6;Jn-Do)chNV0udL"><field name="VAR">i</field></shadow></value><statement name="DO"><block type="storage_file_write" id="xRb38C4Ce=~nM~;TV{ED"><value name="data"><shadow type="text" id="SUE2b*h,noizF;;U.:b."><field name="TEXT">Mixly</field></shadow><block type="number_to_text" id="QW^=8?nNcN)q~er26@#)"><value name="VAR"><shadow type="variables_get" id="Dxe2=VJYtH_96#Z-N*-#"><field name="VAR">x</field></shadow><block type="variables_get" id="2q$ksh?:l_88C)wAT)=K"><field name="VAR">i</field></block></value></block></value><value name="FILE"><shadow type="variables_get" id="D6$B${oURMR7?3j[ljlN"><field name="VAR">f</field></shadow></value><next><block type="storage_file_write" id="ppwWZr!k-1R2GRjmog?o"><value name="data"><shadow type="text" id="(Lqh@Z942=6@a8~3_Pd|"><field name="TEXT">Mixly</field></shadow><block type="ascii_to_char" id="HT^pNckHDB:2M`m,Arax"><value name="VAR"><shadow type="math_number" id="~o9Wfa!Bc9D(7O-W`Fr$"><field name="NUM">13</field></shadow></value></block></value><value name="FILE"><shadow type="variables_get" id="Rg-GRd]*aiS7)iJA|eL;"><field name="VAR">f</field></shadow></value></block></next></block></statement><next><block type="storage_close_file" id="Gus8|q9Q;,?f9f)|I|7!"><value name="FILE"><shadow type="variables_get" id="hHpp!+xCG~QG$,UGZ=SO"><field name="VAR">f</field></shadow></value><next><block type="storage_fileopen" id="L;=5=/|_VH/A_ppKdFPs"><field name="MODE">r</field><value name="FILENAME"><shadow type="text" id="GEoJX;oiOqtG}!u1F.*`"><field name="TEXT">test.txt</field></shadow></value><value name="FILE"><shadow type="variables_get" id="FnLAOo/X~hZ2ZYM:h$*1"><field name="VAR">f</field></shadow></value><next><block type="variables_set" id="VS,vD]TQV9h1pLx#m@$K"><field name="VAR">s</field><value name="VALUE"><block type="storage_get_contents_without_para" id="{2Q8hk6{mCNv]1EkCKor"><field name="MODE">readline</field><value name="FILE"><shadow type="variables_get" id="bn}8OQ5C,eCC=iyDuFZ!"><field name="VAR">f</field></shadow></value></block></value><next><block type="controls_whileUntil" id="zJfAl{-wP}FR]J`5.!;O"><field name="MODE">WHILE</field><value name="BOOL"><shadow type="logic_boolean" id="A!UT2NR6R;l*i|WMLZ,B"><field name="BOOL">TRUE</field></shadow><block type="variables_get" id="fx?xB5hl_~?ml9SlYf=y"><field name="VAR">s</field></block></value><statement name="DO"><block type="system_print_inline" id="U-FFw)JAeVQ{VJ}@tNY$"><value name="VAR"><shadow type="text" id="ceiPk:)P+L4urRU*x}i{"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="}@V5=nw?dB[$D[8f)i-)"><field name="VAR">s</field></block></value><next><block type="variables_set" id="A56:.X(zLx/-)Z8-jhcE"><field name="VAR">s</field><value name="VALUE"><block type="storage_get_contents_without_para" id="9e{XGYh@z@h/Ov;}!ID["><field name="MODE">readline</field><value name="FILE"><shadow type="variables_get" id="?ZJT93u;YCZ-D#Yr@vo6"><field name="VAR">f</field></shadow></value></block></value></block></next></block></statement><next><block type="storage_close_file" id="ZU#1KNQrQZIMlW+#~#;M"><value name="FILE"><shadow type="variables_get" id="1A.|r7rZ9.([*xc/jaAG"><field name="VAR">f</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></next></block></xml><config>{}</config><code>aW1wb3J0IG1hY2hpbmUKCgpmID0gb3BlbigndGVzdC50eHQnLCAndycpCmZvciBpIGluIHJhbmdlKDAsIDEwMCwgMSk6CiAgICBmLndyaXRlKHN0cihpKSkKICAgIGYud3JpdGUoY2hyKDEzKSkKZi5jbG9zZSgpCmYgPSBvcGVuKCd0ZXN0LnR4dCcsICdyJykKcyA9IGYucmVhZGxpbmUoKQp3aGlsZSBzOgogICAgcHJpbnQocyxlbmQgPSIiKQogICAgcyA9IGYucmVhZGxpbmUoKQpmLmNsb3NlKCkK</code>

File diff suppressed because one or more lines are too long

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