初始化提交

This commit is contained in:
王立帮
2024-07-19 10:16:00 +08:00
parent 4c7b571f20
commit 4a2d56dcc4
7084 changed files with 741212 additions and 63 deletions

View File

@@ -0,0 +1,284 @@
export const microbit_music_play_built_in = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_music'] = 'import music';
var dropdown_melody = block.getFieldValue('melody');
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
var code = 'music.play(music.' + dropdown_melody + ', pin=pin' + pin + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ')\n';
return code;
}
export const microbit_music_play_built_in_easy = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_music'] = 'import music';
var dropdown_melody = block.getFieldValue('melody');
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
var code = 'music.play(music.' + dropdown_melody + ', pin=pin' + pin + ')\n';
return code;
}
export const microbit_music_pitch_delay = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_music'] = 'import music';
generator.definitions_['import_math'] = 'import math';
var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);
var number_duration = generator.valueToCode(block, 'duration', generator.ORDER_ATOMIC);
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
var code = 'music.pitch(round(' + number_pitch + '), round(' + number_duration + '), pin' + pin + ', wait = ' + checkbox_wait + ')\n';
return code;
}
export const microbit_music_pitch = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_music'] = 'import music';
generator.definitions_['import_math'] = 'import math';
var number_pitch = generator.valueToCode(block, 'pitch', generator.ORDER_ATOMIC);
// var number_duration = generator.valueToCode(block, 'duration', generator.ORDER_ATOMIC);
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
var code = 'music.pitch(round(' + number_pitch + '), pin=pin' + pin + ')\n';
return code;
}
export const microbit_music_play_list_of_notes = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_music'] = 'import music';
var pin = generator.valueToCode(block, 'PIN', generator.ORDER_ATOMIC);
var value_notes = generator.valueToCode(block, 'notes', generator.ORDER_ATOMIC) || '[]';
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
var code = 'music.play(' + value_notes + ', pin=pin' + pin + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ')\n';
return code;
}
export const microbit_music_reset = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_music'] = 'import music';
var code = 'music.reset()\n';
return code;
}
export const microbit_music_stop = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_music'] = 'import music';
var pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'music.stop(pin' + pin + ')\n';
return code;
}
export const microbit_music_get_tempo = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_music'] = 'import music';
var code = 'music.get_tempo()';
return [code, generator.ORDER_ATOMIC];
}
export const tone_set_tempo = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var bpm = generator.valueToCode(this, 'BPM', generator.ORDER_ASSIGNMENT);
var ticks = generator.valueToCode(this, 'TICKS', generator.ORDER_ASSIGNMENT);
var code = "music.set_tempo(ticks=" + ticks + ", bpm=" + bpm + ")\n";
return code;
}
export const speech_translate = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_speech'] = 'import speech';
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var code = ["speech.translate(" + text + ")", generator.ORDER_ATOMIC];
return code
}
export const speech_say = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_speech'] = 'import speech';
var mode = this.getFieldValue("MODE");
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
var mouth = generator.valueToCode(this, 'mouth', generator.ORDER_ATOMIC);
var throat = generator.valueToCode(this, 'throat', generator.ORDER_ATOMIC);
var code = "speech." + mode + "(" + text + ", pitch=" + pitch + ", speed=" + speed + ", mouth=" + mouth + ", throat=" + throat + ")\n";
return code
}
// export const speech_sing = function(){
// generator.definitions_['import_microbit_*'] = 'from microbit import *';
// generator.definitions_['import_speech'] = 'import speech';
// var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
// var pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);
// var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
// var mouth = generator.valueToCode(this, 'mouth', generator.ORDER_ATOMIC);
// var throat = generator.valueToCode(this, 'throat', generator.ORDER_ATOMIC);
// var code = "speech.sing("+ text +", pitch="+pitch+", speed="+speed+", mouth="+mouth+", throat="+throat+")\n";
// return code
// }
// export const speech_prenounce = function(){
// generator.definitions_['import_microbit_*'] = 'from microbit import *';
// generator.definitions_['import_speech'] = 'import speech';
// var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
// var pitch = generator.valueToCode(this, 'pitch', generator.ORDER_ATOMIC);
// var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
// var mouth = generator.valueToCode(this, 'mouth', generator.ORDER_ATOMIC);
// var throat = generator.valueToCode(this, 'throat', generator.ORDER_ATOMIC);
// var code = "speech.pronounce("+ text +", pitch="+pitch+", speed="+speed+", mouth="+mouth+", throat="+throat+")\n";
// return code
// }
export const speech_say_easy = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_speech'] = 'import speech';
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var code = "speech.say(" + text + ")\n";
return code
}
export const speech_sing_easy = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_speech'] = 'import speech';
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var code = "speech.sing(" + text + ")\n";
return code
}
export const speech_pronounce_easy = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_speech'] = 'import speech';
var text = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var code = "speech.pronounce(" + text + ")\n";
return code
}
export const servo_move = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_Servolib'] = 'import Servo';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC);
if (!isNaN(parseInt(dropdown_pin)))
var code = 'Servo.angle(pin' + dropdown_pin + ', ' + value_degree + ')\n';
else
var code = 'Servo.angle(' + dropdown_pin + ', ' + value_degree + ')\n';
return code;
}
export const bit_motor_control = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_motor_control'] = 'import motor_control';
var Motor = this.getFieldValue('Motor');
var mode = this.getFieldValue('mode');
var speed = generator.valueToCode(this, 'speed', generator.ORDER_ATOMIC);
var code = 'motor_control.MotorRun(' + Motor + ', ' + mode + '' + speed + ')\n';
return code;
}
export const display_rgb_init = function (_, generator) {
var dropdown_rgbpin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var value_ledcount = generator.valueToCode(this, 'LEDCOUNT', generator.ORDER_ATOMIC);
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_neopixel'] = 'import neopixel';
// generator.definitions_['include_display'] = '#include "Mixly.h"';
generator.setups_['var_rgb_display' + dropdown_rgbpin] = 'np = neopixel.NeoPixel(pin' + dropdown_rgbpin + ', ' + value_ledcount + ')\n';
// generator.setups_['setup_rgb_display_begin_' + dropdown_rgbpin] = 'rgb_display_' + dropdown_rgbpin + '.begin();';
// generator.setups_['setup_rgb_display_setpin' + dropdown_rgbpin] = 'rgb_display_' + dropdown_rgbpin + '.setPin(' + dropdown_rgbpin + ');';
return '';
}
export const display_rgb = function (_, generator) {
var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);
var value_rvalue = generator.valueToCode(this, 'RVALUE', generator.ORDER_ATOMIC);
var value_gvalue = generator.valueToCode(this, 'GVALUE', generator.ORDER_ATOMIC);
var value_bvalue = generator.valueToCode(this, 'BVALUE', generator.ORDER_ATOMIC);
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_neopixel'] = 'import neopixel';
var code = 'np[' + value_led + '] = (' + value_rvalue + ', ' + value_gvalue + ', ' + value_bvalue + ')\n';
return code;
}
export const display_rgb2 = function (_, generator) {
var value_led = generator.valueToCode(this, '_LED_', generator.ORDER_ATOMIC);
var colour_rgb_led_color = this.getFieldValue('RGB_LED_COLOR');
var color = colour_rgb_led_color;
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_neopixel'] = 'import neopixel';
var code = 'np[' + value_led + '] = (' + color + ')\n';
code += 'np.show()\n';
return code;
}
export const display_rgb_show = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_neopixel'] = 'import neopixel';
var code = 'np.show()\n';
return code;
}
export const MP3_INIT = function (_, generator) {
var dropdown_pin1 = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);
var dropdown_pin2 = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);
if (!isNaN(parseInt(dropdown_pin1)))
dropdown_pin1 = "pin" + dropdown_pin1;
if (!isNaN(parseInt(dropdown_pin2)))
dropdown_pin2 = "pin" + dropdown_pin2;
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
var code = 'mp3' + ' = ' + 'QJ00X_MP3(mp3_rx=' + dropdown_pin1 + ', mp3_tx=' + dropdown_pin2 + ')\n';
return code;
}
// mp3 控制播放
export const MP3_CONTROL = function (_, generator) {
var CONTROL_TYPE = this.getFieldValue('CONTROL_TYPE');
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
var code = 'mp3' + '.' + CONTROL_TYPE + '()\n';
return code;
}
// mp3 循环模式
export const MP3_LOOP_MODE = function (_, generator) {
var LOOP_MODE = this.getFieldValue('LOOP_MODE');
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
var code = 'mp3' + '.set_loop(' + LOOP_MODE + ')\n';
return code;
}
// mp3 EQ模式
export const MP3_EQ_MODE = function (_, generator) {
var EQ_MODE = this.getFieldValue('EQ_MODE');
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
var code = 'mp3' + '.set_eq(' + EQ_MODE + ')\n';
return code;
}
// mp3 设置音量
export const MP3_VOL = function (_, generator) {
var vol = generator.valueToCode(this, 'vol', generator.ORDER_ATOMIC);
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
var code = 'mp3' + '.set_vol(' + vol + ')\n';
return code;
}
// mp3 播放第N首
export const MP3_PLAY_NUM = function (_, generator) {
var NUM = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
var code = 'mp3' + '.playFileByIndexNumber(' + NUM + ')\n';
return code;
}
export const MP3_PLAY_FOLDER = function (_, generator) {
var FOLDER = generator.valueToCode(this, 'FOLDER', generator.ORDER_ATOMIC);
var NUM = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC);
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_QJ00X_MP3'] = 'from MP3 import QJ00X_MP3';
var code = 'mp3' + '.set_folder(' + FOLDER + ', ' + NUM + ')\n';
return code;
}

View File

@@ -0,0 +1,108 @@
export const radio_ons = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_radio'] = 'import radio';
var type = this.getFieldValue('type');
var code = 'radio.' + type + '()\n';
return code;
}
export const microbit_radio_on = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_radio'] = 'import radio';
var code = 'radio.on()\n';
return code;
}
export const microbit_radio_off = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_radio'] = 'import radio';
var code = 'radio.off()\n';
return code;
}
export const microbit_radio_config = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_radio'] = 'import radio';
//var number_length = block.getFieldValue('length');
var number_length = generator.valueToCode(this, "length", generator.ORDER_ATOMIC);
var number_queue = generator.valueToCode(this, "queue", generator.ORDER_ATOMIC);
var number_channel = generator.valueToCode(this, "channel", generator.ORDER_ATOMIC);
var number_power = generator.valueToCode(this, "power", generator.ORDER_ATOMIC);
var number_address = generator.valueToCode(this, "address", generator.ORDER_ATOMIC);
var number_group = generator.valueToCode(this, "group", generator.ORDER_ATOMIC);
var dropdown_data_rate = generator.valueToCode(this, "data_rate", generator.ORDER_ATOMIC);
var code = 'radio.config(length=' + number_length + ', queue=' + number_queue + ', channel=' + number_channel + ', power=' + number_power + ', address=' + number_address + ', group=' + number_group + ', data_rate=radio.' + dropdown_data_rate + ')\n';
return code;
}
export const microbit_radio_reset = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_radio'] = 'import radio';
var code = 'radio.reset()\n';
return code;
}
export const radio_send_string = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_radio'] = 'import radio';
var type = this.getFieldValue('type');
var number = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
return "radio." + type + "(" + number + ")\n";
}
export const radio_receive_string = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_radio'] = 'import radio';
var type = this.getFieldValue('type');
var code = "radio." + type + "()";
return [code, generator.ORDER_ATOMIC];
}
export const microbit_radio_receive = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_radio'] = 'import radio';
var code = 'radio.receive()';
return [code, generator.ORDER_ATOMIC];
}
export const i2c_init = function (_, generator) {
var dropdown_pin1 = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);
var dropdown_pin2 = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);
var freq = generator.valueToCode(this, 'freq', generator.ORDER_ATOMIC);
if (!isNaN(parseInt(dropdown_pin1)))
dropdown_pin1 = "pin" + dropdown_pin1;
if (!isNaN(parseInt(dropdown_pin2)))
dropdown_pin2 = "pin" + dropdown_pin2;
return "i2c.init(sda=" + dropdown_pin1 + ", scl=" + dropdown_pin2 + ", freq=" + freq + ")\n";
}
export const i2c_read = function (_, generator) {
var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
var is_repeated = this.getFieldValue('is_repeated');
is_repeated = is_repeated.substring(0, 1).toUpperCase() + is_repeated.substring(1).toLowerCase();
return ["i2c.read(" + address + ", " + data + ", " + is_repeated + ")", generator.ORDER_ATOMIC];
}
export const i2c_write = function (_, generator) {
var address = generator.valueToCode(this, 'address', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
var is_repeated = this.getFieldValue('is_repeated');
is_repeated = is_repeated.substring(0, 1).toUpperCase() + is_repeated.substring(1).toLowerCase();
return "i2c.write(" + address + ", " + data + ", " + is_repeated + ")\n";
}
export const spi_init = function (block) {
var freq = block.getFieldValue('freq');
var bits = block.getFieldValue('bits');
var mode = block.getFieldValue('mode');
var mosi = block.getFieldValue('mosi');
var miso = block.getFieldValue('miso');
var sck = block.getFieldValue('sck');
return "spi.init(baudrate=" + freq + ", bits=" + bits + ", mode=" + mode + ", mosi=" + mosi + ", miso= " + miso + ", sclk=" + sck + ");\n";
}
export const spi_write = function (_, generator) {
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
return ["spi.write(" + data + ")", generator.ORDER_ATOMIC];
}

View File

@@ -0,0 +1,279 @@
export const microbit_display_clear = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var code = 'display.clear()\n';
return code;
}
export const monitor_get_pixel = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
var code = 'display.get_pixel(int(' + value_x + '), int(' + value_y + '))';
return [code, generator.ORDER_ATOMIC];
}
export const microbit_display_set_pixel = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
var value_value = generator.valueToCode(block, 'value', generator.ORDER_ATOMIC);
var code = 'display.set_pixel(int(' + value_x + '), int(' + value_y + '), ' + value_value + ')\n';
return code;
}
export const monitor_bright_point = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var brightness = generator.valueToCode(this, 'brightness', generator.ORDER_ASSIGNMENT);
var code = 'display.set_pixel(int(' + x + '), int(' + y + '), ' + brightness + ")\n";
return code;
}
export const monitor_show_image_or_string = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = "display.show(" + data + ")\n";
return code;
}
export const monitor_scroll_string = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = "display.scroll(" + data + ")\n";
return code;
}
export const monitor_scroll_string_with_delay = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var delay = generator.valueToCode(this, 'delay', generator.ORDER_ASSIGNMENT);
var code = "display.scroll(" + data + ", delay=" + delay + ")\n";
return code;
}
export const microbit_display_show_image = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var value_image = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = 'display.show(' + value_image + ')\n';
return code;
}
export const microbit_display_show_default_image = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var dropdown_image = block.getFieldValue('image');
var value_image = 'Image.' + dropdown_image;
var code = 'display.show(' + value_image + ')\n';
return code;
}
export const microbit_display_show_animation = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var value_images = generator.valueToCode(block, 'images', generator.ORDER_ATOMIC);
var number_delay = generator.valueToCode(block, 'delay', generator.ORDER_ATOMIC);
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
var checkbox_clear = block.getFieldValue('clear') == 'TRUE' ? 'True' : 'False';
var code = 'display.show(' + value_images + ', delay=' + number_delay + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ', clear=' + checkbox_clear + ')\n';
return code;
}
export const microbit_display_scroll = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var value_message = generator.valueToCode(block, 'message', generator.ORDER_ATOMIC);
var code = 'display.scroll(' + value_message + ')\n';
return code;
}
export const microbit_display_on = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var mode = block.getFieldValue('on_off');
var code = 'display.' + mode + '()\n';
return code;
}
// export const microbit_display_off = function(block) {
// generator.definitions_['import_microbit_*'] = 'from microbit import *';
// var code = 'display.off()\n';
// return code;
// }
export const microbit_display_is_on = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var code = 'display.is_on()';
return [code, generator.ORDER_ATOMIC];
}
export const microbit_image_builtins = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var dropdown_image = block.getFieldValue('image');
var code = 'Image.' + dropdown_image;
return [code, generator.ORDER_ATOMIC];
}
export const microbit_image_copy = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var value_image = generator.valueToCode(block, 'image', generator.ORDER_ATOMIC);
var code = value_image + '.copy()';
return [code, generator.ORDER_ATOMIC];
}
export const microbit_image_invert = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var value_image = generator.valueToCode(block, 'image', generator.ORDER_ATOMIC);
var code = value_image + '.invert()';
return [code, generator.ORDER_ATOMIC];
}
export const microbit_image_create = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var colours = {
"#000000": "0",
"#440000": "1",
"#660000": "2",
"#880000": "3",
"#aa0000": "4",
"#bb0000": "5",
"#cc0000": "6",
"#dd0000": "7",
"#ee0000": "8",
"#ff0000": "9"
}
var colour_00 = colours[block.getFieldValue('00')];
var colour_01 = colours[block.getFieldValue('01')];
var colour_02 = colours[block.getFieldValue('02')];
var colour_03 = colours[block.getFieldValue('03')];
var colour_04 = colours[block.getFieldValue('04')];
var colour_10 = colours[block.getFieldValue('10')];
var colour_11 = colours[block.getFieldValue('11')];
var colour_12 = colours[block.getFieldValue('12')];
var colour_13 = colours[block.getFieldValue('13')];
var colour_14 = colours[block.getFieldValue('14')];
var colour_20 = colours[block.getFieldValue('20')];
var colour_21 = colours[block.getFieldValue('21')];
var colour_22 = colours[block.getFieldValue('22')];
var colour_23 = colours[block.getFieldValue('23')];
var colour_24 = colours[block.getFieldValue('24')];
var colour_30 = colours[block.getFieldValue('30')];
var colour_31 = colours[block.getFieldValue('31')];
var colour_32 = colours[block.getFieldValue('32')];
var colour_33 = colours[block.getFieldValue('33')];
var colour_34 = colours[block.getFieldValue('34')];
var colour_40 = colours[block.getFieldValue('40')];
var colour_41 = colours[block.getFieldValue('41')];
var colour_42 = colours[block.getFieldValue('42')];
var colour_43 = colours[block.getFieldValue('43')];
var colour_44 = colours[block.getFieldValue('44')];
var code = 'Image("' + colour_00 + colour_01 + colour_02 + colour_03 + colour_04 + ':' + colour_10 + colour_11 + colour_12 + colour_13 + colour_14 + ':' + colour_20 + colour_21 + colour_22 + colour_23 + colour_24 + ':' + colour_30 + colour_31 + colour_32 + colour_33 + colour_34 + ':' + colour_40 + colour_41 + colour_42 + colour_43 + colour_44 + '")';
return [code, generator.ORDER_ATOMIC];
}
export const image_shift = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var op = block.getFieldValue("OP");
var image = generator.valueToCode(block, 'img', generator.ORDER_ATOMIC);
var value = generator.valueToCode(block, 'val', generator.ORDER_ATOMIC);
var code = image + '.shift_' + op + '(' + value + ')';
return [code, generator.ORDER_ATOMIC];
}
export const image_arithmetic = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var op = block.getFieldValue("OP");
var imga = generator.valueToCode(block, 'A', generator.ORDER_ATOMIC);
var imgb = generator.valueToCode(block, 'B', generator.ORDER_ATOMIC);
if (op == 'INTERSECTION') {
var code = imga + '-(' + imga + '-' + imgb + ')';
} else {
var code = imga + op + imgb;
}
return [code, generator.ORDER_ATOMIC];
}
export const microbit_display_scroll_string_animation = function (block, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var value_images = generator.valueToCode(block, 'images', generator.ORDER_ATOMIC) || 'hello';
var number_delay = generator.valueToCode(block, 'delay', generator.ORDER_ATOMIC);
var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
var checkbox_clear = block.getFieldValue('clear') == 'TRUE' ? 'True' : 'False';
var code = 'display.scroll' + '(' + value_images + ', delay=' + number_delay + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ', clear=' + checkbox_clear + ')\n';
return code;
}
// export const microbit_display_scroll_string = function(block) {
// generator.definitions_['import_microbit_*'] = 'from microbit import *';
// var value_images = generator.valueToCode(block, 'images', generator.ORDER_MEMBER) || 'hello';
// var number_delay = generator.valueToCode(block, 'delay', generator.ORDER_ATOMIC);
// var checkbox_wait = block.getFieldValue('wait') == 'TRUE' ? 'True' : 'False';
// var checkbox_loop = block.getFieldValue('loop') == 'TRUE' ? 'True' : 'False';
// var checkbox_clear = block.getFieldValue('clear') == 'TRUE' ? 'True' : 'False';
// var code = 'display.show(' + value_images + ', delay=' + number_delay + ', wait=' + checkbox_wait + ', loop=' + checkbox_loop + ', clear=' + checkbox_clear + ')\n';
// return code;
// }
export const group_lcd_print = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_lcd1602'] = 'import lcd1602';
var str1 = generator.valueToCode(this, 'TEXT', generator.ORDER_ASSIGNMENT);
var str2 = generator.valueToCode(this, 'TEXT2', generator.ORDER_ASSIGNMENT);
//generator.setups_['class_LCD1602'] = generator.CLASS_LCD1602_INIT;//python.js
var code = 'mylcd.mixly_puts_two_lines(' + str1 + ', ' + str2 + ')\n';
return code;
}
export const group_lcd_init = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_lcd1602'] = 'import lcd1602';
var device = generator.valueToCode(this, 'device', generator.ORDER_ASSIGNMENT) || '0x27';
//generator.setups_['class_LCD1602'] = generator.CLASS_LCD1602_INIT;//python.js
return 'mylcd = lcd1602.LCD1602(' + device + ')\n';
}
export const group_lcd_print2 = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_lcd1602'] = 'import lcd1602';
var str = generator.valueToCode(this, 'TEXT', generator.ORDER_ASSIGNMENT) || 'String("")';
var row = generator.valueToCode(this, 'row', generator.ORDER_ASSIGNMENT) || '1';
var column = generator.valueToCode(this, 'column', generator.ORDER_ASSIGNMENT) || '1';
//generator.setups_['class_LCD1602'] = generator.CLASS_LCD1602_INIT;//python.js
var code = 'mylcd.mixly_puts(' + str + ', ' + column + ', ' + row + ')\n'
return code;
}
export const group_lcd_power = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_lcd1602'] = 'import lcd1602';
var dropdown_stat = this.getFieldValue('STAT');
var code = 'mylcd.' + dropdown_stat + '\n';
return code;
}
export const lp2i_u8g_draw_4strings = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_oled'] = 'import oled';
var value_text_line1 = generator.valueToCode(this, 'Text_line1', generator.ORDER_ASSIGNMENT) || '\'\'';
var value_text_line2 = generator.valueToCode(this, 'Text_line2', generator.ORDER_ASSIGNMENT) || '\'\'';
var value_text_line3 = generator.valueToCode(this, 'Text_line3', generator.ORDER_ASSIGNMENT) || '\'\'';
var value_text_line4 = generator.valueToCode(this, 'Text_line4', generator.ORDER_ASSIGNMENT) || '\'\'';
//generator.setups_["class_OLED12864_I2C"] = generator.CLASS_OLED12864_I2C_INIT;
return 'mixly_oled_text(' + value_text_line1 + ', ' + value_text_line2 + ', ' + value_text_line3 + ', ' + value_text_line4 + ')\n';
}
export const display_image_size = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var data = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var size = this.getFieldValue('OP');
var code = ["Image." + size + "(" + data + ")", generator.ORDER_ATOMIC];
return code;
}
export const display_fill = function (_, generator) {
var varName = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_oled'] = 'import oled';
var key = this.getFieldValue('key');
var code = varName + '.show_fill(' + key + ')\n';
return code;
}

View File

@@ -0,0 +1,87 @@
export const factory_from_import = function (_, generator) {
var path = this.getFieldValue('path');
var module = this.getFieldValue('module');
generator.definitions_['import_' + path + '_' + module] = 'from ' + path + ' import ' + module;
return '';
}
export const factory_import = function (_, generator) {
var module = this.getFieldValue('module');
generator.definitions_['import_' + module] = 'import ' + module;
return '';
}
export const factory_function_noreturn = function (_, generator) {
var NAME = this.getFieldValue('NAME');
var code = new Array(this.itemCount_);
for (var n = 0; n < this.itemCount_; n++) {
code[n] = generator.valueToCode(this, 'ADD' + n,
generator.ORDER_NONE) || '';
}
return NAME + '(' + code.join(', ') + ')\n';
}
export const factory_function_return = function (_, generator) {
var NAME = this.getFieldValue('NAME');
var code = new Array(this.itemCount_);
for (var n = 0; n < this.itemCount_; n++) {
code[n] = generator.valueToCode(this, 'ADD' + n,
generator.ORDER_NONE) || '';
}
return [NAME + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC];
}
export const factory_declare = function (_, generator) {
var TYPE = this.getFieldValue('TYPE');
var NAME = this.getFieldValue('NAME');
generator.setups_['var_' + TYPE + '_' + NAME] = NAME + ' = ' + TYPE + '()\n';
return '';
}
export const factory_callMethod_noreturn = function (_, generator) {
var NAME = this.getFieldValue('NAME');
var METHOD = this.getFieldValue('METHOD');
var code = new Array(this.itemCount_);
for (var n = 0; n < this.itemCount_; n++) {
code[n] = generator.valueToCode(this, 'ADD' + n,
generator.ORDER_NONE) || '';
}
return NAME + '.' + METHOD + '(' + code.join(', ') + ')\n';
}
export const factory_callMethod_return = function (_, generator) {
var NAME = this.getFieldValue('NAME');
var METHOD = this.getFieldValue('METHOD');
var code = new Array(this.itemCount_);
for (var n = 0; n < this.itemCount_; n++) {
code[n] = generator.valueToCode(this, 'ADD' + n,
generator.ORDER_NONE) || '';
}
return [NAME + '.' + METHOD + '(' + code.join(', ') + ')', generator.ORDER_ATOMIC];
}
export const factory_block = function () {
var VALUE = this.getFieldValue('VALUE');
//if(!(VALUE.charAt(VALUE.length-1)==";")){
//VALUE=VALUE+';';
//}
return VALUE + '\n';
}
export const factory_block_return = function (_, generator) {
var VALUE = this.getFieldValue('VALUE');
return [VALUE, generator.ORDER_ATOMIC];
}
export const factory_block_with_textarea = function () {
var VALUE = this.getFieldValue('VALUE');
//if(!(VALUE.charAt(VALUE.length-1)==";")){
//VALUE=VALUE+';';
//}
return VALUE + '\n';
}
export const factory_block_return_with_textarea = function (_, generator) {
var VALUE = this.getFieldValue('VALUE');
return [VALUE, generator.ORDER_ATOMIC];
}

View File

@@ -0,0 +1,115 @@
import * as Blockly from 'blockly/core';
export const game_create_sprite = function (_, generator) {
var x = generator.valueToCode(this, 'x', generator.ORDER_ATOMIC);
var y = generator.valueToCode(this, 'y', generator.ORDER_ATOMIC);
var code = 'game.createSprite(' + x + ', ' + y + ')';
return [code, generator.ORDER_ATOMIC];
}
export const game_move_by = function (_, generator) {
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
var code = item + '.move(' + data + ');\n';
return code;
}
export const game_delete_var = function (_, generator) {
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
var code = item + '.delete();\n';
Blockly.isDefiniedItem = 1;
return code;
}
export const game_turn_by_direction = function (_, generator) {
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
var dir = this.getFieldValue('dir');
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
var code = item + '.turn(' + dir + ', ' + data + ');\n';
return code;
}
export const game_change_by = function (_, generator) {
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
var change_key = this.getFieldValue('change_key');
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
var code = item + '.change(' + change_key + ', ' + data + ');\n';
return code;
}
export const game_set_xy = function (_, generator) {
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
var change_key = this.getFieldValue('change_key');
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
var code = item + '.set(' + change_key + ', ' + data + ');\n';
return code;
}
export const game_get_xy = function (_, generator) {
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
var change_key = this.getFieldValue('change_key');
var code = item + '.get(' + change_key + ')';
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
return [code, generator.ORDER_ATOMIC];
}
export const game_touch_another = function (_, generator) {
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
var another = generator.valueToCode(this, 'another', generator.ORDER_ATOMIC) || 'null';
var code = item + '.isTouching(' + another + ')';
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
return [code, generator.ORDER_ATOMIC];
}
export const game_touch_edge = function (_, generator) {
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
var code = item + '.isTouchingEdge()';
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
return [code, generator.ORDER_ATOMIC];
}
export const game_on_edge_and_bounce = function (_, generator) {
var item = generator.valueToCode(this, 'var', generator.ORDER_ATOMIC);
var code = item + '.ifOnEdgeBounce();\n';
generator.definitions_['var_declare' + item] = 'let ' + item + ':game.LedSprite = null;';
return code;
}
export const game_change_score = function (_, generator) {
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
var code = 'game.addScore(' + data + ');\n';
return code;
}
export const game_set_score = function (_, generator) {
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
var code = 'game.setScore(' + data + ');\n';
return code;
}
export const game_start_countdown = function (_, generator) {
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
var code = 'game.startCountdown(' + data + ');\n';
return code;
}
export const game_get_score = function (_, generator) {
return ["game.score()", generator.ORDER_ATOMIC];
}
export const game_over = function () {
return "game.gameOver();\n";
}
export const game_resume = function () {
return "game.resume();\n";
}
export const game_pause = function () {
return "game.pause();\n";
}

View File

@@ -0,0 +1,65 @@
// 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_microbit_*'] = 'from microbit import *';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var dropdown_stat = generator.valueToCode(this, 'STAT', generator.ORDER_ATOMIC);
var code = "";
// code += 'pins.digitalWritePin(' + dropdown_pin + ',' + dropdown_stat + ')\n'
code += 'pin'+ dropdown_pin +'.write_digital('+ dropdown_stat +')\n'
return code;
}
// ok
export const inout_digital_read = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
var code = "";
code = 'pin' + dropdown_pin + '.read_digital()';
return [code, generator.ORDER_ATOMIC];
}
//ok
export const inout_analog_write = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
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 = 'pin' + dropdown_pin + '.write_analog(' + value_num + ')\n';
return code;
}
//ok
export const inout_analog_write_set = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
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 = 'pin' + 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_analog_read = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
//generator.setups_['setup_input_'+dropdown_pin] = 'pinMode('+dropdown_pin+', INPUT);';
var code = 'pin' + dropdown_pin + '.read_analog()';
return [code, generator.ORDER_ATOMIC];
}
// ok
export const sensor_pin_pressed = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var pin = generator.valueToCode(this, 'pin', generator.ORDER_ATOMIC);
var code = 'pin'+ pin + '.is_touched()';
return [code, generator.ORDER_ATOMIC];
}

View File

@@ -0,0 +1,17 @@
export const pins_digital = function (_, generator) {
var code = this.getFieldValue('PIN');
return [code, generator.ORDER_ATOMIC];
}
export const pins_analog = pins_digital;
export const pins_button = pins_digital;
export const pins_pwm = pins_digital;
export const pins_interrupt = pins_digital;
export const pins_serial = pins_digital;
export const pins_builtinimg = pins_digital;
export const pins_imglist = pins_digital;
export const pins_axis = pins_digital;
export const pins_brightness = pins_digital;
export const pins_tone_notes = pins_digital;
export const pins_radio_power = pins_digital;
export const pins_radio_datarate = pins_digital;

View File

@@ -0,0 +1,304 @@
export const sensor_button_is_pressed = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);
var code = btn + '.is_pressed()';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_button_was_pressed = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);
var code = btn + '.was_pressed()';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_button_get_presses = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var btn = generator.valueToCode(this, 'btn', generator.ORDER_ATOMIC);
var code = btn + '.get_presses()';
return [code, generator.ORDER_ATOMIC];
}
export const controls_GestureLists = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var gesture = this.getFieldValue('gesture');
// generator.definitions_['func_gesture' + gesture] = code;
return ['"' + gesture + '"', generator.ORDER_ATOMIC];
}
export const controls_attachGestureInterrupt = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var gesture = this.getFieldValue('gesture');
var branch = generator.statementToCode(this, 'DO');
var d = branch || generator.PASS;
var code = 'if accelerometer.is_gesture("' + gesture + '"):\n' + d;
// generator.definitions_['func_gesture' + gesture] = code;
return code;
}
export const sensor_current_gesture1 = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var gesture = this.getFieldValue('gesture');
var code = 'accelerometer.is_gesture("' + gesture + '")';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_current_gesture2 = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var gesture = this.getFieldValue('gesture');
var code = 'accelerometer.was_gesture("' + gesture + '")';
return [code, generator.ORDER_ATOMIC];
}
export const controls_attachGestureInterrupt2 = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var gesture = this.getFieldValue('gesture');
var branch = generator.statementToCode(this, 'DO');
var d = branch || generator.PASS;
var code = 'if accelerometer.was_gesture("' + gesture + '"):\n' + d;
// generator.definitions_['func_gesture' + gesture] = code;
return code;
}
export const sensor_get_gestures = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var gesture = this.getFieldValue('GES');
var a;
if (gesture == 'all') {
a = 'accelerometer.get_gestures()';
}
else if (gesture == 'current') {
a = 'accelerometer.current_gesture()';
}
return [a, generator.ORDER_ATOMIC];
}
export const sensor_current_gesture = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
return ['accelerometer.current_gesture()', generator.ORDER_ATOMIC];
}
export const sensor_get_acceleration = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var key = this.getFieldValue('key')
var code = 'accelerometer.get_' + key + '()';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_set_acceleration = function () {
var key = this.getFieldValue('key')
var code = 'input.setAccelerometerRange(' + key + ')\n';
return code;
}
// undefined?!?!?!?!
export const sensor_light_level = function (_, generator) {
return ['input.lightLevel()', generator.ORDER_ATOMIC];
}
export const sensor_calibrate_compass = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
return 'compass.calibrate()\n';
}
export const sensor_is_compass_calibrated = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
return ['compass.is_calibrated()', generator.ORDER_ATOMIC];
}
export const sensor_compass_heading = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
return ['compass.heading()', generator.ORDER_ATOMIC];
}
export const sensor_temperature = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
return ['temperature()', generator.ORDER_ATOMIC];
}
export const sensor_field_strength = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var compass = this.getFieldValue('compass');
var code = 'compass.' + compass + '()'
return [code, generator.ORDER_ATOMIC];
}
export const sensor_rotation = function (_, generator) {
var key = this.getFieldValue('key')
var code = 'input.rotation(' + key + ')';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_magnetic = function (_, generator) {
var key = this.getFieldValue('key')
var code = 'input.magneticForce(' + key + ')';
return [code, generator.ORDER_ATOMIC];
}
export const sensor_distance_hrsc04 = function (_, generator) {
var Trig = this.getFieldValue('Trig');
var Echo = this.getFieldValue('Echo');
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_ultrasonic'] = 'import ultrasonic';
return ['ultrasonic.distance_cm(t_pin=pin' + Trig + ', e_pin=pin' + Echo + ')', generator.ORDER_ATOMIC];
}
export const sensor_distance_hrsc04_ = function (_, generator) {
var Trig = this.getFieldValue('Trig');
var Echo = this.getFieldValue('Echo');
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.setups_['class_hrsc04_'] =
'class HCSR04:\n' +
' def __init__(self, tpin=pin' + Trig + ', epin=pin' + Echo + ', spin=pin13):\n' +
' self.trigger_pin = tpin\n' +
' self.echo_pin = epin\n' +
' self.sclk_pin = spin\n' +
'\n' +
' def distance_mm(self):\n' +
' spi.init(baudrate=125000, sclk=self.sclk_pin,\n' +
' mosi=self.trigger_pin, miso=self.echo_pin)\n' +
' pre = 0\n' +
' post = 0\n' +
' k = -1\n' +
' length = 500\n' +
' resp = bytearray(length)\n' +
' resp[0] = 0xFF\n' +
' spi.write_readinto(resp, resp)\n' +
' # find first non zero value\n' +
' try:\n' +
' i, value = next((ind, v) for ind, v in enumerate(resp) if v)\n' +
' except StopIteration:\n' +
' i = -1\n' +
' if i > 0:\n' +
' pre = bin(value).count("1")\n' +
' # find first non full high value afterwards\n' +
' try:\n' +
' k, value = next((ind, v)\n' +
' for ind, v in enumerate(resp[i:length - 2]) if resp[i + ind + 1] == 0)\n' +
' post = bin(value).count("1") if k else 0\n' +
' k = k + i\n' +
' except StopIteration:\n' +
' i = -1\n' +
' dist= -1 if i < 0 else round((pre + (k - i) * 8. + post) * 8 * 0.172)\n' +
' return dist\n' +
'\n' +
' def distance_cm(self):\n' +
' return self.distance_mm() / 10.0\n' +
'\n' +
'sonar=HCSR04()\n' +
'\n'
return ['sonar.distance_cm()', generator.ORDER_ATOMIC];
}
export const DS1307_init = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_RTC'] = 'from RTC import *';
//var RTCName = this.getFieldValue('RTCName');
//generator.definitions_['include_Mixly'] = '#include "Mixly.h"';
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
//generator.definitions_['DS1307'+RTCName] = 'DS1307 ' + RTCName + '('+SDA+','+SCL+');';
//return 'DS1307' + '('+SDA+','+SCL+')\n';
}
export const RTC_get_time = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_RTC'] = 'from RTC import *';
//var RTCName = this.getFieldValue('RTCName');
var timeType = this.getFieldValue('TIME_TYPE');
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
switch (timeType) {
//
case "Year":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Month":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Day":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Hour":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Minute":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Second":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Week":
var code = 'ds.' + timeType + '()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix1":
var code = 'ds.get_date()';
return [code, generator.ORDER_ASSIGNMENT];
case "Mix2":
var code = 'ds.get_time()';
return [code, generator.ORDER_ASSIGNMENT];
}
}
export const RTC_set_time = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_RTC'] = 'from RTC import *';
//var RTCName = this.getFieldValue('RTCName');
var hour = generator.valueToCode(this, "hour", generator.ORDER_ASSIGNMENT);
var minute = generator.valueToCode(this, "minute", generator.ORDER_ASSIGNMENT);
var second = generator.valueToCode(this, "second", generator.ORDER_ASSIGNMENT);
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
var code = 'ds.set_time(' + hour + ', ' + minute + ', ' + second + ')\n';
return code;
}
export const RTC_set_date = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_RTC'] = 'from RTC import *';
//var RTCName = this.getFieldValue('RTCName');
var year = generator.valueToCode(this, "year", generator.ORDER_ASSIGNMENT);
var month = generator.valueToCode(this, "month", generator.ORDER_ASSIGNMENT);
var day = generator.valueToCode(this, "day", generator.ORDER_ASSIGNMENT);
//generator.setups_['class_DS1307'] = generator.CLASS_DS1307_INIT;
var code = 'ds.set_date(' + year + ', ' + month + ', ' + day + ')\n';
return code;
}
export const sensor_compass_reset = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
return 'compass.clear_calibration()\n';
}
export const sensor_light = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
return ['display.read_light_level()', generator.ORDER_ATOMIC];
}
export const sensor_hrsc04_init = function (_, generator) {
var Trig = this.getFieldValue('Trig');
var Echo = this.getFieldValue('Echo');
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_ultrasonic'] = 'from ultrasonic import *';
return "sonar = HCSR04(tpin=pin" + Trig + ", epin=pin" + Echo + ")\n"
}
export const TCS34725_Get_RGB = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_TCS'] = 'from TCS import *';
var RGB = this.getFieldValue('TCS34725_COLOR');
return ["tcs.getRawRGBData(" + RGB + ")", generator.ORDER_ATOMIC];
}
export const NTC_TEMP = function (_, generator) {
var PIN = this.getFieldValue('PIN');
var NominalResistance = generator.valueToCode(this, 'NominalResistance', generator.ORDER_ATOMIC);
var betaCoefficient = generator.valueToCode(this, 'betaCoefficient', generator.ORDER_ATOMIC);
var seriesResistor = generator.valueToCode(this, 'seriesResistor', generator.ORDER_ATOMIC);
generator.definitions_['import_microbit_*'] = 'from microbit import *';
generator.definitions_['import_ntc'] = 'import ntc';
var code = 'ntc.read(pin' + PIN + ', ' + NominalResistance + ', ' + betaCoefficient + ', ' + seriesResistor + ')';
return [code, generator.ORDER_ATOMIC];
}

View File

@@ -0,0 +1,91 @@
export const serial_print = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '""'
var code = "uart.write(str(" + content + "))\n";
return code;
}
export const serial_println = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '""'
var code = "uart.write(str(" + content + ")+'\\r\\n')\n";
return code;
}
export const serial_print_hex = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var content = generator.valueToCode(this, 'CONTENT', generator.ORDER_ATOMIC) || '0';
var code = "uart.write(str(hex(" + content + ")) + '\\r\\n')\n";
return code;
}
export const serial_receive_data_event = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var char_marker = generator.valueToCode(this, 'char_marker', generator.ORDER_ATOMIC) || ';';
var branch = generator.statementToCode(this, 'DO');
generator.definitions_['func_serial_receive_data_event_' + char_marker.charCodeAt(1)] = "serial.onDataReceived(" + char_marker + ", () => {\n" + branch + "}\n";
}
export const serial_any = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var code = "uart.any()";
return [code, generator.ORDER_ATOMIC];
}
export const serial_readstr = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var code = "uart.read()";
return [code, generator.ORDER_ATOMIC];
}
export const serial_readline = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var code = "uart.readline()";
return [code, generator.ORDER_ATOMIC];
}
export const serial_readstr_until = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var char_marker = this.getFieldValue('char_marker');
var code = "serial.readUntil(" + char_marker + ")";
return [code, generator.ORDER_ATOMIC];
}
export const serial_softserial = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var dropdown_pin1 = generator.valueToCode(this, 'RX', generator.ORDER_ATOMIC);
var dropdown_pin2 = generator.valueToCode(this, 'TX', generator.ORDER_ATOMIC);
if (!isNaN(parseInt(dropdown_pin1)))
dropdown_pin1 = "pin" + dropdown_pin1;
if (!isNaN(parseInt(dropdown_pin2)))
dropdown_pin2 = "pin" + dropdown_pin2;
var baudrate = this.getFieldValue('baudrate');
return "uart.init(rx=" + dropdown_pin1 + ", tx=" + dropdown_pin2 + ", baudrate=" + baudrate + ")\n";
}
export const serial_begin = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var baudrate = this.getFieldValue('baudrate');
return "uart.init(baudrate=" + baudrate + ")\n";
}
export const IO_input = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
return ['input(' + str + ')', generator.ORDER_ATOMIC];
}
export const IO_print = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
var code = "print(" + str + ")\n";
return code;
}
export const IO_print_inline = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var str = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC) || '""';
var code = "print(" + str + ',end ="")\n';
return code;
}

View File

@@ -0,0 +1,91 @@
import { Profile } from 'mixly';
export const system_run_in_background = function (_, generator) {
var branch = generator.statementToCode(this, 'do');
return 'control.inBackground(() => {\n' + branch + '})\n';
}
export const system_reset = function () {
return 'control.reset()\n';
}
export const system_wait = function (_, generator) {
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC) || Profile.default.serial;
return 'control.waitMicros(' + data + ')\n';
}
export const system_raise_event = function (_, generator) {
var source = generator.valueToCode(this, 'system_event_bus_source', generator.ORDER_ATOMIC) || Profile.default.serial;
var value = generator.valueToCode(this, 'system_event_bus_value', generator.ORDER_ATOMIC) || Profile.default.serial;
return 'control.raiseEvent(' + source + ', ' + value + ')\n';
}
export const system_on_event = function (_, generator) {
var source = generator.valueToCode(this, 'system_event_bus_source', generator.ORDER_ATOMIC) || Profile.default.serial;
var value = generator.valueToCode(this, 'system_event_bus_value', generator.ORDER_ATOMIC) || Profile.default.serial;
var branch = generator.statementToCode(this, 'do');
return 'control.onEvent(' + source + ', ' + value + ', () => {\n' + branch + ')\n';
}
export const system_timestamp = function (_, generator) {
return ['control.eventTimestamp()', generator.ORDER_ATOMIC];
}
export const system_value = function (_, generator) {
return ['control.eventValue()', generator.ORDER_ATOMIC];
}
export const system_event_bus_source = function (_, generator) {
return [this.getFieldValue('key'), generator.ORDER_ATOMIC];
}
export const system_event_bus_value = function (_, generator) {
return [this.getFieldValue('key'), generator.ORDER_ATOMIC];
}
export const system_device_name = function (_, generator) {
return ['control.deviceName()', generator.ORDER_ATOMIC];
}
export const system_device_serial_number = function (_, generator) {
return ['control.deviceSerialNumber()', generator.ORDER_ATOMIC];
}
// ok
export const base_delay = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '1000'
var code = 'sleep(' + delay_time + ')\n';
return code;
}
// ok
export const Panic_with_status_code = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var status_code = generator.valueToCode(this, 'STATUS_CODE', generator.ORDER_ATOMIC) || '1000'
var code = 'panic(' + status_code + ')\n';
return code;
}
// ok
export const controls_millis = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
var code = 'running_time()';
return [code, generator.ORDER_ATOMIC];
}
// ok
export const controls_end_program = function () {
return 'while True:\n pass\n';
}
// ok
export const reset = function (_, generator) {
generator.definitions_['import_microbit_*'] = 'from microbit import *';
return 'reset()\n';
}
export const controls_uname = function (_, generator) {
generator.definitions_['import_os'] = 'import os';
return ['os.uname()', generator.ORDER_ATOMIC];
}